@firfi/huly-mcp 0.41.0 → 0.42.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.
Files changed (3) hide show
  1. package/README.md +8 -1
  2. package/dist/index.cjs +781 -594
  3. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -34996,15 +34996,15 @@ var require_storage = __commonJS({
34996
34996
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
34997
34997
  var storage_exports = {};
34998
34998
  __export2(storage_exports, {
34999
- SortingOrder: () => SortingOrder68,
34999
+ SortingOrder: () => SortingOrder69,
35000
35000
  shouldShowArchived: () => shouldShowArchived
35001
35001
  });
35002
35002
  module2.exports = __toCommonJS2(storage_exports);
35003
- var SortingOrder68 = /* @__PURE__ */ ((SortingOrder210) => {
35003
+ var SortingOrder69 = /* @__PURE__ */ ((SortingOrder210) => {
35004
35004
  SortingOrder210[SortingOrder210["Ascending"] = 1] = "Ascending";
35005
35005
  SortingOrder210[SortingOrder210["Descending"] = -1] = "Descending";
35006
35006
  return SortingOrder210;
35007
- })(SortingOrder68 || {});
35007
+ })(SortingOrder69 || {});
35008
35008
  function shouldShowArchived(query, options) {
35009
35009
  if (options?.showArchived !== void 0) {
35010
35010
  return options.showArchived;
@@ -35507,7 +35507,7 @@ var require_client3 = __commonJS({
35507
35507
  getClient: () => getClient
35508
35508
  });
35509
35509
  module2.exports = __toCommonJS2(client_exports);
35510
- var import_core102 = require_lib5();
35510
+ var import_core103 = require_lib5();
35511
35511
  var import_platform4 = __toESM2(require_lib());
35512
35512
  var import_utils14 = require_utils3();
35513
35513
  function getClient(accountsUrl, token, retryTimeoutMs) {
@@ -35543,7 +35543,7 @@ var require_client3 = __commonJS({
35543
35543
  rpc;
35544
35544
  async getProviders() {
35545
35545
  return await withRetryUntilMaxAttempts(async () => {
35546
- const response = await fetch((0, import_core102.concatLink)(this.url, "/providers"));
35546
+ const response = await fetch((0, import_core103.concatLink)(this.url, "/providers"));
35547
35547
  return await response.json();
35548
35548
  })();
35549
35549
  }
@@ -36198,7 +36198,7 @@ var require_client3 = __commonJS({
36198
36198
  await this.rpc(request2);
36199
36199
  }
36200
36200
  async setCookie() {
36201
- const url4 = (0, import_core102.concatLink)(this.url, "/cookie");
36201
+ const url4 = (0, import_core103.concatLink)(this.url, "/cookie");
36202
36202
  const response = await fetch(url4, { ...this.request, method: "PUT" });
36203
36203
  if (!response.ok) {
36204
36204
  const result = await response.json();
@@ -36208,7 +36208,7 @@ var require_client3 = __commonJS({
36208
36208
  }
36209
36209
  }
36210
36210
  async deleteCookie() {
36211
- const url4 = (0, import_core102.concatLink)(this.url, "/cookie");
36211
+ const url4 = (0, import_core103.concatLink)(this.url, "/cookie");
36212
36212
  const response = await fetch(url4, { ...this.request, method: "DELETE" });
36213
36213
  if (!response.ok) {
36214
36214
  const result = await response.json();
@@ -36487,9 +36487,9 @@ var require_config = __commonJS({
36487
36487
  loadServerConfig: () => loadServerConfig2
36488
36488
  });
36489
36489
  module2.exports = __toCommonJS2(config_exports3);
36490
- var import_core102 = require_lib5();
36490
+ var import_core103 = require_lib5();
36491
36491
  async function loadServerConfig2(url4) {
36492
- const configUrl = (0, import_core102.concatLink)(url4, "/config.json");
36492
+ const configUrl = (0, import_core103.concatLink)(url4, "/config.json");
36493
36493
  const res = await fetch(configUrl, { keepalive: true });
36494
36494
  if (res.ok) {
36495
36495
  return await res.json();
@@ -36575,7 +36575,7 @@ var require_client4 = __commonJS({
36575
36575
  getClient: () => getClient
36576
36576
  });
36577
36577
  module2.exports = __toCommonJS2(client_exports);
36578
- var import_core102 = require_lib5();
36578
+ var import_core103 = require_lib5();
36579
36579
  var import_utils14 = require_utils4();
36580
36580
  function getClient(workspaceId, token, collaboratorUrl) {
36581
36581
  const url4 = collaboratorUrl.replaceAll("wss://", "https://").replace("ws://", "http://");
@@ -36594,7 +36594,7 @@ var require_client4 = __commonJS({
36594
36594
  async rpc(document2, method, payload) {
36595
36595
  const workspace2 = this.workspace;
36596
36596
  const documentId = (0, import_utils14.encodeDocumentId)(workspace2, document2);
36597
- const url4 = (0, import_core102.concatLink)(this.collaboratorUrl, `/rpc/${encodeURIComponent(documentId)}`);
36597
+ const url4 = (0, import_core103.concatLink)(this.collaboratorUrl, `/rpc/${encodeURIComponent(documentId)}`);
36598
36598
  const res = await fetch(url4, {
36599
36599
  method: "POST",
36600
36600
  headers: {
@@ -54161,9 +54161,9 @@ var require_image = __commonJS({
54161
54161
  ImageNode: () => ImageNode
54162
54162
  });
54163
54163
  module2.exports = __toCommonJS2(image_exports);
54164
- var import_core102 = require_dist16();
54164
+ var import_core103 = require_dist16();
54165
54165
  var import_utils14 = require_utils5();
54166
- var ImageNode = import_core102.Node.create({
54166
+ var ImageNode = import_core103.Node.create({
54167
54167
  name: "image",
54168
54168
  addOptions() {
54169
54169
  return {
@@ -54222,7 +54222,7 @@ var require_image = __commonJS({
54222
54222
  "data-type": this.name,
54223
54223
  "data-align": node.attrs.align
54224
54224
  };
54225
- const imgAttributes = (0, import_core102.mergeAttributes)(
54225
+ const imgAttributes = (0, import_core103.mergeAttributes)(
54226
54226
  {
54227
54227
  "data-type": this.name
54228
54228
  },
@@ -54266,9 +54266,9 @@ var require_reference = __commonJS({
54266
54266
  ReferenceNode: () => ReferenceNode
54267
54267
  });
54268
54268
  module2.exports = __toCommonJS2(reference_exports);
54269
- var import_core102 = require_dist16();
54269
+ var import_core103 = require_dist16();
54270
54270
  var import_utils14 = require_utils5();
54271
- var ReferenceNode = import_core102.Node.create({
54271
+ var ReferenceNode = import_core103.Node.create({
54272
54272
  name: "reference",
54273
54273
  group: "inline",
54274
54274
  inline: true,
@@ -54303,7 +54303,7 @@ var require_reference = __commonJS({
54303
54303
  renderHTML({ node, HTMLAttributes }) {
54304
54304
  return [
54305
54305
  "span",
54306
- (0, import_core102.mergeAttributes)(
54306
+ (0, import_core103.mergeAttributes)(
54307
54307
  {
54308
54308
  "data-type": this.name,
54309
54309
  "data-id": node.attrs.id,
@@ -54362,8 +54362,8 @@ var require_emoji = __commonJS({
54362
54362
  EmojiNode: () => EmojiNode
54363
54363
  });
54364
54364
  module2.exports = __toCommonJS2(emoji_exports);
54365
- var import_core102 = require_dist16();
54366
- var EmojiNode = import_core102.Node.create({
54365
+ var import_core103 = require_dist16();
54366
+ var EmojiNode = import_core103.Node.create({
54367
54367
  name: "emoji",
54368
54368
  group: "inline",
54369
54369
  inline: true,
@@ -54403,7 +54403,7 @@ var require_emoji = __commonJS({
54403
54403
  addNodeView() {
54404
54404
  return ({ node, HTMLAttributes }) => {
54405
54405
  const container = document.createElement("span");
54406
- const containerAttributes = (0, import_core102.mergeAttributes)(
54406
+ const containerAttributes = (0, import_core103.mergeAttributes)(
54407
54407
  {
54408
54408
  "data-type": this.name,
54409
54409
  class: "emoji"
@@ -54436,7 +54436,7 @@ var require_emoji = __commonJS({
54436
54436
  if (node.attrs.kind === "image") {
54437
54437
  return [
54438
54438
  "span",
54439
- (0, import_core102.mergeAttributes)(
54439
+ (0, import_core103.mergeAttributes)(
54440
54440
  {
54441
54441
  "data-type": this.name,
54442
54442
  class: "emoji"
@@ -54445,7 +54445,7 @@ var require_emoji = __commonJS({
54445
54445
  ),
54446
54446
  [
54447
54447
  "img",
54448
- (0, import_core102.mergeAttributes)({
54448
+ (0, import_core103.mergeAttributes)({
54449
54449
  "data-type": this.name,
54450
54450
  src: node.attrs.image,
54451
54451
  alt: node.attrs.emoji
@@ -54455,7 +54455,7 @@ var require_emoji = __commonJS({
54455
54455
  }
54456
54456
  return [
54457
54457
  "span",
54458
- (0, import_core102.mergeAttributes)(
54458
+ (0, import_core103.mergeAttributes)(
54459
54459
  {
54460
54460
  "data-type": this.name,
54461
54461
  class: "emoji"
@@ -54763,8 +54763,8 @@ var require_file = __commonJS({
54763
54763
  FileNode: () => FileNode
54764
54764
  });
54765
54765
  module2.exports = __toCommonJS2(file_exports);
54766
- var import_core102 = require_dist16();
54767
- var FileNode = import_core102.Node.create({
54766
+ var import_core103 = require_dist16();
54767
+ var FileNode = import_core103.Node.create({
54768
54768
  name: "file",
54769
54769
  addOptions() {
54770
54770
  return {
@@ -55074,7 +55074,7 @@ var require_codeblock = __commonJS({
55074
55074
  tildeInputRegex: () => tildeInputRegex
55075
55075
  });
55076
55076
  module2.exports = __toCommonJS2(codeblock_exports);
55077
- var import_core102 = require_dist16();
55077
+ var import_core103 = require_dist16();
55078
55078
  var import_extension_code_block = __toESM2(require_dist19());
55079
55079
  var codeBlockOptions = {
55080
55080
  defaultLanguage: "plaintext",
@@ -55120,11 +55120,11 @@ var require_codeblock = __commonJS({
55120
55120
  },
55121
55121
  addInputRules() {
55122
55122
  return [
55123
- (0, import_core102.textblockTypeInputRule)({
55123
+ (0, import_core103.textblockTypeInputRule)({
55124
55124
  find: backtickInputRegex,
55125
55125
  type: this.type
55126
55126
  }),
55127
- (0, import_core102.textblockTypeInputRule)({
55127
+ (0, import_core103.textblockTypeInputRule)({
55128
55128
  find: tildeInputRegex,
55129
55129
  type: this.type
55130
55130
  })
@@ -55160,8 +55160,8 @@ var require_comment = __commonJS({
55160
55160
  CommentNode: () => CommentNode
55161
55161
  });
55162
55162
  module2.exports = __toCommonJS2(comment_exports);
55163
- var import_core102 = require_dist16();
55164
- var CommentNode = import_core102.Node.create({
55163
+ var import_core103 = require_dist16();
55164
+ var CommentNode = import_core103.Node.create({
55165
55165
  name: "comment",
55166
55166
  group: "inline",
55167
55167
  inline: true,
@@ -55207,8 +55207,8 @@ var require_markdown = __commonJS({
55207
55207
  MarkdownNode: () => MarkdownNode
55208
55208
  });
55209
55209
  module2.exports = __toCommonJS2(markdown_exports);
55210
- var import_core102 = require_dist16();
55211
- var MarkdownNode = import_core102.Node.create({
55210
+ var import_core103 = require_dist16();
55211
+ var MarkdownNode = import_core103.Node.create({
55212
55212
  name: "markdown",
55213
55213
  group: "block",
55214
55214
  content: "text*",
@@ -55226,7 +55226,7 @@ var require_markdown = __commonJS({
55226
55226
  renderHTML({ node, HTMLAttributes }) {
55227
55227
  return [
55228
55228
  "pre",
55229
- (0, import_core102.mergeAttributes)({ "data-type": this.name }, this.options.HTMLAttributes, HTMLAttributes),
55229
+ (0, import_core103.mergeAttributes)({ "data-type": this.name }, this.options.HTMLAttributes, HTMLAttributes),
55230
55230
  ["code", {}, 0]
55231
55231
  ];
55232
55232
  }
@@ -55260,8 +55260,8 @@ var require_embed = __commonJS({
55260
55260
  EmbedNode: () => EmbedNode
55261
55261
  });
55262
55262
  module2.exports = __toCommonJS2(embed_exports);
55263
- var import_core102 = require_dist16();
55264
- var EmbedNode = import_core102.Node.create({
55263
+ var import_core103 = require_dist16();
55264
+ var EmbedNode = import_core103.Node.create({
55265
55265
  name: "embed",
55266
55266
  addOptions() {
55267
55267
  return {};
@@ -55286,7 +55286,7 @@ var require_embed = __commonJS({
55286
55286
  ];
55287
55287
  },
55288
55288
  renderHTML({ HTMLAttributes }) {
55289
- return ["figure", { "data-type": this.name }, ["iframe", (0, import_core102.mergeAttributes)(HTMLAttributes)]];
55289
+ return ["figure", { "data-type": this.name }, ["iframe", (0, import_core103.mergeAttributes)(HTMLAttributes)]];
55290
55290
  }
55291
55291
  });
55292
55292
  }
@@ -55360,7 +55360,7 @@ var require_noteBase = __commonJS({
55360
55360
  name: () => name
55361
55361
  });
55362
55362
  module2.exports = __toCommonJS2(noteBase_exports);
55363
- var import_core102 = require_dist16();
55363
+ var import_core103 = require_dist16();
55364
55364
  var import_nodes = require_nodes();
55365
55365
  var name = "note";
55366
55366
  var NoteKind = /* @__PURE__ */ ((NoteKind2) => {
@@ -55375,7 +55375,7 @@ var require_noteBase = __commonJS({
55375
55375
  NoteKind2["PrimaryLight"] = "primary-light";
55376
55376
  return NoteKind2;
55377
55377
  })(NoteKind || {});
55378
- var NoteBaseExtension = import_core102.Mark.create({
55378
+ var NoteBaseExtension = import_core103.Mark.create({
55379
55379
  name,
55380
55380
  parseHTML() {
55381
55381
  return [
@@ -55432,9 +55432,9 @@ var require_qmsInlineCommentMark = __commonJS({
55432
55432
  QMSInlineCommentMark: () => QMSInlineCommentMark
55433
55433
  });
55434
55434
  module2.exports = __toCommonJS2(qmsInlineCommentMark_exports);
55435
- var import_core102 = require_dist16();
55435
+ var import_core103 = require_dist16();
55436
55436
  var NAME2 = "node-uuid";
55437
- var QMSInlineCommentMark = import_core102.Mark.create({
55437
+ var QMSInlineCommentMark = import_core103.Mark.create({
55438
55438
  name: NAME2,
55439
55439
  inline: true,
55440
55440
  parseHTML() {
@@ -55479,9 +55479,9 @@ var require_kit = __commonJS({
55479
55479
  mergeKitOptions: () => mergeKitOptions
55480
55480
  });
55481
55481
  module2.exports = __toCommonJS2(kit_exports);
55482
- var import_core102 = require_dist16();
55482
+ var import_core103 = require_dist16();
55483
55483
  function extensionKit(name, fn2) {
55484
- return import_core102.Extension.create({
55484
+ return import_core103.Extension.create({
55485
55485
  name,
55486
55486
  addExtensions() {
55487
55487
  const e = /* @__PURE__ */ __name((extension, options) => {
@@ -62510,9 +62510,9 @@ var require_colors = __commonJS({
62510
62510
  TextColor: () => TextColor
62511
62511
  });
62512
62512
  module2.exports = __toCommonJS2(colors_exports);
62513
- var import_core102 = require_dist16();
62513
+ var import_core103 = require_dist16();
62514
62514
  var import_extension_text_style = require_dist20();
62515
- var BackgroundColor = import_core102.Extension.create({
62515
+ var BackgroundColor = import_core103.Extension.create({
62516
62516
  name: "backgroundColor",
62517
62517
  addOptions() {
62518
62518
  return {
@@ -62553,7 +62553,7 @@ var require_colors = __commonJS({
62553
62553
  };
62554
62554
  }
62555
62555
  });
62556
- var TextColor = import_core102.Extension.create({
62556
+ var TextColor = import_core103.Extension.create({
62557
62557
  name: "textColor",
62558
62558
  addOptions() {
62559
62559
  return {
@@ -62625,10 +62625,10 @@ var require_inlineComment = __commonJS({
62625
62625
  InlineCommentPasteFixPlugin: () => InlineCommentPasteFixPlugin
62626
62626
  });
62627
62627
  module2.exports = __toCommonJS2(inlineComment_exports);
62628
- var import_core102 = require_dist16();
62628
+ var import_core103 = require_dist16();
62629
62629
  var import_model = require_dist10();
62630
62630
  var import_state = require_dist5();
62631
- var InlineCommentMark = import_core102.Mark.create({
62631
+ var InlineCommentMark = import_core103.Mark.create({
62632
62632
  name: "inline-comment",
62633
62633
  excludes: "",
62634
62634
  inclusive: false,
@@ -78152,7 +78152,7 @@ var require_client5 = __commonJS({
78152
78152
  createMarkupOperations: () => createMarkupOperations
78153
78153
  });
78154
78154
  module2.exports = __toCommonJS2(client_exports);
78155
- var import_core102 = require_lib5();
78155
+ var import_core103 = require_lib5();
78156
78156
  var import_collaborator_client2 = require_lib8();
78157
78157
  var import_text5 = require_lib10();
78158
78158
  var import_text_markdown3 = require_lib18();
@@ -78166,8 +78166,8 @@ var require_client5 = __commonJS({
78166
78166
  this.workspace = workspace2;
78167
78167
  this.token = token;
78168
78168
  this.config = config3;
78169
- this.refUrl = (0, import_core102.concatLink)(this.url, `/browse?workspace=${workspace2}`);
78170
- this.imageUrl = (0, import_core102.concatLink)(this.url, `/files?workspace=${workspace2}&file=`);
78169
+ this.refUrl = (0, import_core103.concatLink)(this.url, `/browse?workspace=${workspace2}`);
78170
+ this.imageUrl = (0, import_core103.concatLink)(this.url, `/files?workspace=${workspace2}&file=`);
78171
78171
  this.collaborator = (0, import_collaborator_client2.getClient)(workspace2, token, config3.COLLABORATOR_URL);
78172
78172
  }
78173
78173
  static {
@@ -78177,7 +78177,7 @@ var require_client5 = __commonJS({
78177
78177
  imageUrl;
78178
78178
  refUrl;
78179
78179
  async fetchMarkup(objectClass, objectId, objectAttr, doc, format7) {
78180
- const collabId = (0, import_core102.makeCollabId)(objectClass, objectId, objectAttr);
78180
+ const collabId = (0, import_core103.makeCollabId)(objectClass, objectId, objectAttr);
78181
78181
  const markup = await this.collaborator.getMarkup(collabId, doc);
78182
78182
  const json3 = (0, import_text5.markupToJSON)(markup);
78183
78183
  switch (format7) {
@@ -78206,7 +78206,7 @@ var require_client5 = __commonJS({
78206
78206
  default:
78207
78207
  throw new Error("Unknown content format");
78208
78208
  }
78209
- const collabId = (0, import_core102.makeCollabId)(objectClass, objectId, objectAttr);
78209
+ const collabId = (0, import_core103.makeCollabId)(objectClass, objectId, objectAttr);
78210
78210
  return await this.collaborator.createMarkup(collabId, markup);
78211
78211
  }
78212
78212
  };
@@ -82690,8 +82690,8 @@ var require_connection2 = __commonJS({
82690
82690
  });
82691
82691
  module2.exports = __toCommonJS2(connection_exports);
82692
82692
  var import_analytics = require_lib3();
82693
- var import_client85 = __toESM2(require_lib7());
82694
- var import_core102 = __toESM2(require_lib5());
82693
+ var import_client86 = __toESM2(require_lib7());
82694
+ var import_core103 = __toESM2(require_lib5());
82695
82695
  var import_platform4 = __toESM2(require_lib());
82696
82696
  var import_rpc = require_lib19();
82697
82697
  var import_snappyjs = require_snappyjs();
@@ -82735,7 +82735,7 @@ var require_connection2 = __commonJS({
82735
82735
  const sKey = "session.id." + this.url;
82736
82736
  let sessionId = sessionStorage.getItem(sKey) ?? void 0;
82737
82737
  if (sessionId === void 0) {
82738
- sessionId = (0, import_core102.generateId)();
82738
+ sessionId = (0, import_core103.generateId)();
82739
82739
  console.log("Generate new SessionId", sessionId);
82740
82740
  this.sessionId = sessionId;
82741
82741
  } else {
@@ -82746,7 +82746,7 @@ var require_connection2 = __commonJS({
82746
82746
  sessionStorage.setItem(sKey, sessionId);
82747
82747
  });
82748
82748
  } else {
82749
- this.sessionId = (0, import_core102.generateId)();
82749
+ this.sessionId = (0, import_core103.generateId)();
82750
82750
  }
82751
82751
  this.rpcHandler = opt?.useGlobalRPCHandler === true ? globalRPCHandler : new import_rpc.RPCHandler();
82752
82752
  this.pushHandler(handler);
@@ -82801,7 +82801,7 @@ var require_connection2 = __commonJS({
82801
82801
  }
82802
82802
  if (!this.closed) {
82803
82803
  void this.sendRequest({
82804
- method: import_client85.pingConst,
82804
+ method: import_client86.pingConst,
82805
82805
  params: [],
82806
82806
  once: true,
82807
82807
  handleResult: /* @__PURE__ */ __name(async (result) => {
@@ -82834,7 +82834,7 @@ var require_connection2 = __commonJS({
82834
82834
  }
82835
82835
  }
82836
82836
  isConnected() {
82837
- return this.websocket != null && this.websocket.readyState === import_client85.ClientSocketReadyState.OPEN && this.helloReceived;
82837
+ return this.websocket != null && this.websocket.readyState === import_client86.ClientSocketReadyState.OPEN && this.helloReceived;
82838
82838
  }
82839
82839
  delay = 0;
82840
82840
  onConnectHandlers = [];
@@ -82926,7 +82926,7 @@ var require_connection2 = __commonJS({
82926
82926
  if (resp.id === -1) {
82927
82927
  this.delay = 0;
82928
82928
  if (resp.result?.state === "upgrading") {
82929
- void this.onConnect?.(import_core102.ClientConnectEvent.Maintenance, void 0, resp.result.stats);
82929
+ void this.onConnect?.(import_core103.ClientConnectEvent.Maintenance, void 0, resp.result.stats);
82930
82930
  this.upgrading = true;
82931
82931
  this.delay = 3;
82932
82932
  return;
@@ -82961,7 +82961,7 @@ var require_connection2 = __commonJS({
82961
82961
  v.reconnect?.();
82962
82962
  }
82963
82963
  void this.onConnect?.(
82964
- helloResp.reconnect === true ? import_core102.ClientConnectEvent.Reconnected : import_core102.ClientConnectEvent.Connected,
82964
+ helloResp.reconnect === true ? import_core103.ClientConnectEvent.Reconnected : import_core103.ClientConnectEvent.Connected,
82965
82965
  helloResp.lastTx,
82966
82966
  this.sessionId
82967
82967
  )?.catch((err) => {
@@ -82974,8 +82974,8 @@ var require_connection2 = __commonJS({
82974
82974
  }
82975
82975
  return;
82976
82976
  }
82977
- if (resp.result === import_client85.pingConst) {
82978
- void this.sendRequest({ method: import_client85.pingConst, params: [] }).catch((err) => {
82977
+ if (resp.result === import_client86.pingConst) {
82978
+ void this.sendRequest({ method: import_client86.pingConst, params: [] }).catch((err) => {
82979
82979
  this.ctx.error("failed to send ping", { err });
82980
82980
  });
82981
82981
  return;
@@ -83011,7 +83011,7 @@ var require_connection2 = __commonJS({
83011
83011
  }
83012
83012
  result = result.concat(c.data);
83013
83013
  }
83014
- resp.result = (0, import_core102.toFindResult)(result, total, lookupMap);
83014
+ resp.result = (0, import_core103.toFindResult)(result, total, lookupMap);
83015
83015
  resp.chunk = void 0;
83016
83016
  } else {
83017
83017
  return;
@@ -83055,7 +83055,7 @@ var require_connection2 = __commonJS({
83055
83055
  } else {
83056
83056
  const txArr = Array.isArray(resp.result) ? resp.result : [resp.result];
83057
83057
  for (const tx of txArr) {
83058
- if (tx?._class === import_core102.default.class.TxModelUpgrade) {
83058
+ if (tx?._class === import_core103.default.class.TxModelUpgrade) {
83059
83059
  console.log("Processing upgrade", this.workspace, this.user);
83060
83060
  this.opt?.onUpgrade?.();
83061
83061
  return;
@@ -83067,15 +83067,15 @@ var require_connection2 = __commonJS({
83067
83067
  }
83068
83068
  }
83069
83069
  checkArrayBufferPing(data) {
83070
- if (data.byteLength === import_client85.pingConst.length || data.byteLength === import_client85.pongConst.length) {
83070
+ if (data.byteLength === import_client86.pingConst.length || data.byteLength === import_client86.pongConst.length) {
83071
83071
  const text = new TextDecoder().decode(data);
83072
- if (text === import_client85.pingConst) {
83073
- void this.sendRequest({ method: import_client85.pingConst, params: [] }).catch((err) => {
83072
+ if (text === import_client86.pingConst) {
83073
+ void this.sendRequest({ method: import_client86.pingConst, params: [] }).catch((err) => {
83074
83074
  this.ctx.error("failed to send ping", { err });
83075
83075
  });
83076
83076
  return true;
83077
83077
  }
83078
- if (text === import_client85.pongConst) {
83078
+ if (text === import_client86.pongConst) {
83079
83079
  this.pingResponse = Date.now();
83080
83080
  return true;
83081
83081
  }
@@ -83085,7 +83085,7 @@ var require_connection2 = __commonJS({
83085
83085
  openConnection(ctx, socketId) {
83086
83086
  this.binaryMode = false;
83087
83087
  this.helloReceived = false;
83088
- const clientSocketFactory = this.opt?.socketFactory ?? (0, import_platform4.getMetadata)(import_client85.default.metadata.ClientSocketFactory) ?? ((url4) => {
83088
+ const clientSocketFactory = this.opt?.socketFactory ?? (0, import_platform4.getMetadata)(import_client86.default.metadata.ClientSocketFactory) ?? ((url4) => {
83089
83089
  const s = new WebSocket(url4);
83090
83090
  return s;
83091
83091
  });
@@ -83120,12 +83120,12 @@ var require_connection2 = __commonJS({
83120
83120
  if (this.websocket !== wsocket) {
83121
83121
  return;
83122
83122
  }
83123
- if (event.data === import_client85.pongConst) {
83123
+ if (event.data === import_client86.pongConst) {
83124
83124
  this.pingResponse = Date.now();
83125
83125
  return;
83126
83126
  }
83127
- if (event.data === import_client85.pingConst) {
83128
- void this.sendRequest({ method: import_client85.pingConst, params: [] }).catch((err) => {
83127
+ if (event.data === import_client86.pingConst) {
83128
+ void this.sendRequest({ method: import_client86.pingConst, params: [] }).catch((err) => {
83129
83129
  this.ctx.error("failed to send ping", { err });
83130
83130
  });
83131
83131
  return;
@@ -83190,8 +83190,8 @@ var require_connection2 = __commonJS({
83190
83190
  if (this.websocket !== wsocket) {
83191
83191
  return;
83192
83192
  }
83193
- const useBinary = this.opt?.useBinaryProtocol ?? (0, import_platform4.getMetadata)(import_client85.default.metadata.UseBinaryProtocol) ?? true;
83194
- this.compressionMode = this.opt?.useProtocolCompression ?? (0, import_platform4.getMetadata)(import_client85.default.metadata.UseProtocolCompression) ?? false;
83193
+ const useBinary = this.opt?.useBinaryProtocol ?? (0, import_platform4.getMetadata)(import_client86.default.metadata.UseBinaryProtocol) ?? true;
83194
+ this.compressionMode = this.opt?.useProtocolCompression ?? (0, import_platform4.getMetadata)(import_client86.default.metadata.UseProtocolCompression) ?? false;
83195
83195
  const helloRequest = {
83196
83196
  method: "hello",
83197
83197
  params: [],
@@ -83237,13 +83237,13 @@ var require_connection2 = __commonJS({
83237
83237
  if (w instanceof Promise) {
83238
83238
  await w;
83239
83239
  }
83240
- if (data.method !== import_client85.pingConst) {
83240
+ if (data.method !== import_client86.pingConst) {
83241
83241
  this.requests.set(id, promise4);
83242
83242
  }
83243
83243
  promise4.sendData = () => {
83244
- if (this.websocket?.readyState === import_client85.ClientSocketReadyState.OPEN) {
83244
+ if (this.websocket?.readyState === import_client86.ClientSocketReadyState.OPEN) {
83245
83245
  promise4.startTime = Date.now();
83246
- if (data.method !== import_client85.pingConst) {
83246
+ if (data.method !== import_client86.pingConst) {
83247
83247
  const dta = this.rpcHandler.serialize(
83248
83248
  {
83249
83249
  method: data.method,
@@ -83256,7 +83256,7 @@ var require_connection2 = __commonJS({
83256
83256
  );
83257
83257
  this.websocket?.send(dta);
83258
83258
  } else {
83259
- this.websocket?.send(import_client85.pingConst);
83259
+ this.websocket?.send(import_client86.pingConst);
83260
83260
  }
83261
83261
  }
83262
83262
  };
@@ -83270,7 +83270,7 @@ var require_connection2 = __commonJS({
83270
83270
  };
83271
83271
  }
83272
83272
  promise4.sendData();
83273
- if (data.method !== import_client85.pingConst) {
83273
+ if (data.method !== import_client86.pingConst) {
83274
83274
  return await promise4.promise;
83275
83275
  }
83276
83276
  },
@@ -83285,7 +83285,7 @@ var require_connection2 = __commonJS({
83285
83285
  }
83286
83286
  getAccount() {
83287
83287
  if (this.account !== void 0) {
83288
- return Promise.resolve((0, import_core102.clone)(this.account));
83288
+ return Promise.resolve((0, import_core103.clone)(this.account));
83289
83289
  }
83290
83290
  return this.sendRequest({ method: "getAccount", params: [] });
83291
83291
  }
@@ -83343,10 +83343,10 @@ var require_connection2 = __commonJS({
83343
83343
  method: "tx",
83344
83344
  params: [tx],
83345
83345
  retry: /* @__PURE__ */ __name(async () => {
83346
- if (tx._class === import_core102.default.class.TxApplyIf) {
83347
- return (await this.findAll(import_core102.default.class.Tx, { _id: tx.txes[0]._id }, { limit: 1 })).length === 0;
83346
+ if (tx._class === import_core103.default.class.TxApplyIf) {
83347
+ return (await this.findAll(import_core103.default.class.Tx, { _id: tx.txes[0]._id }, { limit: 1 })).length === 0;
83348
83348
  }
83349
- return (await this.findAll(import_core102.default.class.Tx, { _id: tx._id }, { limit: 1 })).length === 0;
83349
+ return (await this.findAll(import_core103.default.class.Tx, { _id: tx._id }, { limit: 1 })).length === 0;
83350
83350
  }, "retry")
83351
83351
  });
83352
83352
  }
@@ -83386,7 +83386,7 @@ var require_connection2 = __commonJS({
83386
83386
  };
83387
83387
  function connect(url4, handler, workspace2, user, opt) {
83388
83388
  return new Connection(
83389
- opt?.ctx?.newChild?.("connection", {}) ?? new import_core102.MeasureMetricsContext("connection", {}),
83389
+ opt?.ctx?.newChild?.("connection", {}) ?? new import_core103.MeasureMetricsContext("connection", {}),
83390
83390
  url4,
83391
83391
  handler,
83392
83392
  workspace2,
@@ -83436,14 +83436,14 @@ var require_lib20 = __commonJS({
83436
83436
  default: () => index_default
83437
83437
  });
83438
83438
  module2.exports = __toCommonJS2(index_exports2);
83439
- var import_client85 = __toESM2(require_lib7());
83440
- var import_core102 = __toESM2(require_lib5());
83439
+ var import_client86 = __toESM2(require_lib7());
83440
+ var import_core103 = __toESM2(require_lib5());
83441
83441
  var import_platform4 = __toESM2(require_lib());
83442
83442
  var import_connection = require_connection2();
83443
83443
  var dbRequest;
83444
83444
  var dbPromise = Promise.resolve(void 0);
83445
83445
  if (typeof localStorage !== "undefined") {
83446
- const st = (0, import_core102.platformNow)();
83446
+ const st = (0, import_core103.platformNow)();
83447
83447
  dbPromise = new Promise((resolve2) => {
83448
83448
  dbRequest = indexedDB.open("model.db.persistence", 2);
83449
83449
  dbRequest.onupgradeneeded = function() {
@@ -83454,7 +83454,7 @@ var require_lib20 = __commonJS({
83454
83454
  };
83455
83455
  dbRequest.onsuccess = function() {
83456
83456
  const db = dbRequest.result;
83457
- console.log("init DB complete", (0, import_core102.platformNow)() - st);
83457
+ console.log("init DB complete", (0, import_core103.platformNow)() - st);
83458
83458
  resolve2(db);
83459
83459
  };
83460
83460
  });
@@ -83480,19 +83480,19 @@ var require_lib20 = __commonJS({
83480
83480
  return {
83481
83481
  function: {
83482
83482
  GetClient: /* @__PURE__ */ __name(async (token, endpoint, opt) => {
83483
- const filterModel = (0, import_platform4.getMetadata)(import_client85.default.metadata.FilterModel) ?? "none";
83484
- const extraFilter = (0, import_platform4.getMetadata)(import_client85.default.metadata.ExtraFilter) ?? [];
83483
+ const filterModel = (0, import_platform4.getMetadata)(import_client86.default.metadata.FilterModel) ?? "none";
83484
+ const extraFilter = (0, import_platform4.getMetadata)(import_client86.default.metadata.ExtraFilter) ?? [];
83485
83485
  const handler = /* @__PURE__ */ __name(async (handler2) => {
83486
- const url4 = (0, import_core102.concatLink)(endpoint, `/${token}`);
83486
+ const url4 = (0, import_core103.concatLink)(endpoint, `/${token}`);
83487
83487
  const upgradeHandler = /* @__PURE__ */ __name((...txes) => {
83488
83488
  for (const tx of txes) {
83489
- if (tx?._class === import_core102.default.class.TxModelUpgrade) {
83489
+ if (tx?._class === import_core103.default.class.TxModelUpgrade) {
83490
83490
  opt?.onUpgrade?.();
83491
83491
  return;
83492
83492
  }
83493
- if (tx?._class === import_core102.default.class.TxWorkspaceEvent) {
83493
+ if (tx?._class === import_core103.default.class.TxWorkspaceEvent) {
83494
83494
  const event = tx;
83495
- if (event.event === import_core102.WorkspaceEvent.MaintenanceNotification) {
83495
+ if (event.event === import_core103.WorkspaceEvent.MaintenanceNotification) {
83496
83496
  void (0, import_platform4.setPlatformStatus)(
83497
83497
  new import_platform4.Status(import_platform4.Severity.WARNING, import_platform4.default.status.MaintenanceWarning, {
83498
83498
  time: event.params.timeMinutes,
@@ -83509,7 +83509,7 @@ var require_lib20 = __commonJS({
83509
83509
  throw new Error("Workspace or account not found in token");
83510
83510
  }
83511
83511
  const newOpt = { ...opt };
83512
- const connectTimeout = opt?.connectionTimeout ?? (0, import_platform4.getMetadata)(import_client85.default.metadata.ConnectionTimeout);
83512
+ const connectTimeout = opt?.connectionTimeout ?? (0, import_platform4.getMetadata)(import_client86.default.metadata.ConnectionTimeout);
83513
83513
  let connectPromise;
83514
83514
  if ((connectTimeout ?? 0) > 0) {
83515
83515
  connectPromise = new Promise((resolve2, reject) => {
@@ -83530,7 +83530,7 @@ var require_lib20 = __commonJS({
83530
83530
  reject(error2);
83531
83531
  return;
83532
83532
  }
83533
- if (event !== import_core102.ClientConnectEvent.Maintenance) {
83533
+ if (event !== import_core103.ClientConnectEvent.Maintenance) {
83534
83534
  clearTimeout(connectTO);
83535
83535
  resolve2();
83536
83536
  }
@@ -83552,7 +83552,7 @@ var require_lib20 = __commonJS({
83552
83552
  }
83553
83553
  return txes;
83554
83554
  }, "modelFilter");
83555
- const client = (0, import_core102.createClient)(handler, modelFilter, createModelPersistence(getWSFromToken(token)), opt?.ctx);
83555
+ const client = (0, import_core103.createClient)(handler, modelFilter, createModelPersistence(getWSFromToken(token)), opt?.ctx);
83556
83556
  return await client;
83557
83557
  }, "GetClient")
83558
83558
  }
@@ -83560,17 +83560,17 @@ var require_lib20 = __commonJS({
83560
83560
  }, "default");
83561
83561
  function returnUITxes(txes, extraFilter) {
83562
83562
  const configs = /* @__PURE__ */ new Map();
83563
- (0, import_core102.fillConfiguration)(txes, configs);
83564
- const allowedPlugins = [...(0, import_platform4.getPlugins)(), ...(0, import_platform4.getMetadata)(import_client85.default.metadata.ExtraPlugins) ?? []];
83563
+ (0, import_core103.fillConfiguration)(txes, configs);
83564
+ const allowedPlugins = [...(0, import_platform4.getPlugins)(), ...(0, import_platform4.getMetadata)(import_client86.default.metadata.ExtraPlugins) ?? []];
83565
83565
  const excludedPlugins = Array.from(configs.values()).filter(
83566
83566
  (it) => !it.enabled || !allowedPlugins.includes(it.pluginId) || extraFilter.includes(it.pluginId)
83567
83567
  );
83568
- return (0, import_core102.pluginFilterTx)(excludedPlugins, configs, txes);
83568
+ return (0, import_core103.pluginFilterTx)(excludedPlugins, configs, txes);
83569
83569
  }
83570
83570
  __name(returnUITxes, "returnUITxes");
83571
83571
  function returnClientTxes(txes) {
83572
83572
  const configs = /* @__PURE__ */ new Map();
83573
- (0, import_core102.fillConfiguration)(txes, configs);
83573
+ (0, import_core103.fillConfiguration)(txes, configs);
83574
83574
  const excludedPlugins = Array.from(configs.values()).filter((it) => !it.enabled || it.pluginId.startsWith("server-"));
83575
83575
  const toExclude = /* @__PURE__ */ new Set([
83576
83576
  "workbench:class:Application",
@@ -83596,8 +83596,8 @@ var require_lib20 = __commonJS({
83596
83596
  "setting:class:WorkspaceSettingCategory",
83597
83597
  "notification:class:NotificationProvider"
83598
83598
  ]);
83599
- const result = (0, import_core102.pluginFilterTx)(excludedPlugins, configs, txes).filter((tx) => {
83600
- if (tx?._class === import_core102.default.class.TxCreateDoc || tx?._class === import_core102.default.class.TxUpdateDoc || tx?._class === import_core102.default.class.TxRemoveDoc) {
83599
+ const result = (0, import_core103.pluginFilterTx)(excludedPlugins, configs, txes).filter((tx) => {
83600
+ if (tx?._class === import_core103.default.class.TxCreateDoc || tx?._class === import_core103.default.class.TxUpdateDoc || tx?._class === import_core103.default.class.TxRemoveDoc) {
83601
83601
  const cud = tx;
83602
83602
  if (toExclude.has(cud.objectClass)) {
83603
83603
  return false;
@@ -83609,7 +83609,7 @@ var require_lib20 = __commonJS({
83609
83609
  }
83610
83610
  __name(returnClientTxes, "returnClientTxes");
83611
83611
  function createModelPersistence(workspace2) {
83612
- const overrideStore = (0, import_platform4.getMetadata)(import_client85.default.metadata.OverridePersistenceStore);
83612
+ const overrideStore = (0, import_platform4.getMetadata)(import_client86.default.metadata.OverridePersistenceStore);
83613
83613
  if (overrideStore !== void 0) {
83614
83614
  return overrideStore;
83615
83615
  }
@@ -83706,8 +83706,8 @@ var require_client6 = __commonJS({
83706
83706
  });
83707
83707
  module2.exports = __toCommonJS2(client_exports);
83708
83708
  var import_account_client2 = require_lib6();
83709
- var import_client85 = __toESM2(require_lib7());
83710
- var import_core102 = require_lib5();
83709
+ var import_client86 = __toESM2(require_lib7());
83710
+ var import_core103 = require_lib5();
83711
83711
  var import_platform4 = require_lib();
83712
83712
  var import_config10 = require_config();
83713
83713
  var import_markup21 = require_markup();
@@ -83724,7 +83724,7 @@ var require_client6 = __commonJS({
83724
83724
  const account = {
83725
83725
  uuid: wsLoginInfo.account,
83726
83726
  role: wsLoginInfo.role,
83727
- primarySocialId: (0, import_core102.pickPrimarySocialId)(socialIds)._id,
83727
+ primarySocialId: (0, import_core103.pickPrimarySocialId)(socialIds)._id,
83728
83728
  socialIds: socialIds.map((si) => si._id),
83729
83729
  fullSocialIds: socialIds
83730
83730
  };
@@ -83732,9 +83732,9 @@ var require_client6 = __commonJS({
83732
83732
  }
83733
83733
  __name(connect, "connect");
83734
83734
  async function createClient(url4, endpoint, token, workspaceUuid, account, config3, options) {
83735
- (0, import_platform4.addLocation)(import_client85.clientId, () => Promise.resolve().then(() => __toESM(require_lib20())));
83735
+ (0, import_platform4.addLocation)(import_client86.clientId, () => Promise.resolve().then(() => __toESM(require_lib20())));
83736
83736
  const { socketFactory, connectionTimeout } = options;
83737
- const clientFactory = await (0, import_platform4.getResource)(import_client85.default.function.GetClient);
83737
+ const clientFactory = await (0, import_platform4.getResource)(import_client86.default.function.GetClient);
83738
83738
  const connection = await clientFactory(token, endpoint, {
83739
83739
  socketFactory,
83740
83740
  connectionTimeout
@@ -83750,7 +83750,7 @@ var require_client6 = __commonJS({
83750
83750
  this.config = config3;
83751
83751
  this.connection = connection;
83752
83752
  this.account = account;
83753
- this.client = new import_core102.TxOperations(connection, account.primarySocialId);
83753
+ this.client = new import_core103.TxOperations(connection, account.primarySocialId);
83754
83754
  this.markup = (0, import_markup21.createMarkupOperations)(url4, workspace2, token, config3);
83755
83755
  }
83756
83756
  static {
@@ -83790,7 +83790,7 @@ var require_client6 = __commonJS({
83790
83790
  }
83791
83791
  // DocOperations
83792
83792
  async createDoc(_class, space, attributes, id) {
83793
- id ??= (0, import_core102.generateId)();
83793
+ id ??= (0, import_core103.generateId)();
83794
83794
  const data = await this.processMarkup(_class, id, attributes);
83795
83795
  return await this.client.createDoc(_class, space, data, id);
83796
83796
  }
@@ -83803,7 +83803,7 @@ var require_client6 = __commonJS({
83803
83803
  }
83804
83804
  // CollectionOperations
83805
83805
  async addCollection(_class, space, attachedTo, attachedToClass, collection, attributes, id) {
83806
- id ??= (0, import_core102.generateId)();
83806
+ id ??= (0, import_core103.generateId)();
83807
83807
  const data = await this.processMarkup(_class, id, attributes);
83808
83808
  return await this.client.addCollection(_class, space, attachedTo, attachedToClass, collection, data, id);
83809
83809
  }
@@ -84130,7 +84130,7 @@ var require_rest = __commonJS({
84130
84130
  createRestClient: () => createRestClient2
84131
84131
  });
84132
84132
  module2.exports = __toCommonJS2(rest_exports);
84133
- var import_core102 = require_lib5();
84133
+ var import_core103 = require_lib5();
84134
84134
  var import_platform4 = require_lib();
84135
84135
  var import_utils14 = require_utils9();
84136
84136
  var import_utils22 = require_utils10();
@@ -84185,7 +84185,7 @@ var require_rest = __commonJS({
84185
84185
  if (options !== void 0 && Object.keys(options).length > 0) {
84186
84186
  params.append("options", JSON.stringify(options));
84187
84187
  }
84188
- const requestUrl2 = (0, import_core102.concatLink)(this.endpoint, `/api/v1/find-all/${this.workspace}?${params.toString()}`);
84188
+ const requestUrl2 = (0, import_core103.concatLink)(this.endpoint, `/api/v1/find-all/${this.workspace}?${params.toString()}`);
84189
84189
  const result = await (0, import_utils22.withRetry)(async () => {
84190
84190
  const response = await fetch(requestUrl2, this.requestInit());
84191
84191
  if (!response.ok) {
@@ -84259,7 +84259,7 @@ var require_rest = __commonJS({
84259
84259
  }
84260
84260
  }
84261
84261
  async getAccount() {
84262
- const requestUrl2 = (0, import_core102.concatLink)(this.endpoint, `/api/v1/account/${this.workspace}`);
84262
+ const requestUrl2 = (0, import_core103.concatLink)(this.endpoint, `/api/v1/account/${this.workspace}`);
84263
84263
  await this.checkRate();
84264
84264
  const result = await (0, import_utils22.withRetry)(async () => {
84265
84265
  const response = await fetch(requestUrl2, this.requestInit());
@@ -84276,7 +84276,7 @@ var require_rest = __commonJS({
84276
84276
  return result;
84277
84277
  }
84278
84278
  async getModel(full = false) {
84279
- const requestUrl2 = new URL((0, import_core102.concatLink)(this.endpoint, `/api/v1/load-model/${this.workspace}`));
84279
+ const requestUrl2 = new URL((0, import_core103.concatLink)(this.endpoint, `/api/v1/load-model/${this.workspace}`));
84280
84280
  if (full) {
84281
84281
  requestUrl2.searchParams.append("full", "true");
84282
84282
  }
@@ -84289,10 +84289,10 @@ var require_rest = __commonJS({
84289
84289
  }
84290
84290
  this.updateRateLimit(response);
84291
84291
  const modelResponse = await (0, import_utils22.extractJson)(response);
84292
- const hierarchy = new import_core102.Hierarchy();
84293
- const model = new import_core102.ModelDb(hierarchy);
84294
- const ctx = new import_core102.MeasureMetricsContext("loadModel", {});
84295
- (0, import_core102.buildModel)(ctx, modelResponse, void 0, hierarchy, model);
84292
+ const hierarchy = new import_core103.Hierarchy();
84293
+ const model = new import_core103.ModelDb(hierarchy);
84294
+ const ctx = new import_core103.MeasureMetricsContext("loadModel", {});
84295
+ (0, import_core103.buildModel)(ctx, modelResponse, void 0, hierarchy, model);
84296
84296
  return { hierarchy, model };
84297
84297
  }, isRLE);
84298
84298
  if (result.error !== void 0) {
@@ -84304,7 +84304,7 @@ var require_rest = __commonJS({
84304
84304
  return (await this.findAll(_class, query, { ...options, limit: 1 })).shift();
84305
84305
  }
84306
84306
  async tx(tx) {
84307
- const requestUrl2 = (0, import_core102.concatLink)(this.endpoint, `/api/v1/tx/${this.workspace}`);
84307
+ const requestUrl2 = (0, import_core103.concatLink)(this.endpoint, `/api/v1/tx/${this.workspace}`);
84308
84308
  await this.checkRate();
84309
84309
  const result = await (0, import_utils22.withRetry)(async () => {
84310
84310
  const response = await fetch(requestUrl2, {
@@ -84338,7 +84338,7 @@ var require_rest = __commonJS({
84338
84338
  if (options.limit != null) {
84339
84339
  params.append("limit", `${options.limit}`);
84340
84340
  }
84341
- const requestUrl2 = (0, import_core102.concatLink)(this.endpoint, `/api/v1/search-fulltext/${this.workspace}?${params.toString()}`);
84341
+ const requestUrl2 = (0, import_core103.concatLink)(this.endpoint, `/api/v1/search-fulltext/${this.workspace}?${params.toString()}`);
84342
84342
  const response = await fetch(requestUrl2, {
84343
84343
  method: "GET",
84344
84344
  headers: this.jsonHeaders(),
@@ -84357,7 +84357,7 @@ var require_rest = __commonJS({
84357
84357
  return result;
84358
84358
  }
84359
84359
  async domainRequest(domain3, params, options) {
84360
- const requestUrl2 = (0, import_core102.concatLink)(this.endpoint, `/api/v1/request/${domain3}/${this.workspace}`);
84360
+ const requestUrl2 = (0, import_core103.concatLink)(this.endpoint, `/api/v1/request/${domain3}/${this.workspace}`);
84361
84361
  await this.checkRate();
84362
84362
  return await (0, import_utils22.withRetry)(async () => {
84363
84363
  const response = await fetch(requestUrl2, {
@@ -84376,7 +84376,7 @@ var require_rest = __commonJS({
84376
84376
  }, isRLE);
84377
84377
  }
84378
84378
  async ensurePerson(socialType, socialValue, firstName, lastName) {
84379
- const requestUrl2 = (0, import_core102.concatLink)(this.endpoint, `/api/v1/ensure-person/${this.workspace}`);
84379
+ const requestUrl2 = (0, import_core103.concatLink)(this.endpoint, `/api/v1/ensure-person/${this.workspace}`);
84380
84380
  await this.checkRate();
84381
84381
  const result = await (0, import_utils22.withRetry)(async () => {
84382
84382
  const response = await fetch(requestUrl2, {
@@ -84433,13 +84433,13 @@ var require_tx2 = __commonJS({
84433
84433
  createRestTxOperations: () => createRestTxOperations2
84434
84434
  });
84435
84435
  module2.exports = __toCommonJS2(tx_exports);
84436
- var import_core102 = require_lib5();
84436
+ var import_core103 = require_lib5();
84437
84437
  var import_rest = require_rest();
84438
84438
  async function createRestTxOperations2(endpoint, workspaceId, token, fullModel = false) {
84439
84439
  const restClient = new import_rest.RestClientImpl(endpoint, workspaceId, token);
84440
84440
  const account = await restClient.getAccount();
84441
84441
  const { hierarchy, model } = await restClient.getModel(fullModel);
84442
- return new import_core102.TxOperations(new RestTxClient(restClient, hierarchy, model, account), account.socialIds[0]);
84442
+ return new import_core103.TxOperations(new RestTxClient(restClient, hierarchy, model, account), account.socialIds[0]);
84443
84443
  }
84444
84444
  __name(createRestTxOperations2, "createRestTxOperations");
84445
84445
  var RestTxClient = class {
@@ -84460,7 +84460,7 @@ var require_tx2 = __commonJS({
84460
84460
  const result = data.map((v) => {
84461
84461
  return this.hierarchy.updateLookupMixin(_class, v, options);
84462
84462
  });
84463
- return (0, import_core102.toFindResult)(result, data.total);
84463
+ return (0, import_core103.toFindResult)(result, data.total);
84464
84464
  }
84465
84465
  async domainRequest(domain3, params, options) {
84466
84466
  return await this.client.domainRequest(domain3, params, options);
@@ -84642,7 +84642,7 @@ var require_client7 = __commonJS({
84642
84642
  createStorageClient: () => createStorageClient2
84643
84643
  });
84644
84644
  module2.exports = __toCommonJS2(client_exports);
84645
- var import_core102 = __toESM2(require_lib5());
84645
+ var import_core103 = __toESM2(require_lib5());
84646
84646
  var import_stream2 = require("stream");
84647
84647
  var import_config10 = require_config();
84648
84648
  var import_error = require_error3();
@@ -84679,13 +84679,13 @@ var require_client7 = __commonJS({
84679
84679
  const size13 = parseInt(headers.get("Content-Length") ?? "0", 10);
84680
84680
  return {
84681
84681
  provider: "",
84682
- _class: import_core102.default.class.Blob,
84682
+ _class: import_core103.default.class.Blob,
84683
84683
  _id: objectName,
84684
84684
  contentType: headers.get("Content-Type") ?? "",
84685
84685
  size: isNaN(size13) ? 0 : size13 ?? 0,
84686
84686
  etag: headers.get("ETag") ?? "",
84687
- space: import_core102.default.space.Configuration,
84688
- modifiedBy: import_core102.default.account.System,
84687
+ space: import_core103.default.space.Configuration,
84688
+ modifiedBy: import_core103.default.account.System,
84689
84689
  modifiedOn: isNaN(lastModified) ? 0 : lastModified,
84690
84690
  version: null
84691
84691
  };
@@ -84720,11 +84720,11 @@ var require_client7 = __commonJS({
84720
84720
  if (Object.hasOwn(result[0], "id")) {
84721
84721
  const fileResult = result[0];
84722
84722
  return {
84723
- _class: import_core102.default.class.Blob,
84723
+ _class: import_core103.default.class.Blob,
84724
84724
  _id: fileResult.id,
84725
- space: import_core102.default.space.Configuration,
84725
+ space: import_core103.default.space.Configuration,
84726
84726
  modifiedOn: fileResult.metadata.lastModified,
84727
- modifiedBy: import_core102.default.account.System,
84727
+ modifiedBy: import_core103.default.account.System,
84728
84728
  provider: "",
84729
84729
  contentType: fileResult.metadata.contentType,
84730
84730
  etag: fileResult.metadata.etag,
@@ -84798,11 +84798,11 @@ var require_client7 = __commonJS({
84798
84798
  async function connectStorage(url4, options, config3) {
84799
84799
  config3 ??= await (0, import_config10.loadServerConfig)(url4);
84800
84800
  const token = await (0, import_utils14.getWorkspaceToken)(url4, options, config3);
84801
- const filesUrl = (config3.FILES_URL.startsWith("/") ? (0, import_core102.concatLink)(url4, config3.FILES_URL) : config3.FILES_URL).replace(
84801
+ const filesUrl = (config3.FILES_URL.startsWith("/") ? (0, import_core103.concatLink)(url4, config3.FILES_URL) : config3.FILES_URL).replace(
84802
84802
  ":workspace",
84803
84803
  token.workspaceId
84804
84804
  );
84805
- const uploadUrl = (config3.UPLOAD_URL.startsWith("/") ? (0, import_core102.concatLink)(url4, config3.UPLOAD_URL) : config3.UPLOAD_URL).replace(":workspace", token.workspaceId);
84805
+ const uploadUrl = (config3.UPLOAD_URL.startsWith("/") ? (0, import_core103.concatLink)(url4, config3.UPLOAD_URL) : config3.UPLOAD_URL).replace(":workspace", token.workspaceId);
84806
84806
  return new StorageClientImpl(filesUrl, uploadUrl, token.token, token.workspaceId);
84807
84807
  }
84808
84808
  __name(connectStorage, "connectStorage");
@@ -84855,11 +84855,11 @@ var require_storage2 = __commonJS({
84855
84855
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
84856
84856
  var storage_exports = {};
84857
84857
  __export2(storage_exports, {
84858
- connectStorage: () => import_client85.connectStorage,
84859
- createStorageClient: () => import_client85.createStorageClient
84858
+ connectStorage: () => import_client86.connectStorage,
84859
+ createStorageClient: () => import_client86.createStorageClient
84860
84860
  });
84861
84861
  module2.exports = __toCommonJS2(storage_exports);
84862
- var import_client85 = require_client7();
84862
+ var import_client86 = require_client7();
84863
84863
  __reExport2(storage_exports, require_error3(), module2.exports);
84864
84864
  __reExport2(storage_exports, require_types8(), module2.exports);
84865
84865
  }
@@ -85272,7 +85272,7 @@ var require_utils11 = __commonJS({
85272
85272
  getWeekday: () => getWeekday
85273
85273
  });
85274
85274
  module2.exports = __toCommonJS2(utils_exports);
85275
- var import_core102 = require_lib5();
85275
+ var import_core103 = require_lib5();
85276
85276
  var import__ = __toESM2(require_lib25());
85277
85277
  function getInstance(event, date7) {
85278
85278
  const diff8 = event.dueDate - event.date;
@@ -85284,7 +85284,7 @@ var require_utils11 = __commonJS({
85284
85284
  originalStartTime: date7,
85285
85285
  _class: import__.default.class.ReccuringInstance,
85286
85286
  eventId: generateEventId3(),
85287
- _id: (0, import_core102.generateId)(),
85287
+ _id: (0, import_core103.generateId)(),
85288
85288
  virtual: true
85289
85289
  };
85290
85290
  }
@@ -85597,7 +85597,7 @@ var require_utils11 = __commonJS({
85597
85597
  }
85598
85598
  __name(getAllEvents, "getAllEvents");
85599
85599
  function generateEventId3() {
85600
- const id = (0, import_core102.generateId)();
85600
+ const id = (0, import_core103.generateId)();
85601
85601
  return encodeToBase32Hex(id);
85602
85602
  }
85603
85603
  __name(generateEventId3, "generateEventId");
@@ -86011,7 +86011,7 @@ var require_utils12 = __commonJS({
86011
86011
  });
86012
86012
  module2.exports = __toCommonJS2(utils_exports);
86013
86013
  var import_fast_equals = require_cjs();
86014
- var import_core102 = __toESM2(require_lib5());
86014
+ var import_core103 = __toESM2(require_lib5());
86015
86015
  var import__ = __toESM2(require_lib27());
86016
86016
  async function getDirectChannel(client, me, employeeAccount) {
86017
86017
  const accIds = [me, employeeAccount].sort();
@@ -86021,7 +86021,7 @@ var require_utils12 = __commonJS({
86021
86021
  return dm._id;
86022
86022
  }
86023
86023
  }
86024
- return await client.createDoc(import__.default.class.DirectMessage, import_core102.default.space.Space, {
86024
+ return await client.createDoc(import__.default.class.DirectMessage, import_core103.default.space.Space, {
86025
86025
  name: "",
86026
86026
  description: "",
86027
86027
  private: true,
@@ -86325,18 +86325,18 @@ var require_cache4 = __commonJS({
86325
86325
  default: () => ContactCache
86326
86326
  });
86327
86327
  module2.exports = __toCommonJS2(cache_exports);
86328
- var import_core102 = __toESM2(require_lib5());
86328
+ var import_core103 = __toESM2(require_lib5());
86329
86329
  var import__ = __toESM2(require_lib28());
86330
86330
  function isCreateTx(tx) {
86331
- return tx._class === import_core102.default.class.TxCreateDoc;
86331
+ return tx._class === import_core103.default.class.TxCreateDoc;
86332
86332
  }
86333
86333
  __name(isCreateTx, "isCreateTx");
86334
86334
  function isUpdateTx(tx) {
86335
- return tx._class === import_core102.default.class.TxUpdateDoc;
86335
+ return tx._class === import_core103.default.class.TxUpdateDoc;
86336
86336
  }
86337
86337
  __name(isUpdateTx, "isUpdateTx");
86338
86338
  function isMixinTx(tx) {
86339
- return tx._class === import_core102.default.class.TxMixin;
86339
+ return tx._class === import_core103.default.class.TxMixin;
86340
86340
  }
86341
86341
  __name(isMixinTx, "isMixinTx");
86342
86342
  function isPersonTx(tx) {
@@ -86443,7 +86443,7 @@ var require_cache4 = __commonJS({
86443
86443
  const ref = tx.objectId;
86444
86444
  const person = this._personByRef.get(ref);
86445
86445
  if (person === void 0) return;
86446
- const createdPerson = import_core102.TxProcessor.createDoc2Doc(tx);
86446
+ const createdPerson = import_core103.TxProcessor.createDoc2Doc(tx);
86447
86447
  this._personByRef.set(ref, createdPerson);
86448
86448
  const personIds = Array.from(this._personIdsByPersonRef.get(ref) ?? []);
86449
86449
  for (const personId of personIds) {
@@ -86461,7 +86461,7 @@ var require_cache4 = __commonJS({
86461
86461
  const newPersonRef = tx.attachedTo;
86462
86462
  this._personRefByPersonId.set(personId, newPersonRef);
86463
86463
  this.addPersonIdToPersonRef(newPersonRef, personId);
86464
- const createdSocialId = import_core102.TxProcessor.createDoc2Doc(tx);
86464
+ const createdSocialId = import_core103.TxProcessor.createDoc2Doc(tx);
86465
86465
  this._socialIdByPersonId.set(personId, createdSocialId);
86466
86466
  this.broadcastChange({
86467
86467
  personRef: newPersonRef,
@@ -86472,7 +86472,7 @@ var require_cache4 = __commonJS({
86472
86472
  const ref = tx.objectId;
86473
86473
  const person = this._personByRef.get(ref);
86474
86474
  if (person == null) return;
86475
- const updatedPerson = isUpdateTx(tx) ? import_core102.TxProcessor.updateDoc2Doc(person, tx) : import_core102.TxProcessor.updateMixin4Doc(person, tx);
86475
+ const updatedPerson = isUpdateTx(tx) ? import_core103.TxProcessor.updateDoc2Doc(person, tx) : import_core103.TxProcessor.updateMixin4Doc(person, tx);
86476
86476
  this._personByRef.set(ref, updatedPerson);
86477
86477
  const personIds = Array.from(this._personIdsByPersonRef.get(ref) ?? []);
86478
86478
  for (const personId of personIds) {
@@ -86587,7 +86587,7 @@ var require_utils13 = __commonJS({
86587
86587
  setCurrentEmployeeSpace: () => setCurrentEmployeeSpace
86588
86588
  });
86589
86589
  module2.exports = __toCommonJS2(utils_exports);
86590
- var import_core102 = require_lib5();
86590
+ var import_core103 = require_lib5();
86591
86591
  var import_platform4 = require_lib();
86592
86592
  var import__ = __toESM2(require_lib28());
86593
86593
  var import_types15 = require_types9();
@@ -86791,7 +86791,7 @@ var require_utils13 = __commonJS({
86791
86791
  if (socialIds.length === 0) {
86792
86792
  return;
86793
86793
  }
86794
- return (0, import_core102.pickPrimarySocialId)(socialIds)._id;
86794
+ return (0, import_core103.pickPrimarySocialId)(socialIds)._id;
86795
86795
  }
86796
86796
  __name(getPrimarySocialId, "getPrimarySocialId");
86797
86797
  async function getAllSocialStringsByPersonId(client, personId) {
@@ -86830,12 +86830,12 @@ var require_utils13 = __commonJS({
86830
86830
  __name(getSocialStringsByEmployee, "getSocialStringsByEmployee");
86831
86831
  async function getAllAccounts(client) {
86832
86832
  const employees = await client.findAll(import__.default.mixin.Employee, { active: true });
86833
- return employees.map((it) => it.personUuid).filter(import_core102.notEmpty);
86833
+ return employees.map((it) => it.personUuid).filter(import_core103.notEmpty);
86834
86834
  }
86835
86835
  __name(getAllAccounts, "getAllAccounts");
86836
86836
  async function getAllUserAccounts(client) {
86837
86837
  const employees = await client.findAll(import__.default.mixin.Employee, { active: true });
86838
- return employees.map((it) => it.personUuid).filter(import_core102.notEmpty);
86838
+ return employees.map((it) => it.personUuid).filter(import_core103.notEmpty);
86839
86839
  }
86840
86840
  __name(getAllUserAccounts, "getAllUserAccounts");
86841
86841
  async function ensureEmployee(ctx, me, client, socialIds, getGlobalPerson) {
@@ -86844,7 +86844,7 @@ var require_utils13 = __commonJS({
86844
86844
  }
86845
86845
  __name(ensureEmployee, "ensureEmployee");
86846
86846
  async function ensureEmployeeForPerson(ctx, me, person, client, socialIds, globalPerson) {
86847
- const txFactory = new import_core102.TxFactory(me.primarySocialId);
86847
+ const txFactory = new import_core103.TxFactory(me.primarySocialId);
86848
86848
  const personByUuid = await client.findOne(import__.default.class.Person, { personUuid: person.uuid });
86849
86849
  let personRef = personByUuid?._id;
86850
86850
  if (personRef === void 0) {
@@ -86865,7 +86865,7 @@ var require_utils13 = __commonJS({
86865
86865
  city: globalPerson.city,
86866
86866
  avatarType: import__.AvatarType.COLOR
86867
86867
  };
86868
- personRef = (0, import_core102.generateId)();
86868
+ personRef = (0, import_core103.generateId)();
86869
86869
  const createPersonTx = txFactory.createTxCreateDoc(import__.default.class.Person, import__.default.space.Contacts, data, personRef);
86870
86870
  await client.tx(createPersonTx);
86871
86871
  });
@@ -86875,7 +86875,7 @@ var require_utils13 = __commonJS({
86875
86875
  });
86876
86876
  await client.tx(updatePersonTx);
86877
86877
  }
86878
- const existingIdentifiers = (0, import_core102.toIdMap)(
86878
+ const existingIdentifiers = (0, import_core103.toIdMap)(
86879
86879
  await client.findAll(import__.default.class.SocialIdentity, { _id: { $in: person.socialIds } })
86880
86880
  );
86881
86881
  for (const socialId of socialIds) {
@@ -86900,7 +86900,7 @@ var require_utils13 = __commonJS({
86900
86900
  collection: "socialIds",
86901
86901
  type: socialId.type,
86902
86902
  value: socialId.value,
86903
- key: (0, import_core102.buildSocialIdString)(socialId),
86903
+ key: (0, import_core103.buildSocialIdString)(socialId),
86904
86904
  // TODO: fill it in trigger or on DB level as stored calculated column or smth?
86905
86905
  verifiedOn: socialId.verifiedOn,
86906
86906
  isDeleted: socialId.isDeleted
@@ -86941,9 +86941,9 @@ var require_utils13 = __commonJS({
86941
86941
  }
86942
86942
  }
86943
86943
  }
86944
- const employeeRole = person.role === import_core102.AccountRole.Guest || person.role === import_core102.AccountRole.ReadOnlyGuest ? "GUEST" : "USER";
86944
+ const employeeRole = person.role === import_core103.AccountRole.Guest || person.role === import_core103.AccountRole.ReadOnlyGuest ? "GUEST" : "USER";
86945
86945
  const employee = await client.findOne(import__.default.mixin.Employee, { _id: personRef });
86946
- if (employee === void 0 || !import_core102.Hierarchy.hasMixin(employee, import__.default.mixin.Employee) || !employee.active || employee.role !== employeeRole) {
86946
+ if (employee === void 0 || !import_core103.Hierarchy.hasMixin(employee, import__.default.mixin.Employee) || !employee.active || employee.role !== employeeRole) {
86947
86947
  await ctx.with("create-employee", {}, async () => {
86948
86948
  if (personRef === void 0) {
86949
86949
  console.error("Person not found");
@@ -86983,7 +86983,7 @@ var require_utils13 = __commonJS({
86983
86983
  }
86984
86984
  __name(loadCachesForPersonId, "loadCachesForPersonId");
86985
86985
  async function loadCachesForPersonIds(client, personIds) {
86986
- const sidObjsMap = (0, import_core102.toIdMap)(
86986
+ const sidObjsMap = (0, import_core103.toIdMap)(
86987
86987
  await client.findAll(
86988
86988
  import__.default.class.SocialIdentity,
86989
86989
  {
@@ -87018,7 +87018,7 @@ var require_utils13 = __commonJS({
87018
87018
  }
87019
87019
  __name(loadCachesForPersonRef, "loadCachesForPersonRef");
87020
87020
  async function loadCachesForPersonRefs(client, personRefs) {
87021
- const persons = (0, import_core102.toIdMap)(
87021
+ const persons = (0, import_core103.toIdMap)(
87022
87022
  await client.findAll(
87023
87023
  import__.default.class.Person,
87024
87024
  {
@@ -87061,7 +87061,7 @@ var require_utils13 = __commonJS({
87061
87061
  personIds.map((pid) => {
87062
87062
  const ref = contactCache.personRefByPersonId.get(pid);
87063
87063
  return ref != null ? [pid, ref] : void 0;
87064
- }).filter(import_core102.notEmpty)
87064
+ }).filter(import_core103.notEmpty)
87065
87065
  );
87066
87066
  }
87067
87067
  __name(getPersonRefsByPersonIdsFromCache, "getPersonRefsByPersonIdsFromCache");
@@ -87108,7 +87108,7 @@ var require_utils13 = __commonJS({
87108
87108
  personIds.map((pid) => {
87109
87109
  const person = contactCache.personByPersonId.get(pid);
87110
87110
  return person != null ? [pid, person] : void 0;
87111
- }).filter(import_core102.notEmpty)
87111
+ }).filter(import_core103.notEmpty)
87112
87112
  );
87113
87113
  }
87114
87114
  __name(getPersonsByPersonIdsFromCache, "getPersonsByPersonIdsFromCache");
@@ -87155,7 +87155,7 @@ var require_utils13 = __commonJS({
87155
87155
  personRefs.map((personRef) => {
87156
87156
  const person = contactCache.personByRef.get(personRef);
87157
87157
  return person != null ? [personRef, person] : void 0;
87158
- }).filter(import_core102.notEmpty)
87158
+ }).filter(import_core103.notEmpty)
87159
87159
  );
87160
87160
  }
87161
87161
  __name(getPersonsByPersonRefsFromCache, "getPersonsByPersonRefsFromCache");
@@ -87760,9 +87760,9 @@ var require_utils14 = __commonJS({
87760
87760
  getFirstRank: () => getFirstRank
87761
87761
  });
87762
87762
  module2.exports = __toCommonJS2(utils_exports);
87763
- var import_core102 = require_lib5();
87763
+ var import_core103 = require_lib5();
87764
87764
  var import_plugin = __toESM2(require_plugin2());
87765
- async function getFirstRank(client, space, parent, sort3 = import_core102.SortingOrder.Descending, extra = {}) {
87765
+ async function getFirstRank(client, space, parent, sort3 = import_core103.SortingOrder.Descending, extra = {}) {
87766
87766
  const doc = await client.findOne(
87767
87767
  import_plugin.default.class.Document,
87768
87768
  { space, parent, ...extra },
@@ -88146,7 +88146,7 @@ var require_utils15 = __commonJS({
88146
88146
  isOffice: () => isOffice
88147
88147
  });
88148
88148
  module2.exports = __toCommonJS2(utils_exports);
88149
- var import_core102 = require_lib5();
88149
+ var import_core103 = require_lib5();
88150
88150
  var import_plugin = __toESM2(require_plugin3());
88151
88151
  var import_types15 = require_types11();
88152
88152
  var GRID_WIDTH = 15;
@@ -88157,7 +88157,7 @@ var require_utils15 = __commonJS({
88157
88157
  function createDefaultRooms(employees) {
88158
88158
  const res = [];
88159
88159
  for (let index = 0; index < 12; index++) {
88160
- const _id = (0, import_core102.generateId)();
88160
+ const _id = (0, import_core103.generateId)();
88161
88161
  const office = {
88162
88162
  _id,
88163
88163
  name: "",
@@ -88176,7 +88176,7 @@ var require_utils15 = __commonJS({
88176
88176
  };
88177
88177
  res.push(office);
88178
88178
  }
88179
- const allHands = (0, import_core102.generateId)();
88179
+ const allHands = (0, import_core103.generateId)();
88180
88180
  res.push({
88181
88181
  _id: allHands,
88182
88182
  name: "All hands",
@@ -88192,7 +88192,7 @@ var require_utils15 = __commonJS({
88192
88192
  startWithRecording: true,
88193
88193
  description: null
88194
88194
  });
88195
- const meetingRoom1 = (0, import_core102.generateId)();
88195
+ const meetingRoom1 = (0, import_core103.generateId)();
88196
88196
  res.push({
88197
88197
  _id: meetingRoom1,
88198
88198
  name: "Meeting Room 1",
@@ -88208,7 +88208,7 @@ var require_utils15 = __commonJS({
88208
88208
  startWithRecording: true,
88209
88209
  description: null
88210
88210
  });
88211
- const meetingRoom2 = (0, import_core102.generateId)();
88211
+ const meetingRoom2 = (0, import_core103.generateId)();
88212
88212
  res.push({
88213
88213
  _id: meetingRoom2,
88214
88214
  name: "Meeting Room 2",
@@ -88224,7 +88224,7 @@ var require_utils15 = __commonJS({
88224
88224
  startWithRecording: true,
88225
88225
  description: null
88226
88226
  });
88227
- const voiceRoom1 = (0, import_core102.generateId)();
88227
+ const voiceRoom1 = (0, import_core103.generateId)();
88228
88228
  res.push({
88229
88229
  _id: voiceRoom1,
88230
88230
  name: "Voice Room 1",
@@ -88240,7 +88240,7 @@ var require_utils15 = __commonJS({
88240
88240
  startWithRecording: false,
88241
88241
  description: null
88242
88242
  });
88243
- const voiceRoom2 = (0, import_core102.generateId)();
88243
+ const voiceRoom2 = (0, import_core103.generateId)();
88244
88244
  res.push({
88245
88245
  _id: voiceRoom2,
88246
88246
  name: "Voice Room 2",
@@ -90015,7 +90015,7 @@ var require_utils17 = __commonJS({
90015
90015
  updateProjectType: () => updateProjectType
90016
90016
  });
90017
90017
  module2.exports = __toCommonJS2(utils_exports);
90018
- var import_core102 = __toESM2(require_lib5());
90018
+ var import_core103 = __toESM2(require_lib5());
90019
90019
  var import_platform4 = require_lib();
90020
90020
  var import__ = __toESM2(require_lib37());
90021
90021
  var import_rank7 = require_lib36();
@@ -90051,7 +90051,7 @@ var require_utils17 = __commonJS({
90051
90051
  if (exists5 !== void 0) {
90052
90052
  return exists5._id;
90053
90053
  }
90054
- const res = await client.createDoc(_class, import_core102.default.space.Model, data);
90054
+ const res = await client.createDoc(_class, import_core103.default.space.Model, data);
90055
90055
  return res;
90056
90056
  }
90057
90057
  __name(createState, "createState");
@@ -90081,7 +90081,7 @@ var require_utils17 = __commonJS({
90081
90081
  function findStatusAttr(h, _class) {
90082
90082
  const attrs = h.getAllAttributes(_class);
90083
90083
  for (const it of attrs.values()) {
90084
- if (it.type._class === import_core102.default.class.RefTo && h.isDerived(it.type.to, import_core102.default.class.Status)) {
90084
+ if (it.type._class === import_core103.default.class.RefTo && h.isDerived(it.type.to, import_core103.default.class.Status)) {
90085
90085
  return it;
90086
90086
  }
90087
90087
  }
@@ -90113,7 +90113,7 @@ var require_utils17 = __commonJS({
90113
90113
  const targetProjectClassId = `${_id}:type:mixin`;
90114
90114
  const tmpl = await client.createDoc(
90115
90115
  import__.default.class.ProjectType,
90116
- import_core102.default.space.Model,
90116
+ import_core103.default.space.Model,
90117
90117
  {
90118
90118
  description: data.description,
90119
90119
  shortDescription: data.shortDescription,
@@ -90128,17 +90128,17 @@ var require_utils17 = __commonJS({
90128
90128
  _id
90129
90129
  );
90130
90130
  await client.createDoc(
90131
- import_core102.default.class.Mixin,
90132
- import_core102.default.space.Model,
90131
+ import_core103.default.class.Mixin,
90132
+ import_core103.default.space.Model,
90133
90133
  {
90134
90134
  extends: categoryObj.baseClass,
90135
- kind: import_core102.ClassifierKind.MIXIN,
90135
+ kind: import_core103.ClassifierKind.MIXIN,
90136
90136
  label: (0, import_platform4.getEmbeddedLabel)(data.name),
90137
90137
  icon: baseClassClass.icon
90138
90138
  },
90139
90139
  targetProjectClassId
90140
90140
  );
90141
- await client.createMixin(targetProjectClassId, import_core102.default.class.Mixin, import_core102.default.space.Model, import__.default.mixin.ProjectTypeClass, {
90141
+ await client.createMixin(targetProjectClassId, import_core103.default.class.Mixin, import_core103.default.space.Model, import__.default.mixin.ProjectTypeClass, {
90142
90142
  projectType: _id
90143
90143
  });
90144
90144
  return tmpl;
@@ -90197,22 +90197,22 @@ var require_utils17 = __commonJS({
90197
90197
  const targetClassId = `${taskId}:type:mixin`;
90198
90198
  tdata.targetClass = targetClassId;
90199
90199
  await client.createDoc(
90200
- import_core102.default.class.Mixin,
90201
- import_core102.default.space.Model,
90200
+ import_core103.default.class.Mixin,
90201
+ import_core103.default.space.Model,
90202
90202
  {
90203
90203
  extends: data.ofClass,
90204
- kind: import_core102.ClassifierKind.MIXIN,
90204
+ kind: import_core103.ClassifierKind.MIXIN,
90205
90205
  label: ofClassClass.label,
90206
90206
  icon: ofClassClass.icon
90207
90207
  },
90208
90208
  targetClassId
90209
90209
  );
90210
- await client.createMixin(targetClassId, import_core102.default.class.Mixin, import_core102.default.space.Model, import__.default.mixin.TaskTypeClass, {
90210
+ await client.createMixin(targetClassId, import_core103.default.class.Mixin, import_core103.default.space.Model, import__.default.mixin.TaskTypeClass, {
90211
90211
  taskType: taskId,
90212
90212
  projectType: _id
90213
90213
  });
90214
90214
  }
90215
- await client.createDoc(import__.default.class.TaskType, import_core102.default.space.Model, tdata, taskId);
90215
+ await client.createDoc(import__.default.class.TaskType, import_core103.default.space.Model, tdata, taskId);
90216
90216
  tasksData.set(taskId, tdata);
90217
90217
  _tasks.push(taskId);
90218
90218
  }
@@ -169980,7 +169980,8 @@ var ToolWarningCodeSchema = Schema_exports.Literal(
169980
169980
  "status_metadata_unresolved",
169981
169981
  "space_role_assignments_degraded",
169982
169982
  "message_template_metadata_degraded",
169983
- "viewlet_descriptor_metadata_degraded"
169983
+ "viewlet_descriptor_metadata_degraded",
169984
+ "space_preference_metadata_degraded"
169984
169985
  ).annotations({
169985
169986
  identifier: "ToolWarningCode",
169986
169987
  title: "ToolWarningCode",
@@ -169990,6 +169991,7 @@ var StatusMetadataUnresolvedWarningCode = ToolWarningCodeSchema.literals[0];
169990
169991
  var SpaceRoleAssignmentsDegradedWarningCode = ToolWarningCodeSchema.literals[1];
169991
169992
  var MessageTemplateMetadataDegradedWarningCode = ToolWarningCodeSchema.literals[2];
169992
169993
  var ViewletDescriptorMetadataDegradedWarningCode = ToolWarningCodeSchema.literals[3];
169994
+ var SpacePreferenceMetadataDegradedWarningCode = ToolWarningCodeSchema.literals[4];
169993
169995
  var ToolWarningSchema = Schema_exports.Struct({
169994
169996
  code: ToolWarningCodeSchema,
169995
169997
  message: Schema_exports.Trim.pipe(Schema_exports.nonEmptyString()).annotations({
@@ -170001,47 +170003,6 @@ var ToolWarningSchema = Schema_exports.Struct({
170001
170003
  description: "Warning surfaced to an agent when a tool result is intentionally degraded instead of failing."
170002
170004
  });
170003
170005
 
170004
- // src/domain/schemas/recurrence-primitives.ts
170005
- var MAX_ZERO_BASED_MONTH_INDEX = 11;
170006
- var MAX_MONTH_DAY = 31;
170007
- var MIN_SET_POSITION = -366;
170008
- var MAX_SET_POSITION = 366;
170009
- var RecurrenceCount = PositiveInteger.pipe(Schema_exports.brand("RecurrenceCount")).annotations({
170010
- identifier: "RecurrenceCount",
170011
- title: "RecurrenceCount",
170012
- description: "Positive recurrence occurrence count."
170013
- });
170014
- var RecurrenceInterval = PositiveInteger.pipe(Schema_exports.brand("RecurrenceInterval")).annotations({
170015
- identifier: "RecurrenceInterval",
170016
- title: "RecurrenceInterval",
170017
- description: "Positive recurrence interval."
170018
- });
170019
- var MonthIndex = NonNegativeInteger.pipe(
170020
- Schema_exports.lessThanOrEqualTo(MAX_ZERO_BASED_MONTH_INDEX),
170021
- Schema_exports.brand("MonthIndex")
170022
- ).annotations({
170023
- identifier: "MonthIndex",
170024
- title: "MonthIndex",
170025
- description: "Zero-based calendar month index (0=January, 11=December)."
170026
- });
170027
- var MonthDayOrdinal = Integer.pipe(
170028
- Schema_exports.between(1, MAX_MONTH_DAY),
170029
- Schema_exports.brand("MonthDayOrdinal")
170030
- ).annotations({
170031
- identifier: "MonthDayOrdinal",
170032
- title: "MonthDayOrdinal",
170033
- description: "Calendar month day, 1 through 31. Huly's recurrence generator does not support negative month days."
170034
- });
170035
- var SetPositionOrdinal = Integer.pipe(
170036
- Schema_exports.between(MIN_SET_POSITION, MAX_SET_POSITION),
170037
- Schema_exports.filter((value3) => value3 !== 0, { message: () => "Set-position ordinal cannot be zero." }),
170038
- Schema_exports.brand("SetPositionOrdinal")
170039
- ).annotations({
170040
- identifier: "SetPositionOrdinal",
170041
- title: "SetPositionOrdinal",
170042
- description: "Signed set-position ordinal, -366 through -1 or 1 through 366."
170043
- });
170044
-
170045
170006
  // src/domain/schemas/spaces.ts
170046
170007
  var limitDescription = (subject) => `Maximum ${subject} to return (default: ${DEFAULT_LIMIT}).`;
170047
170008
  var SpacePermissionScopeSchema = Schema_exports.Literal("space", "workspace");
@@ -170316,6 +170277,124 @@ var GetSpaceTypeResultSchema = SpaceTypeDetailSchema;
170316
170277
  var AddSpaceMembersResultSchema = SpaceMemberMutationResultSchema;
170317
170278
  var RemoveSpaceMembersResultSchema = SpaceMemberMutationResultSchema;
170318
170279
 
170280
+ // src/domain/schemas/preferences.ts
170281
+ var SpacePreferenceId = DocId.pipe(Schema_exports.brand("SpacePreferenceId"));
170282
+ var spaceResolverOptionsRequireSpace = "includeArchived, class, and type can only be provided when space is provided.";
170283
+ var ListSpacePreferencesParamsSchema = Schema_exports.Struct({
170284
+ space: Schema_exports.optional(SpaceIdentifier.annotations({
170285
+ description: "Optional space _id or exact space name whose low-level SpacePreference record should be listed. Resolution tries _id first, then exact name."
170286
+ })),
170287
+ includeArchived: Schema_exports.optional(Schema_exports.Boolean.annotations({
170288
+ description: "Allow matching archived spaces by exact name when space is provided. ID lookup can return archived spaces."
170289
+ })),
170290
+ class: Schema_exports.optional(SpaceClassFilter.annotations({
170291
+ description: "Optional raw Huly space class ID used to disambiguate exact-name lookup when space is provided."
170292
+ })),
170293
+ type: Schema_exports.optional(SpaceTypeId.annotations({
170294
+ description: "Optional raw Huly SpaceType _id used to disambiguate exact-name lookup when space is provided."
170295
+ })),
170296
+ limit: Schema_exports.optional(LimitParam.annotations({
170297
+ description: `Maximum number of space preferences to return (default: ${DEFAULT_LIMIT}).`
170298
+ }))
170299
+ }).pipe(
170300
+ Schema_exports.filter(
170301
+ (params) => params.space !== void 0 || params.includeArchived === void 0 && params.class === void 0 && params.type === void 0 ? void 0 : spaceResolverOptionsRequireSpace
170302
+ )
170303
+ ).annotations({
170304
+ title: "ListSpacePreferencesParams",
170305
+ description: "List low-level Huly SpacePreference records. These records are generic space-attached preference markers; module-specific preference payloads remain exposed through module-specific tools."
170306
+ });
170307
+ var GetSpacePreferenceParamsSchema = Schema_exports.Struct({
170308
+ space: SpaceIdentifier.annotations({
170309
+ description: "Space _id or exact space name whose low-level SpacePreference record should be read. Resolution tries _id first, then exact name."
170310
+ }),
170311
+ includeArchived: Schema_exports.optional(Schema_exports.Boolean.annotations({
170312
+ description: "Allow matching archived spaces by exact name. ID lookup can return archived spaces."
170313
+ })),
170314
+ class: Schema_exports.optional(SpaceClassFilter.annotations({
170315
+ description: "Optional raw Huly space class ID used to disambiguate exact-name lookup."
170316
+ })),
170317
+ type: Schema_exports.optional(SpaceTypeId.annotations({
170318
+ description: "Optional raw Huly SpaceType _id used to disambiguate exact-name lookup."
170319
+ }))
170320
+ }).annotations({
170321
+ title: "GetSpacePreferenceParams",
170322
+ description: "Read the low-level Huly SpacePreference record attached to one space. Absence is returned as present=false."
170323
+ });
170324
+ var SpacePreferenceSchema = Schema_exports.Struct({
170325
+ preferenceId: SpacePreferenceId,
170326
+ attachedTo: SpaceId.annotations({
170327
+ description: "Raw Huly space ID stored in SpacePreference.attachedTo."
170328
+ }),
170329
+ attachedSpace: optionalOutput(SpaceSummarySchema),
170330
+ class: ObjectClassName.annotations({
170331
+ description: "Raw Huly class ID for the returned preference document."
170332
+ })
170333
+ }).annotations({
170334
+ title: "SpacePreference",
170335
+ description: "Low-level Huly SpacePreference row attached to a space. The published SDK model exposes no safe generic writable preference fields beyond attachedTo."
170336
+ });
170337
+ var ListSpacePreferencesResultSchema = Schema_exports.Struct({
170338
+ preferences: Schema_exports.Array(SpacePreferenceSchema),
170339
+ total: ListTotal
170340
+ });
170341
+ var GetSpacePreferenceResultSchema = Schema_exports.Union(
170342
+ Schema_exports.Struct({
170343
+ present: Schema_exports.Literal(true),
170344
+ preference: SpacePreferenceSchema
170345
+ }),
170346
+ Schema_exports.Struct({
170347
+ present: Schema_exports.Literal(false),
170348
+ attachedTo: SpaceId,
170349
+ attachedSpace: SpaceSummarySchema
170350
+ })
170351
+ );
170352
+ var listSpacePreferencesParamsJsonSchema = JSONSchema_exports.make(ListSpacePreferencesParamsSchema);
170353
+ var getSpacePreferenceParamsJsonSchema = JSONSchema_exports.make(GetSpacePreferenceParamsSchema);
170354
+ var parseListSpacePreferencesParams = Schema_exports.decodeUnknown(ListSpacePreferencesParamsSchema);
170355
+ var parseGetSpacePreferenceParams = Schema_exports.decodeUnknown(GetSpacePreferenceParamsSchema);
170356
+
170357
+ // src/domain/schemas/recurrence-primitives.ts
170358
+ var MAX_ZERO_BASED_MONTH_INDEX = 11;
170359
+ var MAX_MONTH_DAY = 31;
170360
+ var MIN_SET_POSITION = -366;
170361
+ var MAX_SET_POSITION = 366;
170362
+ var RecurrenceCount = PositiveInteger.pipe(Schema_exports.brand("RecurrenceCount")).annotations({
170363
+ identifier: "RecurrenceCount",
170364
+ title: "RecurrenceCount",
170365
+ description: "Positive recurrence occurrence count."
170366
+ });
170367
+ var RecurrenceInterval = PositiveInteger.pipe(Schema_exports.brand("RecurrenceInterval")).annotations({
170368
+ identifier: "RecurrenceInterval",
170369
+ title: "RecurrenceInterval",
170370
+ description: "Positive recurrence interval."
170371
+ });
170372
+ var MonthIndex = NonNegativeInteger.pipe(
170373
+ Schema_exports.lessThanOrEqualTo(MAX_ZERO_BASED_MONTH_INDEX),
170374
+ Schema_exports.brand("MonthIndex")
170375
+ ).annotations({
170376
+ identifier: "MonthIndex",
170377
+ title: "MonthIndex",
170378
+ description: "Zero-based calendar month index (0=January, 11=December)."
170379
+ });
170380
+ var MonthDayOrdinal = Integer.pipe(
170381
+ Schema_exports.between(1, MAX_MONTH_DAY),
170382
+ Schema_exports.brand("MonthDayOrdinal")
170383
+ ).annotations({
170384
+ identifier: "MonthDayOrdinal",
170385
+ title: "MonthDayOrdinal",
170386
+ description: "Calendar month day, 1 through 31. Huly's recurrence generator does not support negative month days."
170387
+ });
170388
+ var SetPositionOrdinal = Integer.pipe(
170389
+ Schema_exports.between(MIN_SET_POSITION, MAX_SET_POSITION),
170390
+ Schema_exports.filter((value3) => value3 !== 0, { message: () => "Set-position ordinal cannot be zero." }),
170391
+ Schema_exports.brand("SetPositionOrdinal")
170392
+ ).annotations({
170393
+ identifier: "SetPositionOrdinal",
170394
+ title: "SetPositionOrdinal",
170395
+ description: "Signed set-position ordinal, -366 through -1 or 1 through 366."
170396
+ });
170397
+
170319
170398
  // src/domain/schemas/sdk-discovery.ts
170320
170399
  var import_core10 = __toESM(require_lib5(), 1);
170321
170400
 
@@ -181098,7 +181177,7 @@ var makeDiagnosticsScope = Effect_exports.gen(function* () {
181098
181177
  });
181099
181178
 
181100
181179
  // src/version.ts
181101
- var VERSION = true ? "0.41.0" : "0.0.0-dev";
181180
+ var VERSION = true ? "0.42.0" : "0.0.0-dev";
181102
181181
 
181103
181182
  // src/mcp/json-schema-refs.ts
181104
181183
  var isJsonObject = (value3) => typeof value3 === "object" && value3 !== null && !Array.isArray(value3);
@@ -186856,6 +186935,10 @@ var firstClassToolHints = /* @__PURE__ */ new Map([
186856
186935
  [String(view.class.Viewlet), [toolHint("views", ["list_viewlets"])]],
186857
186936
  [String(view.class.ViewletDescriptor), [toolHint("views", ["list_viewlets"])]],
186858
186937
  [String(view.class.ViewletPreference), [toolHint("views", ["list_viewlets"])]],
186938
+ [
186939
+ String(preference.class.SpacePreference),
186940
+ [toolHint("preferences", ["list_space_preferences", "get_space_preference"])]
186941
+ ],
186859
186942
  [String(chunter.class.ChatMessage), [toolHint("channels", ["list_channel_messages", "send_channel_message"])]],
186860
186943
  [
186861
186944
  String(tracker.class.ProjectTargetPreference),
@@ -186888,6 +186971,7 @@ var contactCoveredRationale = "Current contacts tools expose person, organizatio
186888
186971
  var cardCoveredRationale = "Current card tools cover card spaces, master tags, and card CRUD.";
186889
186972
  var boardCoveredRationale = "Current board tools cover board discovery, board create/update/archive, board card list/get/create/update, workflow status/type resolution, assignees, members, location, cover, dates, archived-card deletion, board labels, saved views, menu pages, viewlets, and common board preference reads. Provider integrations and board deletion remain deferred.";
186890
186973
  var viewCoveredRationale = "Current view tools cover read-only saved filtered view discovery/get operations across modules plus viewlet descriptor and ViewletPreference configuration discovery. View and preference writes remain deferred.";
186974
+ var preferenceCoveredRationale = "Read-only generic SpacePreference discovery is covered by list_space_preferences and get_space_preference. Generic preference writes remain deferred because the published SDK model exposes no safe typed writable fields beyond attachedTo.";
186891
186975
  var boardNotMcpFacingRationale = "Board card cover values are exposed through board card create/update fields. The CardCover SDK export is the underlying type metadata rather than a separate LLM-facing resource.";
186892
186976
  var chunterCoveredRationale = "Current channel and direct-message tools cover channels, channel messages, one-to-one DM create/list/message list/send/update/delete, thread replies, channel member list/add/remove, join/leave, archive/unarchive, conversation star/closed state, and group direct-message create.";
186893
186977
  var coreCoveredRationale = "Existing tools expose user statuses, full-text search, blobs through storage/download flows, generic association/relation discovery/mutation helpers, class/interface/mixin, attribute, enum, plugin configuration, domain index configuration, sequence, and space type capability discovery.";
@@ -186982,6 +187066,12 @@ var runtimeParityRoutingRows = [
186982
187066
  "CommonBoardPreference",
186983
187067
  covered(["get_board_common_preference"], boardCoveredRationale)
186984
187068
  ),
187069
+ routingRow(
187070
+ String(preference.class.SpacePreference),
187071
+ "@hcengineering/preference",
187072
+ "SpacePreference",
187073
+ covered(["list_space_preferences", "get_space_preference"], preferenceCoveredRationale)
187074
+ ),
186985
187075
  routingRow(
186986
187076
  String(preference.class.Preference),
186987
187077
  "@hcengineering/preference",
@@ -199093,9 +199183,178 @@ var plannerTools = [
199093
199183
  )
199094
199184
  ];
199095
199185
 
199096
- // src/huly/operations/processes.ts
199186
+ // src/huly/operations/preferences.ts
199097
199187
  var import_core68 = __toESM(require_lib5(), 1);
199098
199188
 
199189
+ // src/huly/operations/spaces-projections.ts
199190
+ var toPermissionSummary = (permission) => ({
199191
+ id: PermissionId.make(permission._id),
199192
+ label: String(permission.label),
199193
+ description: optionalString(permission.description === void 0 ? void 0 : String(permission.description)),
199194
+ scope: permission.scope,
199195
+ objectClass: optionalObjectClassName(permission.objectClass),
199196
+ txClass: optionalObjectClassName(permission.txClass),
199197
+ forbid: permission.forbid
199198
+ });
199199
+ var descriptorId = (spaceType) => spaceType.descriptor;
199200
+ var toSpaceSummary = (space) => ({
199201
+ id: SpaceId.make(space._id),
199202
+ name: space.name,
199203
+ description: optionalString(space.description),
199204
+ class: ObjectClassName.make(space._class),
199205
+ type: space.type === void 0 ? void 0 : SpaceTypeId.make(space.type),
199206
+ private: space.private,
199207
+ archived: space.archived,
199208
+ autoJoin: space.autoJoin,
199209
+ membersCount: Count.make(space.members.length),
199210
+ ownersCount: Count.make(space.owners?.length ?? 0)
199211
+ });
199212
+ var roleAssignments = (space, spaceType, validRoleIds) => {
199213
+ if (spaceType === void 0) return void 0;
199214
+ const entries2 = spaceRoleAssignmentEntries(space, spaceType, validRoleIds);
199215
+ return entries2.length === 0 ? void 0 : entries2.map(([roleId, members]) => ({
199216
+ roleId: RoleId.make(roleId),
199217
+ members: members.map((member) => AccountUuid.make(member))
199218
+ }));
199219
+ };
199220
+ var toSpaceDetail = (space, spaceType, validRoleIds = /* @__PURE__ */ new Set()) => ({
199221
+ id: SpaceId.make(space._id),
199222
+ name: space.name,
199223
+ description: space.description,
199224
+ class: ObjectClassName.make(space._class),
199225
+ type: space.type === void 0 ? void 0 : SpaceTypeId.make(space.type),
199226
+ private: space.private,
199227
+ archived: space.archived,
199228
+ autoJoin: space.autoJoin,
199229
+ members: space.members.map((member) => AccountUuid.make(member)),
199230
+ owners: (space.owners ?? []).map((owner) => AccountUuid.make(owner)),
199231
+ roleAssignments: roleAssignments(space, spaceType, validRoleIds)
199232
+ });
199233
+ var spaceTypeSummary = (spaceType, descriptor3) => ({
199234
+ id: SpaceTypeId.make(spaceType._id),
199235
+ name: spaceType.name,
199236
+ shortDescription: optionalString(spaceType.shortDescription),
199237
+ descriptor: spaceType.descriptor,
199238
+ baseClass: optionalObjectClassName(descriptor3?.baseClass),
199239
+ targetClass: ObjectClassName.make(spaceType.targetClass),
199240
+ defaultMembers: (spaceType.members ?? []).map((member) => AccountUuid.make(member)),
199241
+ autoJoin: spaceType.autoJoin,
199242
+ rolesCount: Count.make(spaceType.roles)
199243
+ });
199244
+ var roleSummary = (role, permissionsById) => ({
199245
+ id: RoleId.make(role._id),
199246
+ name: role.name,
199247
+ permissions: role.permissions.map((permission) => PermissionId.make(permission)),
199248
+ permissionLabels: role.permissions.map((permissionId) => permissionsById.get(permissionId)).filter((permission) => permission !== void 0).map((permission) => String(permission.label))
199249
+ });
199250
+ var permissionSearchMatches = (permission, search) => {
199251
+ if (search === void 0) return true;
199252
+ const lower = search.toLowerCase();
199253
+ return [
199254
+ permission._id,
199255
+ String(permission.label),
199256
+ permission.description === void 0 ? "" : String(permission.description)
199257
+ ].some((value3) => value3.toLowerCase().includes(lower));
199258
+ };
199259
+
199260
+ // src/huly/operations/preferences.ts
199261
+ var spaceRef = (id) => toRef(SpaceId.make(id));
199262
+ var spaceMapById = (client, ids3) => Effect_exports.gen(function* () {
199263
+ const uniqueIds = [...new Set(ids3.map(String))];
199264
+ if (uniqueIds.length === 0) return /* @__PURE__ */ new Map();
199265
+ const spaces = yield* client.findAll(
199266
+ spaceClass,
199267
+ hulyQuery({ _id: { $in: uniqueIds.map((id) => toRef(SpaceId.make(id))) } }),
199268
+ { limit: uniqueIds.length }
199269
+ );
199270
+ return new Map(spaces.map((space) => [space._id, space]));
199271
+ });
199272
+ var preferenceResult = (item, attachedSpace) => ({
199273
+ preferenceId: SpacePreferenceId.make(item._id),
199274
+ attachedTo: SpaceId.make(item.attachedTo),
199275
+ ...attachedSpace === void 0 ? {} : { attachedSpace: toSpaceSummary(attachedSpace) },
199276
+ class: ObjectClassName.make(item._class)
199277
+ });
199278
+ var warnMissingAttachedSpaces = (diagnostics, items, spacesById) => {
199279
+ const missingIds = [...new Set(items.map((item) => String(item.attachedTo)).filter((id) => !spacesById.has(id)))].sort();
199280
+ if (missingIds.length === 0) return Effect_exports.void;
199281
+ return diagnostics.warnAgent({
199282
+ code: SpacePreferenceMetadataDegradedWarningCode,
199283
+ message: `Some SpacePreference attached space metadata was omitted because ${missingIds.length} attached space id(s) could not be resolved: ${missingIds.join(", ")}. Results still include raw attachedTo space IDs.`
199284
+ });
199285
+ };
199286
+ var listQuery = (targetSpace) => targetSpace === void 0 ? {} : { attachedTo: spaceRef(targetSpace._id) };
199287
+ var listSpacePreferences = (params) => Effect_exports.gen(function* () {
199288
+ const client = yield* HulyClient;
199289
+ const diagnostics = yield* Diagnostics;
199290
+ const targetSpace = params.space === void 0 ? void 0 : yield* findSpace(client, {
199291
+ space: params.space,
199292
+ ...params.includeArchived === void 0 ? {} : { includeArchived: params.includeArchived },
199293
+ ...params.class === void 0 ? {} : { class: params.class },
199294
+ ...params.type === void 0 ? {} : { type: params.type }
199295
+ });
199296
+ const preferences = yield* client.findAll(
199297
+ preference.class.SpacePreference,
199298
+ hulyQuery(listQuery(targetSpace)),
199299
+ { limit: clampLimit(params.limit), sort: { modifiedOn: import_core68.SortingOrder.Descending }, total: true }
199300
+ );
199301
+ const spacesById = yield* spaceMapById(client, preferences.map((item) => item.attachedTo));
199302
+ yield* warnMissingAttachedSpaces(diagnostics, preferences, spacesById);
199303
+ return {
199304
+ preferences: preferences.map((item) => preferenceResult(item, spacesById.get(item.attachedTo))),
199305
+ total: listTotal(preferences.total)
199306
+ };
199307
+ });
199308
+ var getSpacePreference = (params) => Effect_exports.gen(function* () {
199309
+ const client = yield* HulyClient;
199310
+ const targetSpace = yield* findSpace(client, params);
199311
+ const item = yield* client.findOne(
199312
+ preference.class.SpacePreference,
199313
+ hulyQuery({ attachedTo: spaceRef(targetSpace._id) })
199314
+ );
199315
+ if (item === void 0) {
199316
+ return {
199317
+ present: false,
199318
+ attachedTo: SpaceId.make(targetSpace._id),
199319
+ attachedSpace: toSpaceSummary(targetSpace)
199320
+ };
199321
+ }
199322
+ return {
199323
+ present: true,
199324
+ preference: preferenceResult(item, targetSpace)
199325
+ };
199326
+ });
199327
+
199328
+ // src/mcp/tools/preferences.ts
199329
+ var CATEGORY27 = "preferences";
199330
+ var preferenceTools = [
199331
+ defineTool(
199332
+ {
199333
+ name: "list_space_preferences",
199334
+ description: "List low-level Huly SpacePreference records. These generic preference rows are attached to spaces and the published SDK exposes only the attached space link, so this tool is read-only discovery. Omit space to list recent rows across spaces, or pass a space _id/exact name with optional class/type narrowing to inspect one space.",
199335
+ category: CATEGORY27,
199336
+ inputSchema: listSpacePreferencesParamsJsonSchema,
199337
+ resultSchema: ListSpacePreferencesResultSchema
199338
+ },
199339
+ parseListSpacePreferencesParams,
199340
+ listSpacePreferences
199341
+ ),
199342
+ defineTool(
199343
+ {
199344
+ name: "get_space_preference",
199345
+ description: "Read the low-level Huly SpacePreference record attached to one space. Accepts a space _id or exact name with optional class/type narrowing. Returns present=false when the space exists but no generic SpacePreference row exists; use module-specific preference tools for writable preference payloads.",
199346
+ category: CATEGORY27,
199347
+ inputSchema: getSpacePreferenceParamsJsonSchema,
199348
+ resultSchema: GetSpacePreferenceResultSchema
199349
+ },
199350
+ parseGetSpacePreferenceParams,
199351
+ getSpacePreference
199352
+ )
199353
+ ];
199354
+
199355
+ // src/huly/operations/processes.ts
199356
+ var import_core69 = __toESM(require_lib5(), 1);
199357
+
199099
199358
  // src/huly/process-plugin.ts
199100
199359
  var import_platform2 = __toESM(require_lib(), 1);
199101
199360
  var processId = "process";
@@ -199206,7 +199465,7 @@ var resolveProcess = (client, identifier2) => Effect_exports.gen(function* () {
199206
199465
  const allProcesses = yield* client.findAll(
199207
199466
  processPlugin.class.Process,
199208
199467
  {},
199209
- { sort: { name: import_core68.SortingOrder.Ascending } }
199468
+ { sort: { name: import_core69.SortingOrder.Ascending } }
199210
199469
  );
199211
199470
  const matches = [...allProcesses].filter(
199212
199471
  (process4) => normalizeForComparison(process4.name) === normalizeForComparison(identifier2)
@@ -199310,7 +199569,7 @@ var listProcesses = (params) => Effect_exports.gen(function* () {
199310
199569
  const processes = yield* client.findAll(
199311
199570
  processPlugin.class.Process,
199312
199571
  query,
199313
- { limit: clampLimit(params.limit), sort: { name: import_core68.SortingOrder.Ascending } }
199572
+ { limit: clampLimit(params.limit), sort: { name: import_core69.SortingOrder.Ascending } }
199314
199573
  );
199315
199574
  const data = yield* loadProcessDefinitionData(client, [...processes]);
199316
199575
  const result = {
@@ -199327,12 +199586,12 @@ var getProcess = (params) => Effect_exports.gen(function* () {
199327
199586
  client.findAll(
199328
199587
  processPlugin.class.State,
199329
199588
  { process: process4._id },
199330
- { sort: { rank: import_core68.SortingOrder.Ascending } }
199589
+ { sort: { rank: import_core69.SortingOrder.Ascending } }
199331
199590
  ),
199332
199591
  client.findAll(
199333
199592
  processPlugin.class.Transition,
199334
199593
  { process: process4._id },
199335
- { sort: { rank: import_core68.SortingOrder.Ascending } }
199594
+ { sort: { rank: import_core69.SortingOrder.Ascending } }
199336
199595
  )
199337
199596
  ]);
199338
199597
  const result = processDetail({
@@ -199357,7 +199616,7 @@ var listExecutions = (params) => Effect_exports.gen(function* () {
199357
199616
  const executions = yield* client.findAll(
199358
199617
  processPlugin.class.Execution,
199359
199618
  query,
199360
- { limit: clampLimit(params.limit), sort: { modifiedOn: import_core68.SortingOrder.Descending } }
199619
+ { limit: clampLimit(params.limit), sort: { modifiedOn: import_core69.SortingOrder.Descending } }
199361
199620
  );
199362
199621
  const processIds = executions.map((execution) => execution.process);
199363
199622
  const processLookup = processIds.length === 0 ? Effect_exports.succeed(/* @__PURE__ */ new Map()) : client.findAll(
@@ -199386,7 +199645,7 @@ var startProcess = (params) => Effect_exports.gen(function* () {
199386
199645
  const transitions = yield* client.findAll(
199387
199646
  processPlugin.class.Transition,
199388
199647
  { process: process4._id },
199389
- { sort: { rank: import_core68.SortingOrder.Ascending } }
199648
+ { sort: { rank: import_core69.SortingOrder.Ascending } }
199390
199649
  );
199391
199650
  const transition = initialTransition(transitions);
199392
199651
  if (transition === void 0) {
@@ -199428,7 +199687,7 @@ var startProcess = (params) => Effect_exports.gen(function* () {
199428
199687
  );
199429
199688
  }
199430
199689
  }
199431
- const executionId = (0, import_core68.generateId)();
199690
+ const executionId = (0, import_core69.generateId)();
199432
199691
  const executionData = {
199433
199692
  process: process4._id,
199434
199693
  card: card._id,
@@ -199481,13 +199740,13 @@ var cancelExecution = (params) => Effect_exports.gen(function* () {
199481
199740
  });
199482
199741
 
199483
199742
  // src/mcp/tools/processes.ts
199484
- var CATEGORY27 = "processes";
199743
+ var CATEGORY28 = "processes";
199485
199744
  var processTools = [
199486
199745
  defineTool(
199487
199746
  {
199488
199747
  name: "list_processes",
199489
199748
  description: "List read-only Huly Process workflow definitions. Optionally filter by the master tag/card type that workflows attach to. Returns process IDs, names, attached card type, automation flags, and state/transition counts.",
199490
- category: CATEGORY27,
199749
+ category: CATEGORY28,
199491
199750
  inputSchema: listProcessesParamsJsonSchema,
199492
199751
  resultSchema: ListProcessesResultSchema
199493
199752
  },
@@ -199498,7 +199757,7 @@ var processTools = [
199498
199757
  {
199499
199758
  name: "get_process",
199500
199759
  description: "Get one Huly Process workflow definition by process ID or exact display name. If a name is ambiguous, the tool returns a typed error with candidate IDs instead of guessing.",
199501
- category: CATEGORY27,
199760
+ category: CATEGORY28,
199502
199761
  inputSchema: getProcessParamsJsonSchema,
199503
199762
  resultSchema: ProcessDetailSchema
199504
199763
  },
@@ -199509,7 +199768,7 @@ var processTools = [
199509
199768
  {
199510
199769
  name: "list_process_executions",
199511
199770
  description: "List read-only Huly Process workflow executions. Supports filters by process ID/name, card/document ID/title, and status. Rows are enriched with process name, card title, and current state title when available.",
199512
- category: CATEGORY27,
199771
+ category: CATEGORY28,
199513
199772
  inputSchema: listExecutionsParamsJsonSchema,
199514
199773
  resultSchema: ListExecutionsResultSchema
199515
199774
  },
@@ -199520,7 +199779,7 @@ var processTools = [
199520
199779
  {
199521
199780
  name: "start_process",
199522
199781
  description: "Start a new active Huly Process workflow execution on a card/document. Accepts process ID or exact process name, and card/document ID or exact title; ambiguous names or titles fail with candidate IDs. This is not idempotent: each successful call creates a new execution unless the process forbids parallel active executions for the same card, in which case the existing active execution ID is returned in a typed error.",
199523
- category: CATEGORY27,
199782
+ category: CATEGORY28,
199524
199783
  inputSchema: startProcessParamsJsonSchema,
199525
199784
  annotations: {
199526
199785
  readOnlyHint: false,
@@ -199537,7 +199796,7 @@ var processTools = [
199537
199796
  {
199538
199797
  name: "cancel_execution",
199539
199798
  description: "Idempotently cancel one Huly Process execution by execution ID. Active executions are marked cancelled; already-cancelled executions succeed with cancelled=false; completed executions fail without changing history.",
199540
- category: CATEGORY27,
199799
+ category: CATEGORY28,
199541
199800
  inputSchema: cancelExecutionParamsJsonSchema,
199542
199801
  annotations: {
199543
199802
  readOnlyHint: false,
@@ -199553,7 +199812,7 @@ var processTools = [
199553
199812
  ];
199554
199813
 
199555
199814
  // src/huly/operations/project-target-preferences.ts
199556
- var import_core69 = __toESM(require_lib5(), 1);
199815
+ var import_core70 = __toESM(require_lib5(), 1);
199557
199816
  var projectMapById = (client, ids3) => Effect_exports.gen(function* () {
199558
199817
  const uniqueIds = [...new Set(ids3)];
199559
199818
  if (uniqueIds.length === 0) return /* @__PURE__ */ new Map();
@@ -199565,7 +199824,7 @@ var projectMapById = (client, ids3) => Effect_exports.gen(function* () {
199565
199824
  const entries2 = projects.map((project3) => [project3._id, project3]);
199566
199825
  return new Map(entries2);
199567
199826
  });
199568
- var preferenceResult = (preference2, project3) => ({
199827
+ var preferenceResult2 = (preference2, project3) => ({
199569
199828
  preferenceId: ProjectTargetPreferenceId.make(preference2._id),
199570
199829
  attachedTo: SpaceId.make(preference2.attachedTo),
199571
199830
  project: project3 === void 0 ? void 0 : ProjectIdentifier.make(project3.identifier),
@@ -199591,11 +199850,11 @@ var listProjectTargetPreferences = (params) => Effect_exports.gen(function* () {
199591
199850
  hulyQuery(
199592
199851
  project3 === void 0 ? {} : { attachedTo: project3._id }
199593
199852
  ),
199594
- { limit: clampLimit(params.limit), sort: { usedOn: import_core69.SortingOrder.Descending }, total: true }
199853
+ { limit: clampLimit(params.limit), sort: { usedOn: import_core70.SortingOrder.Descending }, total: true }
199595
199854
  );
199596
199855
  const projects = yield* projectMapById(client, preferences.map((preference2) => preference2.attachedTo));
199597
199856
  return {
199598
- preferences: preferences.map((preference2) => preferenceResult(preference2, projects.get(preference2.attachedTo))),
199857
+ preferences: preferences.map((preference2) => preferenceResult2(preference2, projects.get(preference2.attachedTo))),
199599
199858
  total: listTotal(preferences.total)
199600
199859
  };
199601
199860
  });
@@ -199607,7 +199866,7 @@ var upsertProjectTargetPreference = (params) => Effect_exports.gen(function* ()
199607
199866
  hulyQuery({ attachedTo: project3._id })
199608
199867
  );
199609
199868
  if (existing === void 0) {
199610
- const preferenceId = (0, import_core69.generateId)();
199869
+ const preferenceId = (0, import_core70.generateId)();
199611
199870
  const data = {
199612
199871
  attachedTo: project3._id,
199613
199872
  usedOn,
@@ -199620,7 +199879,7 @@ var upsertProjectTargetPreference = (params) => Effect_exports.gen(function* ()
199620
199879
  preferenceId
199621
199880
  );
199622
199881
  return {
199623
- preference: preferenceResult({ ...data, _id: preferenceId }, project3),
199882
+ preference: preferenceResult2({ ...data, _id: preferenceId }, project3),
199624
199883
  created: true
199625
199884
  };
199626
199885
  }
@@ -199635,19 +199894,19 @@ var upsertProjectTargetPreference = (params) => Effect_exports.gen(function* ()
199635
199894
  update5
199636
199895
  );
199637
199896
  return {
199638
- preference: preferenceResult({ ...existing, ...update5 }, project3),
199897
+ preference: preferenceResult2({ ...existing, ...update5 }, project3),
199639
199898
  created: false
199640
199899
  };
199641
199900
  });
199642
199901
 
199643
199902
  // src/mcp/tools/project-target-preferences.ts
199644
- var CATEGORY28 = "projects";
199903
+ var CATEGORY29 = "projects";
199645
199904
  var projectTargetPreferenceTools = [
199646
199905
  defineTool(
199647
199906
  {
199648
199907
  name: "list_project_target_preferences",
199649
199908
  description: "List low-level per-project tracker target preference records. These Huly ProjectTargetPreference records are attached to projects and used by tracker UI/workflows to remember target-related preference props. Omit project to list recent preferences across projects, or pass a project identifier to inspect one project's preference. Props are SDK-open key/value payloads.",
199650
- category: CATEGORY28,
199909
+ category: CATEGORY29,
199651
199910
  inputSchema: listProjectTargetPreferencesParamsJsonSchema,
199652
199911
  resultSchema: ListProjectTargetPreferencesResultSchema
199653
199912
  },
@@ -199658,7 +199917,7 @@ var projectTargetPreferenceTools = [
199658
199917
  {
199659
199918
  name: "upsert_project_target_preference",
199660
199919
  description: "Create or update the low-level ProjectTargetPreference record for a project. This refreshes usedOn and merges SDK-open target preference props by key. Use for tracker SDK parity or advanced administration; ordinary project and issue workflows usually do not need this tool.",
199661
- category: CATEGORY28,
199920
+ category: CATEGORY29,
199662
199921
  inputSchema: upsertProjectTargetPreferenceParamsJsonSchema,
199663
199922
  resultSchema: UpsertProjectTargetPreferenceResultSchema
199664
199923
  },
@@ -199668,7 +199927,7 @@ var projectTargetPreferenceTools = [
199668
199927
  ];
199669
199928
 
199670
199929
  // src/huly/operations/projects.ts
199671
- var import_core70 = __toESM(require_lib5(), 1);
199930
+ var import_core71 = __toESM(require_lib5(), 1);
199672
199931
  var import_tracker7 = __toESM(require_lib40(), 1);
199673
199932
  var listProjects = (params) => Effect_exports.gen(function* () {
199674
199933
  const client = yield* HulyClient;
@@ -199683,7 +199942,7 @@ var listProjects = (params) => Effect_exports.gen(function* () {
199683
199942
  {
199684
199943
  limit,
199685
199944
  sort: {
199686
- name: import_core70.SortingOrder.Ascending
199945
+ name: import_core71.SortingOrder.Ascending
199687
199946
  }
199688
199947
  }
199689
199948
  );
@@ -199751,7 +200010,7 @@ var createProject = (params) => Effect_exports.gen(function* () {
199751
200010
  created: false
199752
200011
  };
199753
200012
  }
199754
- const projectId = (0, import_core70.generateId)();
200013
+ const projectId = (0, import_core71.generateId)();
199755
200014
  const projectData = {
199756
200015
  name: params.name,
199757
200016
  description: params.description ?? "",
@@ -199769,10 +200028,10 @@ var createProject = (params) => Effect_exports.gen(function* () {
199769
200028
  // tracker.ids.ClassingProjectType is the default classic tracker ProjectType.
199770
200029
  type: tracker.ids.ClassingProjectType
199771
200030
  };
199772
- const spaceRef = toRef(projectId);
200031
+ const spaceRef2 = toRef(projectId);
199773
200032
  yield* client.createDoc(
199774
200033
  tracker.class.Project,
199775
- spaceRef,
200034
+ spaceRef2,
199776
200035
  projectData,
199777
200036
  projectId
199778
200037
  );
@@ -199809,13 +200068,13 @@ var deleteProject = (params) => Effect_exports.gen(function* () {
199809
200068
  });
199810
200069
 
199811
200070
  // src/mcp/tools/projects.ts
199812
- var CATEGORY29 = "projects";
200071
+ var CATEGORY30 = "projects";
199813
200072
  var projectTools = [
199814
200073
  defineTool(
199815
200074
  {
199816
200075
  name: "list_projects",
199817
200076
  description: "List all Huly projects. Returns projects sorted by name. Supports filtering by archived status.",
199818
- category: CATEGORY29,
200077
+ category: CATEGORY30,
199819
200078
  inputSchema: listProjectsParamsJsonSchema,
199820
200079
  resultSchema: ListProjectsResultSchema
199821
200080
  },
@@ -199826,7 +200085,7 @@ var projectTools = [
199826
200085
  {
199827
200086
  name: "get_project",
199828
200087
  description: "Get full details of a Huly project including its statuses. Returns project name, description, archived flag, default status, and all available statuses.",
199829
- category: CATEGORY29,
200088
+ category: CATEGORY30,
199830
200089
  inputSchema: getProjectParamsJsonSchema,
199831
200090
  resultSchema: GetProjectResultSchema
199832
200091
  },
@@ -199837,7 +200096,7 @@ var projectTools = [
199837
200096
  {
199838
200097
  name: "list_statuses",
199839
200098
  description: "List all issue statuses for a Huly project with workflow category and default info. Returns status name, category, and isDefault. Use this to discover valid statuses before creating or updating issues.",
199840
- category: CATEGORY29,
200099
+ category: CATEGORY30,
199841
200100
  inputSchema: listStatusesParamsJsonSchema,
199842
200101
  resultSchema: ListStatusesResultSchema
199843
200102
  },
@@ -199848,7 +200107,7 @@ var projectTools = [
199848
200107
  {
199849
200108
  name: "create_project",
199850
200109
  description: "Create a new Huly tracker project. Idempotent: returns existing project if one with the same identifier already exists (created=false). Identifier must be 1-5 uppercase alphanumeric chars starting with a letter.",
199851
- category: CATEGORY29,
200110
+ category: CATEGORY30,
199852
200111
  inputSchema: createProjectParamsJsonSchema,
199853
200112
  resultSchema: CreateProjectResultSchema
199854
200113
  },
@@ -199859,7 +200118,7 @@ var projectTools = [
199859
200118
  {
199860
200119
  name: "update_project",
199861
200120
  description: "Update a Huly project. Only provided fields are modified. Set description to null to clear it.",
199862
- category: CATEGORY29,
200121
+ category: CATEGORY30,
199863
200122
  inputSchema: updateProjectParamsJsonSchema,
199864
200123
  resultSchema: UpdateProjectResultSchema
199865
200124
  },
@@ -199870,7 +200129,7 @@ var projectTools = [
199870
200129
  {
199871
200130
  name: "delete_project",
199872
200131
  description: "Permanently delete a Huly project. All issues, milestones, and components in this project will be orphaned. This action cannot be undone.",
199873
- category: CATEGORY29,
200132
+ category: CATEGORY30,
199874
200133
  inputSchema: deleteProjectParamsJsonSchema,
199875
200134
  resultSchema: DeleteProjectResultSchema
199876
200135
  },
@@ -199880,7 +200139,7 @@ var projectTools = [
199880
200139
  ];
199881
200140
 
199882
200141
  // src/huly/operations/recruiting-applicants.ts
199883
- var import_core72 = __toESM(require_lib5(), 1);
200142
+ var import_core73 = __toESM(require_lib5(), 1);
199884
200143
  var import_rank6 = __toESM(require_lib36(), 1);
199885
200144
 
199886
200145
  // src/huly/recruit-plugin.ts
@@ -199989,7 +200248,7 @@ var candidateSearchFilter = (query) => {
199989
200248
  };
199990
200249
 
199991
200250
  // src/huly/operations/recruiting-shared.ts
199992
- var import_core71 = __toESM(require_lib5(), 1);
200251
+ var import_core72 = __toESM(require_lib5(), 1);
199993
200252
  var prefixedNumber = (identifier2, prefix) => {
199994
200253
  const match16 = new RegExp(`^${prefix}-(\\d+)$`, "i").exec(identifier2);
199995
200254
  return match16 === null ? void 0 : Number(match16[1]);
@@ -200192,7 +200451,7 @@ var vacancyNameSearchFilter = (query) => {
200192
200451
  const search = query?.trim() ?? "";
200193
200452
  return search === "" ? {} : { name: { $like: `%${escapeLikeWildcards(search)}%` } };
200194
200453
  };
200195
- var sortByModifiedDescending = { sort: { modifiedOn: import_core71.SortingOrder.Descending } };
200454
+ var sortByModifiedDescending = { sort: { modifiedOn: import_core72.SortingOrder.Descending } };
200196
200455
 
200197
200456
  // src/huly/operations/recruiting-applicants.ts
200198
200457
  var resolveOptionalVacancy = (client, identifier2) => identifier2 === void 0 ? Effect_exports.succeed(void 0) : resolveVacancy(client, identifier2);
@@ -200255,7 +200514,7 @@ var listRecruitingApplicants = (params) => Effect_exports.gen(function* () {
200255
200514
  hulyQuery(query),
200256
200515
  {
200257
200516
  ...requiresInMemoryStatusFilter ? {} : { limit },
200258
- sort: { modifiedOn: import_core72.SortingOrder.Descending }
200517
+ sort: { modifiedOn: import_core73.SortingOrder.Descending }
200259
200518
  }
200260
200519
  );
200261
200520
  const refs = yield* Effect_exports.forEach(applicants, (applicant) => Effect_exports.gen(function* () {
@@ -200286,12 +200545,12 @@ var createRecruitingApplicant = (params) => Effect_exports.gen(function* () {
200286
200545
  const assignee = params.assignee === void 0 ? null : yield* resolveAssignee2(client, params.assignee);
200287
200546
  const number8 = yield* incrementSequence(client, recruitIds.class.Applicant, "applicant");
200288
200547
  const identifier2 = applicantIdentifierFromNumber(number8);
200289
- const applicantId = (0, import_core72.generateId)();
200548
+ const applicantId = (0, import_core73.generateId)();
200290
200549
  const { candidate } = yield* ensureCandidateMixin(client, person, {});
200291
200550
  const lastApplicant = yield* client.findOne(
200292
200551
  recruitIds.class.Applicant,
200293
200552
  hulyQuery({ space: vacancy._id }),
200294
- { sort: { rank: import_core72.SortingOrder.Descending } }
200553
+ { sort: { rank: import_core73.SortingOrder.Descending } }
200295
200554
  );
200296
200555
  const data = {
200297
200556
  status,
@@ -200375,7 +200634,7 @@ var deleteRecruitingApplicant = (params) => Effect_exports.gen(function* () {
200375
200634
  });
200376
200635
 
200377
200636
  // src/huly/operations/recruiting-candidates.ts
200378
- var import_core73 = __toESM(require_lib5(), 1);
200637
+ var import_core74 = __toESM(require_lib5(), 1);
200379
200638
  var candidateMatchesQuery = (candidate, query) => {
200380
200639
  const normalized = normalizeForComparison(query?.trim() ?? "");
200381
200640
  if (normalized === "") return true;
@@ -200428,7 +200687,7 @@ var listRecruitingCandidates = (params) => Effect_exports.gen(function* () {
200428
200687
  const candidates = yield* client.findAll(
200429
200688
  recruitIds.mixin.Candidate,
200430
200689
  hulyQuery(candidateSearchFilter(params.query)),
200431
- { limit: listLimit(params.limit), sort: { modifiedOn: import_core73.SortingOrder.Descending } }
200690
+ { limit: listLimit(params.limit), sort: { modifiedOn: import_core74.SortingOrder.Descending } }
200432
200691
  );
200433
200692
  const filtered = candidates.filter((candidate) => candidateMatchesQuery(candidate, params.query));
200434
200693
  const emailMap = yield* Effect_exports.map(
@@ -200469,7 +200728,7 @@ var listRecruitingSkills = (params) => Effect_exports.gen(function* () {
200469
200728
  ...categoryFilter,
200470
200729
  ...titleFilter
200471
200730
  }),
200472
- { limit: listLimit(params.limit), sort: { title: import_core73.SortingOrder.Ascending } }
200731
+ { limit: listLimit(params.limit), sort: { title: import_core74.SortingOrder.Ascending } }
200473
200732
  );
200474
200733
  return { skills: skillTags.map(toSkillSummary), total: Count.make(skillTags.length) };
200475
200734
  });
@@ -200516,7 +200775,7 @@ var removeRecruitingCandidateSkill = (params) => Effect_exports.gen(function* ()
200516
200775
  });
200517
200776
 
200518
200777
  // src/huly/operations/recruiting-vacancies.ts
200519
- var import_core74 = __toESM(require_lib5(), 1);
200778
+ var import_core75 = __toESM(require_lib5(), 1);
200520
200779
  var companySummary = (client, company) => company === void 0 ? Effect_exports.succeed(void 0) : Effect_exports.map(
200521
200780
  client.findOne(contact.class.Organization, { _id: company }),
200522
200781
  (org) => org === void 0 ? void 0 : { id: DocId.make(org._id), name: org.name }
@@ -200562,7 +200821,7 @@ var listRecruitingVacancyTypes = (params) => Effect_exports.gen(function* () {
200562
200821
  const types = yield* client.findAll(
200563
200822
  task.class.ProjectType,
200564
200823
  hulyQuery({ descriptor: toRef(recruitIds.descriptors.VacancyType) }),
200565
- { limit: listLimit(params.limit), sort: { name: import_core74.SortingOrder.Ascending } }
200824
+ { limit: listLimit(params.limit), sort: { name: import_core75.SortingOrder.Ascending } }
200566
200825
  );
200567
200826
  const summaries = types.map(toVacancyTypeSummary);
200568
200827
  return { types: summaries, total: Count.make(summaries.length) };
@@ -200598,7 +200857,7 @@ var createRecruitingVacancy = (params) => Effect_exports.gen(function* () {
200598
200857
  const client = yield* HulyClient;
200599
200858
  const type = yield* resolveVacancyType(client, params.type);
200600
200859
  const company = params.company === void 0 ? void 0 : (yield* resolveOrganizationByIdentifier(client, params.company))._id;
200601
- const vacancyId = (0, import_core74.generateId)();
200860
+ const vacancyId = (0, import_core75.generateId)();
200602
200861
  const number8 = yield* incrementSequence(client, recruitIds.class.Vacancy, "vacancy");
200603
200862
  const fullDescription = yield* uploadFullDescription(client, vacancyId, params.fullDescription);
200604
200863
  const accountUuid = client.getAccountUuid();
@@ -200670,7 +200929,7 @@ var archiveRecruitingVacancy = (params) => setVacancyArchiveState(params.vacancy
200670
200929
  var unarchiveRecruitingVacancy = (params) => setVacancyArchiveState(params.vacancy, false);
200671
200930
 
200672
200931
  // src/huly/operations/recruiting-matches.ts
200673
- var import_core75 = __toESM(require_lib5(), 1);
200932
+ var import_core76 = __toESM(require_lib5(), 1);
200674
200933
  var matchesText2 = (match16, query) => {
200675
200934
  const normalized = normalizeForComparison(query ?? "");
200676
200935
  if (normalized === "") return true;
@@ -200715,7 +200974,7 @@ var listRecruitingApplicantMatches = (params) => Effect_exports.gen(function* ()
200715
200974
  const matches = yield* client.findAll(
200716
200975
  recruitIds.class.ApplicantMatch,
200717
200976
  hulyQuery(query),
200718
- { sort: { modifiedOn: import_core75.SortingOrder.Descending } }
200977
+ { sort: { modifiedOn: import_core76.SortingOrder.Descending } }
200719
200978
  );
200720
200979
  const limited = matches.filter((match16) => matchesText2(match16, params.query)).slice(0, listLimit(params.limit));
200721
200980
  const refs = yield* Effect_exports.forEach(limited, (match16) => toMatchRef(client, match16));
@@ -200734,11 +200993,11 @@ var getRecruitingApplicantMatch = (params) => Effect_exports.gen(function* () {
200734
200993
  });
200735
200994
 
200736
200995
  // src/huly/operations/recruiting-opinions.ts
200737
- var import_core77 = __toESM(require_lib5(), 1);
200996
+ var import_core78 = __toESM(require_lib5(), 1);
200738
200997
 
200739
200998
  // src/huly/operations/recruiting-reviews.ts
200740
200999
  var import_calendar15 = __toESM(require_lib25(), 1);
200741
- var import_core76 = __toESM(require_lib5(), 1);
201000
+ var import_core77 = __toESM(require_lib5(), 1);
200742
201001
  var REVIEW_DEFAULT_DURATION_MINUTES = 30;
200743
201002
  var MILLISECONDS_PER_SECOND = 1e3;
200744
201003
  var SECONDS_PER_MINUTE2 = 60;
@@ -200858,7 +201117,7 @@ var listRecruitingReviews = (params) => Effect_exports.gen(function* () {
200858
201117
  const reviews = yield* client.findAll(
200859
201118
  recruitIds.class.Review,
200860
201119
  hulyQuery(query),
200861
- { sort: { date: import_core76.SortingOrder.Descending } }
201120
+ { sort: { date: import_core77.SortingOrder.Descending } }
200862
201121
  );
200863
201122
  const limited = reviews.filter((review) => matchesReviewText(review, params.query)).slice(
200864
201123
  0,
@@ -200879,7 +201138,7 @@ var createRecruitingReview = (params) => Effect_exports.gen(function* () {
200879
201138
  const application = yield* optionalApplication(client, params.application, person);
200880
201139
  const company = params.company === void 0 ? void 0 : (yield* resolveOrganizationByIdentifier(client, params.company))._id;
200881
201140
  const number8 = yield* incrementSequence(client, recruitIds.class.Review, "review");
200882
- const reviewId = (0, import_core76.generateId)();
201141
+ const reviewId = (0, import_core77.generateId)();
200883
201142
  const data = {
200884
201143
  number: number8,
200885
201144
  date: params.date,
@@ -201028,7 +201287,7 @@ var listRecruitingOpinions = (params) => Effect_exports.gen(function* () {
201028
201287
  const opinions = yield* client.findAll(
201029
201288
  recruitIds.class.Opinion,
201030
201289
  hulyQuery({ attachedTo: review._id }),
201031
- { limit: listLimit(params.limit), sort: { modifiedOn: import_core77.SortingOrder.Descending } }
201290
+ { limit: listLimit(params.limit), sort: { modifiedOn: import_core78.SortingOrder.Descending } }
201032
201291
  );
201033
201292
  const refs = yield* Effect_exports.forEach(opinions, (opinion) => opinionRefFromDoc(client, opinion, review));
201034
201293
  return { opinions: refs, total: Count.make(refs.length) };
@@ -201044,7 +201303,7 @@ var createRecruitingOpinion = (params) => Effect_exports.gen(function* () {
201044
201303
  const client = yield* HulyClient;
201045
201304
  const review = yield* findReview(client, params.review);
201046
201305
  const number8 = yield* incrementSequence(client, recruitIds.class.Opinion, "opinion");
201047
- const opinionId = (0, import_core77.generateId)();
201306
+ const opinionId = (0, import_core78.generateId)();
201048
201307
  const data = {
201049
201308
  number: number8,
201050
201309
  value: params.value,
@@ -201116,13 +201375,13 @@ var deleteRecruitingOpinion = (params) => Effect_exports.gen(function* () {
201116
201375
  });
201117
201376
 
201118
201377
  // src/mcp/tools/recruiting-extended.ts
201119
- var CATEGORY30 = "recruiting";
201378
+ var CATEGORY31 = "recruiting";
201120
201379
  var recruitingExtendedTools = [
201121
201380
  defineTool(
201122
201381
  {
201123
201382
  name: "list_recruiting_applicant_matches",
201124
201383
  description: "List read-only generated Recruiting applicant matches. ApplicantMatch fields are generated by Huly; this tool only reads them. Filter by candidate, complete state, vacancy/summary query, and limit.",
201125
- category: CATEGORY30,
201384
+ category: CATEGORY31,
201126
201385
  inputSchema: listRecruitingApplicantMatchesParamsJsonSchema,
201127
201386
  resultSchema: ListRecruitingApplicantMatchesResultSchema
201128
201387
  },
@@ -201133,7 +201392,7 @@ var recruitingExtendedTools = [
201133
201392
  {
201134
201393
  name: "get_recruiting_applicant_match",
201135
201394
  description: "Get one read-only generated Recruiting applicant match by raw applicant-match _id. Returns candidate, complete state, generated vacancy text, summary, response markdown, and timestamps.",
201136
- category: CATEGORY30,
201395
+ category: CATEGORY31,
201137
201396
  inputSchema: getRecruitingApplicantMatchParamsJsonSchema,
201138
201397
  resultSchema: ApplicantMatchDetailSchema
201139
201398
  },
@@ -201144,7 +201403,7 @@ var recruitingExtendedTools = [
201144
201403
  {
201145
201404
  name: "list_recruiting_reviews",
201146
201405
  description: "List Recruiting reviews/interviews as stable refs. Filter by candidate, application, date range, title/verdict/location query, and limit. Review locators use raw _id, RVE-<number>, number, or exact title.",
201147
- category: CATEGORY30,
201406
+ category: CATEGORY31,
201148
201407
  inputSchema: listRecruitingReviewsParamsJsonSchema,
201149
201408
  resultSchema: ListRecruitingReviewsResultSchema
201150
201409
  },
@@ -201155,7 +201414,7 @@ var recruitingExtendedTools = [
201155
201414
  {
201156
201415
  name: "get_recruiting_review",
201157
201416
  description: "Get one Recruiting review by raw _id, RVE-<number>, bare number, or exact title. Optional candidate/application disambiguate. Returns schedule, markdown description, verdict, participant refs, company, application, and opinion count.",
201158
- category: CATEGORY30,
201417
+ category: CATEGORY31,
201159
201418
  inputSchema: getRecruitingReviewParamsJsonSchema,
201160
201419
  resultSchema: ReviewDetailSchema
201161
201420
  },
@@ -201166,7 +201425,7 @@ var recruitingExtendedTools = [
201166
201425
  {
201167
201426
  name: "create_recruiting_review",
201168
201427
  description: "Create a Recruiting review/interview like the Huly UI: increments RVE sequence, attaches to the candidate reviews collection, stores markdown description as Huly markup, defaults dueDate to 30 minutes after date, and recruit-enables the person if needed.",
201169
- category: CATEGORY30,
201428
+ category: CATEGORY31,
201170
201429
  inputSchema: createRecruitingReviewParamsJsonSchema,
201171
201430
  resultSchema: RecruitingReviewMutationResultSchema
201172
201431
  },
@@ -201177,7 +201436,7 @@ var recruitingExtendedTools = [
201177
201436
  {
201178
201437
  name: "update_recruiting_review",
201179
201438
  description: "Update a Recruiting review. review accepts raw _id, RVE-<number>, number, or exact title; candidate/applicationContext only disambiguate. Pass null for description, verdict, application, company, or location to clear.",
201180
- category: CATEGORY30,
201439
+ category: CATEGORY31,
201181
201440
  inputSchema: updateRecruitingReviewParamsJsonSchema,
201182
201441
  resultSchema: RecruitingReviewMutationResultSchema
201183
201442
  },
@@ -201188,7 +201447,7 @@ var recruitingExtendedTools = [
201188
201447
  {
201189
201448
  name: "delete_recruiting_review",
201190
201449
  description: "Delete a Recruiting review with Huly removeCollection. review accepts raw _id, RVE-<number>, number, or exact title; candidate/application can disambiguate.",
201191
- category: CATEGORY30,
201450
+ category: CATEGORY31,
201192
201451
  inputSchema: deleteRecruitingReviewParamsJsonSchema,
201193
201452
  annotations: { destructiveHint: true, idempotentHint: false },
201194
201453
  resultSchema: DeleteRecruitingReviewResultSchema
@@ -201200,7 +201459,7 @@ var recruitingExtendedTools = [
201200
201459
  {
201201
201460
  name: "list_recruiting_opinions",
201202
201461
  description: "List Recruiting opinions for one review. review accepts raw _id, RVE-<number>, bare number, or exact title. Opinion refs include OPE-<number>, parent review ref, and opinion value.",
201203
- category: CATEGORY30,
201462
+ category: CATEGORY31,
201204
201463
  inputSchema: listRecruitingOpinionsParamsJsonSchema,
201205
201464
  resultSchema: ListRecruitingOpinionsResultSchema
201206
201465
  },
@@ -201211,7 +201470,7 @@ var recruitingExtendedTools = [
201211
201470
  {
201212
201471
  name: "get_recruiting_opinion",
201213
201472
  description: "Get one Recruiting opinion by raw _id, OPE-<number>, or bare number. Pass review to disambiguate. Returns value, markdown description, comments/attachments counts, parent review ref, and timestamps.",
201214
- category: CATEGORY30,
201473
+ category: CATEGORY31,
201215
201474
  inputSchema: getRecruitingOpinionParamsJsonSchema,
201216
201475
  resultSchema: OpinionDetailSchema
201217
201476
  },
@@ -201222,7 +201481,7 @@ var recruitingExtendedTools = [
201222
201481
  {
201223
201482
  name: "create_recruiting_opinion",
201224
201483
  description: "Create a Recruiting opinion on one review. Increments the OPE sequence, attaches to the review opinions collection, and stores markdown description as Huly markup.",
201225
- category: CATEGORY30,
201484
+ category: CATEGORY31,
201226
201485
  inputSchema: createRecruitingOpinionParamsJsonSchema,
201227
201486
  resultSchema: RecruitingOpinionMutationResultSchema
201228
201487
  },
@@ -201233,7 +201492,7 @@ var recruitingExtendedTools = [
201233
201492
  {
201234
201493
  name: "update_recruiting_opinion",
201235
201494
  description: "Update a Recruiting opinion value and/or markdown description. opinion accepts raw _id, OPE-<number>, or number; review can disambiguate. Pass null for description to clear it.",
201236
- category: CATEGORY30,
201495
+ category: CATEGORY31,
201237
201496
  inputSchema: updateRecruitingOpinionParamsJsonSchema,
201238
201497
  resultSchema: RecruitingOpinionMutationResultSchema
201239
201498
  },
@@ -201244,7 +201503,7 @@ var recruitingExtendedTools = [
201244
201503
  {
201245
201504
  name: "delete_recruiting_opinion",
201246
201505
  description: "Delete a Recruiting opinion with Huly removeCollection. opinion accepts raw _id, OPE-<number>, or number; review can disambiguate.",
201247
- category: CATEGORY30,
201506
+ category: CATEGORY31,
201248
201507
  inputSchema: deleteRecruitingOpinionParamsJsonSchema,
201249
201508
  annotations: { destructiveHint: true, idempotentHint: false },
201250
201509
  resultSchema: DeleteRecruitingOpinionResultSchema
@@ -201255,7 +201514,7 @@ var recruitingExtendedTools = [
201255
201514
  ];
201256
201515
 
201257
201516
  // src/huly/operations/recruiting-media.ts
201258
- var import_core78 = __toESM(require_lib5(), 1);
201517
+ var import_core79 = __toESM(require_lib5(), 1);
201259
201518
 
201260
201519
  // src/huly/operations/recruiting-targets.ts
201261
201520
  var candidateObjectClass = toClassRef(String(recruitIds.mixin.Candidate));
@@ -201524,7 +201783,7 @@ var listRecruitingActivity = (params) => Effect_exports.gen(function* () {
201524
201783
  }),
201525
201784
  {
201526
201785
  limit: clampLimit(params.limit),
201527
- sort: { modifiedOn: import_core78.SortingOrder.Descending },
201786
+ sort: { modifiedOn: import_core79.SortingOrder.Descending },
201528
201787
  total: true
201529
201788
  }
201530
201789
  );
@@ -201536,7 +201795,7 @@ var listRecruitingActivity = (params) => Effect_exports.gen(function* () {
201536
201795
  });
201537
201796
 
201538
201797
  // src/huly/operations/recruiting-related-issues.ts
201539
- var import_core79 = __toESM(require_lib5(), 1);
201798
+ var import_core80 = __toESM(require_lib5(), 1);
201540
201799
  var issueSummary = (issue2) => ({
201541
201800
  id: DocId.make(issue2._id),
201542
201801
  class: ObjectClassName.make(issue2._class),
@@ -201576,7 +201835,7 @@ var listRecruitingRelatedIssues = (params) => Effect_exports.gen(function* () {
201576
201835
  const issues = yield* target.client.findAll(
201577
201836
  tracker.class.Issue,
201578
201837
  hulyQuery({ relations: targetRelatedDocument(target) }),
201579
- { limit: clampLimit(params.limit), sort: { modifiedOn: import_core79.SortingOrder.Descending }, total: true }
201838
+ { limit: clampLimit(params.limit), sort: { modifiedOn: import_core80.SortingOrder.Descending }, total: true }
201580
201839
  );
201581
201840
  return {
201582
201841
  target: target.target,
@@ -201637,13 +201896,13 @@ var removeRecruitingRelatedIssue = (params) => Effect_exports.gen(function* () {
201637
201896
  });
201638
201897
 
201639
201898
  // src/mcp/tools/recruiting-media.ts
201640
- var CATEGORY31 = "recruiting";
201899
+ var CATEGORY32 = "recruiting";
201641
201900
  var recruitingMediaTools = [
201642
201901
  defineTool(
201643
201902
  {
201644
201903
  name: "list_recruiting_comments",
201645
201904
  description: "List comments attached directly to a Recruiting vacancy, candidate, applicant, review, or opinion target. The target locator resolves friendly Recruiting identifiers and returns the resolved target ref.",
201646
- category: CATEGORY31,
201905
+ category: CATEGORY32,
201647
201906
  inputSchema: listRecruitingCommentsParamsJsonSchema,
201648
201907
  resultSchema: ListRecruitingCommentsResultSchema
201649
201908
  },
@@ -201654,7 +201913,7 @@ var recruitingMediaTools = [
201654
201913
  {
201655
201914
  name: "add_recruiting_comment",
201656
201915
  description: "Add a Markdown comment directly to a Recruiting vacancy, candidate, applicant, review, or opinion target resolved by the shared target locator.",
201657
- category: CATEGORY31,
201916
+ category: CATEGORY32,
201658
201917
  inputSchema: addRecruitingCommentParamsJsonSchema,
201659
201918
  resultSchema: AddRecruitingCommentResultSchema
201660
201919
  },
@@ -201665,7 +201924,7 @@ var recruitingMediaTools = [
201665
201924
  {
201666
201925
  name: "update_recruiting_comment",
201667
201926
  description: "Update one comment attached directly to a Recruiting vacancy, candidate, applicant, review, or opinion. The commentId must belong to the resolved target.",
201668
- category: CATEGORY31,
201927
+ category: CATEGORY32,
201669
201928
  inputSchema: updateRecruitingCommentParamsJsonSchema,
201670
201929
  resultSchema: UpdateRecruitingCommentResultSchema
201671
201930
  },
@@ -201676,7 +201935,7 @@ var recruitingMediaTools = [
201676
201935
  {
201677
201936
  name: "delete_recruiting_comment",
201678
201937
  description: "Delete one comment attached directly to a Recruiting vacancy, candidate, applicant, review, or opinion. The commentId must belong to the resolved target.",
201679
- category: CATEGORY31,
201938
+ category: CATEGORY32,
201680
201939
  inputSchema: deleteRecruitingCommentParamsJsonSchema,
201681
201940
  resultSchema: DeleteRecruitingCommentResultSchema
201682
201941
  },
@@ -201687,7 +201946,7 @@ var recruitingMediaTools = [
201687
201946
  {
201688
201947
  name: "list_recruiting_attachments",
201689
201948
  description: "List files attached directly to a Recruiting vacancy, candidate, applicant, or opinion target. Review attachments are intentionally unsupported unless the model exposes that collection.",
201690
- category: CATEGORY31,
201949
+ category: CATEGORY32,
201691
201950
  inputSchema: listRecruitingAttachmentsParamsJsonSchema,
201692
201951
  resultSchema: ListRecruitingAttachmentsResultSchema
201693
201952
  },
@@ -201698,7 +201957,7 @@ var recruitingMediaTools = [
201698
201957
  {
201699
201958
  name: "get_recruiting_attachment",
201700
201959
  description: "Get one file attached directly to a Recruiting vacancy, candidate, applicant, or opinion. The attachmentId must belong to the resolved target.",
201701
- category: CATEGORY31,
201960
+ category: CATEGORY32,
201702
201961
  inputSchema: getRecruitingAttachmentParamsJsonSchema,
201703
201962
  resultSchema: GetRecruitingAttachmentResultSchema
201704
201963
  },
@@ -201709,7 +201968,7 @@ var recruitingMediaTools = [
201709
201968
  {
201710
201969
  name: "add_recruiting_attachment",
201711
201970
  description: "Attach a file to a Recruiting vacancy, candidate, applicant, or opinion target. Provide exactly one of filePath, fileUrl, or data, plus filename and contentType.",
201712
- category: CATEGORY31,
201971
+ category: CATEGORY32,
201713
201972
  inputSchema: addRecruitingAttachmentParamsJsonSchema,
201714
201973
  resultSchema: AddRecruitingAttachmentResultSchema
201715
201974
  },
@@ -201720,7 +201979,7 @@ var recruitingMediaTools = [
201720
201979
  {
201721
201980
  name: "update_recruiting_attachment",
201722
201981
  description: "Update description and/or pinned state for a file attached directly to a Recruiting vacancy, candidate, applicant, or opinion. The attachmentId must belong to the resolved target.",
201723
- category: CATEGORY31,
201982
+ category: CATEGORY32,
201724
201983
  inputSchema: updateRecruitingAttachmentParamsJsonSchema,
201725
201984
  resultSchema: UpdateRecruitingAttachmentResultSchema
201726
201985
  },
@@ -201731,7 +201990,7 @@ var recruitingMediaTools = [
201731
201990
  {
201732
201991
  name: "delete_recruiting_attachment",
201733
201992
  description: "Delete one file attached directly to a Recruiting vacancy, candidate, applicant, or opinion. The attachmentId must belong to the resolved target.",
201734
- category: CATEGORY31,
201993
+ category: CATEGORY32,
201735
201994
  inputSchema: deleteRecruitingAttachmentParamsJsonSchema,
201736
201995
  resultSchema: DeleteRecruitingAttachmentResultSchema
201737
201996
  },
@@ -201742,7 +202001,7 @@ var recruitingMediaTools = [
201742
202001
  {
201743
202002
  name: "list_recruiting_activity",
201744
202003
  description: "List read-only activity messages for a Recruiting vacancy, candidate, applicant, or review target resolved by friendly Recruiting identifiers. Opinions are intentionally unsupported.",
201745
- category: CATEGORY31,
202004
+ category: CATEGORY32,
201746
202005
  inputSchema: listRecruitingActivityParamsJsonSchema,
201747
202006
  resultSchema: ListRecruitingActivityResultSchema
201748
202007
  },
@@ -201753,7 +202012,7 @@ var recruitingMediaTools = [
201753
202012
  {
201754
202013
  name: "list_recruiting_related_issues",
201755
202014
  description: "List tracker issues whose Huly Related Issues entries (`Issue.relations`) point at a Recruiting vacancy, candidate, or applicant target.",
201756
- category: CATEGORY31,
202015
+ category: CATEGORY32,
201757
202016
  inputSchema: listRecruitingRelatedIssuesParamsJsonSchema,
201758
202017
  resultSchema: ListRecruitingRelatedIssuesResultSchema
201759
202018
  },
@@ -201764,7 +202023,7 @@ var recruitingMediaTools = [
201764
202023
  {
201765
202024
  name: "add_recruiting_related_issue",
201766
202025
  description: "Idempotently add a Huly Related Issues entry (`Issue.relations`) from a tracker issue to a Recruiting vacancy, candidate, or applicant target.",
201767
- category: CATEGORY31,
202026
+ category: CATEGORY32,
201768
202027
  inputSchema: addRecruitingRelatedIssueParamsJsonSchema,
201769
202028
  resultSchema: AddRecruitingRelatedIssueResultSchema
201770
202029
  },
@@ -201775,7 +202034,7 @@ var recruitingMediaTools = [
201775
202034
  {
201776
202035
  name: "remove_recruiting_related_issue",
201777
202036
  description: "Idempotently remove a Huly Related Issues entry (`Issue.relations`) from a tracker issue to a Recruiting vacancy, candidate, or applicant target.",
201778
- category: CATEGORY31,
202037
+ category: CATEGORY32,
201779
202038
  inputSchema: removeRecruitingRelatedIssueParamsJsonSchema,
201780
202039
  resultSchema: RemoveRecruitingRelatedIssueResultSchema
201781
202040
  },
@@ -201785,13 +202044,13 @@ var recruitingMediaTools = [
201785
202044
  ];
201786
202045
 
201787
202046
  // src/mcp/tools/recruiting.ts
201788
- var CATEGORY32 = "recruiting";
202047
+ var CATEGORY33 = "recruiting";
201789
202048
  var recruitingTools = [
201790
202049
  defineTool(
201791
202050
  {
201792
202051
  name: "list_recruiting_vacancy_types",
201793
202052
  description: "List Huly Recruiting vacancy workflow types. Use the returned type ID or exact type name in create_recruiting_vacancy. Defaults vacancy creation to Huly's Default vacancy type when omitted.",
201794
- category: CATEGORY32,
202053
+ category: CATEGORY33,
201795
202054
  inputSchema: listRecruitingVacancyTypesParamsJsonSchema,
201796
202055
  resultSchema: ListRecruitingVacancyTypesResultSchema
201797
202056
  },
@@ -201802,7 +202061,7 @@ var recruitingTools = [
201802
202061
  {
201803
202062
  name: "list_recruiting_vacancy_statuses",
201804
202063
  description: "List applicant workflow statuses for one vacancy. vacancy accepts raw _id, VCN-<number>, bare number, or exact name. Statuses are read from the vacancy's ProjectType; they are workspace data, not hardcoded names.",
201805
- category: CATEGORY32,
202064
+ category: CATEGORY33,
201806
202065
  inputSchema: listRecruitingVacancyStatusesParamsJsonSchema,
201807
202066
  resultSchema: ListRecruitingVacancyStatusesResultSchema
201808
202067
  },
@@ -201813,7 +202072,7 @@ var recruitingTools = [
201813
202072
  {
201814
202073
  name: "list_recruiting_vacancies",
201815
202074
  description: "List Recruiting vacancies as stable refs. Supports includeArchived, name query, type ID/name, company organization ID/name, and limit. Vacancy refs include both raw id and derived VCN-<number> identifier.",
201816
- category: CATEGORY32,
202075
+ category: CATEGORY33,
201817
202076
  inputSchema: listRecruitingVacanciesParamsJsonSchema,
201818
202077
  resultSchema: ListRecruitingVacanciesResultSchema
201819
202078
  },
@@ -201824,7 +202083,7 @@ var recruitingTools = [
201824
202083
  {
201825
202084
  name: "get_recruiting_vacancy",
201826
202085
  description: "Get one Recruiting vacancy by raw _id, VCN-<number>, bare number, or exact name. Returns descriptions, type, company, location, due date, privacy, archive state, and existing counts.",
201827
- category: CATEGORY32,
202086
+ category: CATEGORY33,
201828
202087
  inputSchema: getRecruitingVacancyParamsJsonSchema,
201829
202088
  resultSchema: VacancyDetailSchema
201830
202089
  },
@@ -201835,7 +202094,7 @@ var recruitingTools = [
201835
202094
  {
201836
202095
  name: "create_recruiting_vacancy",
201837
202096
  description: "Create a Recruiting vacancy like the Huly UI: increments the vacancy sequence, stores fullDescription as markdown-backed collaborative markup, defaults members/owners to the current account, and creates vacancy type-data mixin {}.",
201838
- category: CATEGORY32,
202097
+ category: CATEGORY33,
201839
202098
  inputSchema: createRecruitingVacancyParamsJsonSchema,
201840
202099
  resultSchema: RecruitingVacancyMutationResultSchema
201841
202100
  },
@@ -201846,7 +202105,7 @@ var recruitingTools = [
201846
202105
  {
201847
202106
  name: "update_recruiting_vacancy",
201848
202107
  description: "Update mutable Recruiting vacancy fields. vacancy accepts raw _id, VCN-<number>, bare number, or exact name. Provide at least one field. Pass null for fullDescription, company, location, or dueTo to clear.",
201849
- category: CATEGORY32,
202108
+ category: CATEGORY33,
201850
202109
  inputSchema: updateRecruitingVacancyParamsJsonSchema,
201851
202110
  resultSchema: RecruitingVacancyMutationResultSchema
201852
202111
  },
@@ -201857,7 +202116,7 @@ var recruitingTools = [
201857
202116
  {
201858
202117
  name: "archive_recruiting_vacancy",
201859
202118
  description: "Archive a Recruiting vacancy by raw _id, VCN-<number>, bare number, or exact name.",
201860
- category: CATEGORY32,
202119
+ category: CATEGORY33,
201861
202120
  inputSchema: archiveRecruitingVacancyParamsJsonSchema,
201862
202121
  resultSchema: RecruitingVacancyMutationResultSchema
201863
202122
  },
@@ -201868,7 +202127,7 @@ var recruitingTools = [
201868
202127
  {
201869
202128
  name: "unarchive_recruiting_vacancy",
201870
202129
  description: "Unarchive a Recruiting vacancy by raw _id, VCN-<number>, bare number, or exact name.",
201871
- category: CATEGORY32,
202130
+ category: CATEGORY33,
201872
202131
  inputSchema: unarchiveRecruitingVacancyParamsJsonSchema,
201873
202132
  resultSchema: RecruitingVacancyMutationResultSchema
201874
202133
  },
@@ -201879,7 +202138,7 @@ var recruitingTools = [
201879
202138
  {
201880
202139
  name: "list_recruiting_candidates",
201881
202140
  description: "List persons that already have the Recruiting Candidate mixin. Use set_recruiting_candidate_profile, add_recruiting_candidate_skill, or create_recruiting_applicant to recruit-enable an existing person.",
201882
- category: CATEGORY32,
202141
+ category: CATEGORY33,
201883
202142
  inputSchema: listRecruitingCandidatesParamsJsonSchema,
201884
202143
  resultSchema: ListRecruitingCandidatesResultSchema
201885
202144
  },
@@ -201890,7 +202149,7 @@ var recruitingTools = [
201890
202149
  {
201891
202150
  name: "get_recruiting_candidate",
201892
202151
  description: "Get one Recruiting candidate by person _id, email, or exact display name. Returns profile fields, skills, application/review counts, and primary email when available.",
201893
- category: CATEGORY32,
202152
+ category: CATEGORY33,
201894
202153
  inputSchema: getRecruitingCandidateParamsJsonSchema,
201895
202154
  resultSchema: CandidateDetailSchema
201896
202155
  },
@@ -201901,7 +202160,7 @@ var recruitingTools = [
201901
202160
  {
201902
202161
  name: "set_recruiting_candidate_profile",
201903
202162
  description: "Create or update the Recruiting Candidate profile mixin on an existing person. candidate accepts person _id, email, or exact display name. Provide at least one of title, source, onsite, remote.",
201904
- category: CATEGORY32,
202163
+ category: CATEGORY33,
201905
202164
  inputSchema: setRecruitingCandidateProfileParamsJsonSchema,
201906
202165
  resultSchema: RecruitingCandidateMutationResultSchema
201907
202166
  },
@@ -201912,7 +202171,7 @@ var recruitingTools = [
201912
202171
  {
201913
202172
  name: "list_recruiting_skills",
201914
202173
  description: "List Recruiting skill tag definitions. Skills are Huly tags scoped to targetClass recruit:mixin:Candidate; use returned titles or IDs with candidate skill tools.",
201915
- category: CATEGORY32,
202174
+ category: CATEGORY33,
201916
202175
  inputSchema: listRecruitingSkillsParamsJsonSchema,
201917
202176
  resultSchema: ListRecruitingSkillsResultSchema
201918
202177
  },
@@ -201923,7 +202182,7 @@ var recruitingTools = [
201923
202182
  {
201924
202183
  name: "list_recruiting_candidate_skills",
201925
202184
  description: "List skill tag references attached to one Recruiting candidate by person _id, email, or exact name.",
201926
- category: CATEGORY32,
202185
+ category: CATEGORY33,
201927
202186
  inputSchema: listRecruitingCandidateSkillsParamsJsonSchema,
201928
202187
  resultSchema: ListRecruitingCandidateSkillsResultSchema
201929
202188
  },
@@ -201934,7 +202193,7 @@ var recruitingTools = [
201934
202193
  {
201935
202194
  name: "add_recruiting_candidate_skill",
201936
202195
  description: "Attach a skill to a candidate. candidate accepts person _id, email, or exact name. skill accepts title or tag ID; missing skill titles are created. Optional category/color apply only to newly created skill tags.",
201937
- category: CATEGORY32,
202196
+ category: CATEGORY33,
201938
202197
  inputSchema: addRecruitingCandidateSkillParamsJsonSchema,
201939
202198
  resultSchema: RecruitingSkillAttachResultSchema
201940
202199
  },
@@ -201945,7 +202204,7 @@ var recruitingTools = [
201945
202204
  {
201946
202205
  name: "remove_recruiting_candidate_skill",
201947
202206
  description: "Detach a Recruiting skill from a candidate by skill title or tag ID. Idempotent when the skill is absent.",
201948
- category: CATEGORY32,
202207
+ category: CATEGORY33,
201949
202208
  inputSchema: removeRecruitingCandidateSkillParamsJsonSchema,
201950
202209
  resultSchema: RecruitingSkillDetachResultSchema
201951
202210
  },
@@ -201956,7 +202215,7 @@ var recruitingTools = [
201956
202215
  {
201957
202216
  name: "list_recruiting_applicants",
201958
202217
  description: "List Recruiting applicants. Optionally filter by vacancy, candidate, and status. vacancy accepts raw _id/VCN-number/number/name; candidate accepts person _id/email/exact name.",
201959
- category: CATEGORY32,
202218
+ category: CATEGORY33,
201960
202219
  inputSchema: listRecruitingApplicantsParamsJsonSchema,
201961
202220
  resultSchema: ListRecruitingApplicantsResultSchema
201962
202221
  },
@@ -201967,7 +202226,7 @@ var recruitingTools = [
201967
202226
  {
201968
202227
  name: "get_recruiting_applicant",
201969
202228
  description: "Get one Recruiting applicant by raw _id, APP-<number>, or bare number. Pass vacancy and/or candidate when an APP number could be ambiguous.",
201970
- category: CATEGORY32,
202229
+ category: CATEGORY33,
201971
202230
  inputSchema: getRecruitingApplicantParamsJsonSchema,
201972
202231
  resultSchema: ApplicantDetailSchema
201973
202232
  },
@@ -201978,7 +202237,7 @@ var recruitingTools = [
201978
202237
  {
201979
202238
  name: "create_recruiting_applicant",
201980
202239
  description: "Create an applicant linking one vacancy and candidate. Rejects duplicate vacancy/candidate pairs, increments APP sequence, resolves status from that vacancy workflow, and recruit-enables the person if needed.",
201981
- category: CATEGORY32,
202240
+ category: CATEGORY33,
201982
202241
  inputSchema: createRecruitingApplicantParamsJsonSchema,
201983
202242
  resultSchema: RecruitingApplicantMutationResultSchema
201984
202243
  },
@@ -201989,7 +202248,7 @@ var recruitingTools = [
201989
202248
  {
201990
202249
  name: "update_recruiting_applicant",
201991
202250
  description: "Update applicant status, assignee, startDate, and/or dueDate. applicant accepts raw _id, APP-<number>, or number; vacancy/candidate only disambiguate. Pass null to clear assignee, startDate, or dueDate.",
201992
- category: CATEGORY32,
202251
+ category: CATEGORY33,
201993
202252
  inputSchema: updateRecruitingApplicantParamsJsonSchema,
201994
202253
  resultSchema: RecruitingApplicantMutationResultSchema
201995
202254
  },
@@ -202000,7 +202259,7 @@ var recruitingTools = [
202000
202259
  {
202001
202260
  name: "delete_recruiting_applicant",
202002
202261
  description: "Delete an applicant with Huly removeCollection. applicant accepts raw _id, APP-<number>, or number; vacancy/candidate can disambiguate APP numbers.",
202003
- category: CATEGORY32,
202262
+ category: CATEGORY33,
202004
202263
  inputSchema: deleteRecruitingApplicantParamsJsonSchema,
202005
202264
  annotations: { destructiveHint: true, idempotentHint: false },
202006
202265
  resultSchema: DeleteRecruitingApplicantResultSchema
@@ -202013,7 +202272,7 @@ var recruitingTools = [
202013
202272
  ];
202014
202273
 
202015
202274
  // src/huly/operations/related-issue-targets.ts
202016
- var import_core80 = __toESM(require_lib5(), 1);
202275
+ var import_core81 = __toESM(require_lib5(), 1);
202017
202276
  var projectMapById2 = (client, ids3) => Effect_exports.gen(function* () {
202018
202277
  const uniqueIds = [...new Set(ids3)];
202019
202278
  if (uniqueIds.length === 0) return /* @__PURE__ */ new Map();
@@ -202025,7 +202284,7 @@ var projectMapById2 = (client, ids3) => Effect_exports.gen(function* () {
202025
202284
  const entries2 = projects.map((project3) => [project3._id, project3]);
202026
202285
  return new Map(entries2);
202027
202286
  });
202028
- var spaceMapById = (client, ids3) => Effect_exports.gen(function* () {
202287
+ var spaceMapById2 = (client, ids3) => Effect_exports.gen(function* () {
202029
202288
  const uniqueIds = [...new Set(ids3)];
202030
202289
  if (uniqueIds.length === 0) return /* @__PURE__ */ new Map();
202031
202290
  const spaces = yield* client.findAll(
@@ -202078,7 +202337,7 @@ var renderSingleTarget = (client, target) => Effect_exports.gen(function* () {
202078
202337
  client,
202079
202338
  target.target === void 0 || target.target === null ? [] : [target.target]
202080
202339
  );
202081
- const spaces = yield* spaceMapById(client, target.rule.kind === "spaceRule" ? [target.rule.space] : []);
202340
+ const spaces = yield* spaceMapById2(client, target.rule.kind === "spaceRule" ? [target.rule.space] : []);
202082
202341
  return targetResult(target, projects, spaces);
202083
202342
  });
202084
202343
  var listRelatedIssueTargets = (params) => Effect_exports.gen(function* () {
@@ -202096,14 +202355,14 @@ var listRelatedIssueTargets = (params) => Effect_exports.gen(function* () {
202096
202355
  const targets = yield* client.findAll(
202097
202356
  tracker.class.RelatedIssueTarget,
202098
202357
  hulyQuery(query),
202099
- { limit: clampLimit(params.limit), sort: { modifiedOn: import_core80.SortingOrder.Descending }, total: true }
202358
+ { limit: clampLimit(params.limit), sort: { modifiedOn: import_core81.SortingOrder.Descending }, total: true }
202100
202359
  );
202101
202360
  const targetProjectIds = targets.flatMap(
202102
202361
  (target) => target.target === void 0 || target.target === null ? [] : [target.target]
202103
202362
  );
202104
202363
  const spaceIds = targets.flatMap((target) => target.rule.kind === "spaceRule" ? [target.rule.space] : []);
202105
202364
  const projects = yield* projectMapById2(client, targetProjectIds);
202106
- const spaces = yield* spaceMapById(client, spaceIds);
202365
+ const spaces = yield* spaceMapById2(client, spaceIds);
202107
202366
  return {
202108
202367
  targets: targets.map((target) => targetResult(target, projects, spaces)),
202109
202368
  total: listTotal(targets.total)
@@ -202116,7 +202375,7 @@ var setRelatedIssueTarget = (params) => Effect_exports.gen(function* () {
202116
202375
  const space = yield* findSpace(client, { space: params.space, includeArchived: true });
202117
202376
  const existing2 = yield* findSpaceRule(client, toRef(space._id));
202118
202377
  if (existing2 === void 0) {
202119
- const targetId = (0, import_core80.generateId)();
202378
+ const targetId = (0, import_core81.generateId)();
202120
202379
  const data = {
202121
202380
  target: targetProject,
202122
202381
  rule: { kind: "spaceRule", space: toRef(space._id) }
@@ -202167,13 +202426,13 @@ var deleteRelatedIssueSpaceTarget = (params) => Effect_exports.gen(function* ()
202167
202426
  });
202168
202427
 
202169
202428
  // src/mcp/tools/related-issue-targets.ts
202170
- var CATEGORY33 = "issues";
202429
+ var CATEGORY34 = "issues";
202171
202430
  var relatedIssueTargetTools = [
202172
202431
  defineTool(
202173
202432
  {
202174
202433
  name: "list_related_issue_targets",
202175
202434
  description: "List rules that choose the default destination project for related issues. A spaceRule says related issues from one space default to targetProject. A classRule says related issues for one object class default to targetProject. targetProject is a project identifier, or null for no default destination project.",
202176
- category: CATEGORY33,
202435
+ category: CATEGORY34,
202177
202436
  inputSchema: listRelatedIssueTargetsParamsJsonSchema,
202178
202437
  resultSchema: ListRelatedIssueTargetsResultSchema
202179
202438
  },
@@ -202184,7 +202443,7 @@ var relatedIssueTargetTools = [
202184
202443
  {
202185
202444
  name: "set_related_issue_target",
202186
202445
  description: "Set the default destination project for related issues from a space or object class. For space, creates or updates a spaceRule. For objectClass, only updates an existing classRule; this tool never creates classRule targets. Pass targetProject as a project identifier, or null to clear the default destination project.",
202187
- category: CATEGORY33,
202446
+ category: CATEGORY34,
202188
202447
  inputSchema: setRelatedIssueTargetParamsJsonSchema,
202189
202448
  resultSchema: SetRelatedIssueTargetResultSchema
202190
202449
  },
@@ -202195,7 +202454,7 @@ var relatedIssueTargetTools = [
202195
202454
  {
202196
202455
  name: "delete_related_issue_space_target",
202197
202456
  description: "Delete the spaceRule that chooses the default destination project for related issues from one space. This only deletes spaceRule targets; classRule deletion is intentionally unsupported because class rules may be model-provided.",
202198
- category: CATEGORY33,
202457
+ category: CATEGORY34,
202199
202458
  inputSchema: deleteRelatedIssueSpaceTargetParamsJsonSchema,
202200
202459
  resultSchema: DeleteRelatedIssueSpaceTargetResultSchema
202201
202460
  },
@@ -202205,83 +202464,10 @@ var relatedIssueTargetTools = [
202205
202464
  ];
202206
202465
 
202207
202466
  // src/huly/operations/sdk-discovery-configurations.ts
202208
- var import_core82 = __toESM(require_lib5(), 1);
202209
-
202210
- // src/huly/operations/spaces-read.ts
202211
- var import_core81 = __toESM(require_lib5(), 1);
202212
-
202213
- // src/huly/operations/spaces-projections.ts
202214
- var toPermissionSummary = (permission) => ({
202215
- id: PermissionId.make(permission._id),
202216
- label: String(permission.label),
202217
- description: optionalString(permission.description === void 0 ? void 0 : String(permission.description)),
202218
- scope: permission.scope,
202219
- objectClass: optionalObjectClassName(permission.objectClass),
202220
- txClass: optionalObjectClassName(permission.txClass),
202221
- forbid: permission.forbid
202222
- });
202223
- var descriptorId = (spaceType) => spaceType.descriptor;
202224
- var toSpaceSummary = (space) => ({
202225
- id: SpaceId.make(space._id),
202226
- name: space.name,
202227
- description: optionalString(space.description),
202228
- class: ObjectClassName.make(space._class),
202229
- type: space.type === void 0 ? void 0 : SpaceTypeId.make(space.type),
202230
- private: space.private,
202231
- archived: space.archived,
202232
- autoJoin: space.autoJoin,
202233
- membersCount: Count.make(space.members.length),
202234
- ownersCount: Count.make(space.owners?.length ?? 0)
202235
- });
202236
- var roleAssignments = (space, spaceType, validRoleIds) => {
202237
- if (spaceType === void 0) return void 0;
202238
- const entries2 = spaceRoleAssignmentEntries(space, spaceType, validRoleIds);
202239
- return entries2.length === 0 ? void 0 : entries2.map(([roleId, members]) => ({
202240
- roleId: RoleId.make(roleId),
202241
- members: members.map((member) => AccountUuid.make(member))
202242
- }));
202243
- };
202244
- var toSpaceDetail = (space, spaceType, validRoleIds = /* @__PURE__ */ new Set()) => ({
202245
- id: SpaceId.make(space._id),
202246
- name: space.name,
202247
- description: space.description,
202248
- class: ObjectClassName.make(space._class),
202249
- type: space.type === void 0 ? void 0 : SpaceTypeId.make(space.type),
202250
- private: space.private,
202251
- archived: space.archived,
202252
- autoJoin: space.autoJoin,
202253
- members: space.members.map((member) => AccountUuid.make(member)),
202254
- owners: (space.owners ?? []).map((owner) => AccountUuid.make(owner)),
202255
- roleAssignments: roleAssignments(space, spaceType, validRoleIds)
202256
- });
202257
- var spaceTypeSummary = (spaceType, descriptor3) => ({
202258
- id: SpaceTypeId.make(spaceType._id),
202259
- name: spaceType.name,
202260
- shortDescription: optionalString(spaceType.shortDescription),
202261
- descriptor: spaceType.descriptor,
202262
- baseClass: optionalObjectClassName(descriptor3?.baseClass),
202263
- targetClass: ObjectClassName.make(spaceType.targetClass),
202264
- defaultMembers: (spaceType.members ?? []).map((member) => AccountUuid.make(member)),
202265
- autoJoin: spaceType.autoJoin,
202266
- rolesCount: Count.make(spaceType.roles)
202267
- });
202268
- var roleSummary = (role, permissionsById) => ({
202269
- id: RoleId.make(role._id),
202270
- name: role.name,
202271
- permissions: role.permissions.map((permission) => PermissionId.make(permission)),
202272
- permissionLabels: role.permissions.map((permissionId) => permissionsById.get(permissionId)).filter((permission) => permission !== void 0).map((permission) => String(permission.label))
202273
- });
202274
- var permissionSearchMatches = (permission, search) => {
202275
- if (search === void 0) return true;
202276
- const lower = search.toLowerCase();
202277
- return [
202278
- permission._id,
202279
- String(permission.label),
202280
- permission.description === void 0 ? "" : String(permission.description)
202281
- ].some((value3) => value3.toLowerCase().includes(lower));
202282
- };
202467
+ var import_core83 = __toESM(require_lib5(), 1);
202283
202468
 
202284
202469
  // src/huly/operations/spaces-read.ts
202470
+ var import_core82 = __toESM(require_lib5(), 1);
202285
202471
  var findSpaceType = (client, identifier2) => Effect_exports.gen(function* () {
202286
202472
  const byId = yield* client.findOne(
202287
202473
  core.class.SpaceType,
@@ -202291,7 +202477,7 @@ var findSpaceType = (client, identifier2) => Effect_exports.gen(function* () {
202291
202477
  const byName = yield* client.findAll(
202292
202478
  core.class.SpaceType,
202293
202479
  hulyQuery({ name: identifier2 }),
202294
- { limit: 10, sort: { name: import_core81.SortingOrder.Ascending } }
202480
+ { limit: 10, sort: { name: import_core82.SortingOrder.Ascending } }
202295
202481
  );
202296
202482
  if (byName.length === 0) {
202297
202483
  return yield* new SpaceTypeNotFoundError({ identifier: NonEmptyString2.make(identifier2) });
@@ -202326,7 +202512,7 @@ var listSpaces = (params) => Effect_exports.gen(function* () {
202326
202512
  const spaces = yield* client.findAll(
202327
202513
  spaceClass,
202328
202514
  hulyQuery(query),
202329
- { limit, sort: { name: import_core81.SortingOrder.Ascending }, total: true }
202515
+ { limit, sort: { name: import_core82.SortingOrder.Ascending }, total: true }
202330
202516
  );
202331
202517
  return {
202332
202518
  spaces: spaces.map(toSpaceSummary),
@@ -202368,7 +202554,7 @@ var listSpaceTypes = (params) => Effect_exports.gen(function* () {
202368
202554
  const spaceTypes = yield* client.findAll(
202369
202555
  core.class.SpaceType,
202370
202556
  hulyQuery(query),
202371
- { limit, sort: { name: import_core81.SortingOrder.Ascending }, total: true }
202557
+ { limit, sort: { name: import_core82.SortingOrder.Ascending }, total: true }
202372
202558
  );
202373
202559
  const descriptorIds = sortStrings([...new Set(spaceTypes.map(descriptorId))]);
202374
202560
  const descriptors = descriptorIds.length === 0 ? [] : yield* client.findAll(
@@ -202392,7 +202578,7 @@ var getSpaceType = (params) => Effect_exports.gen(function* () {
202392
202578
  const roles = yield* client.findAll(
202393
202579
  core.class.Role,
202394
202580
  hulyQuery({ attachedTo: spaceType._id }),
202395
- { limit: clampLimit(void 0), sort: { name: import_core81.SortingOrder.Ascending } }
202581
+ { limit: clampLimit(void 0), sort: { name: import_core82.SortingOrder.Ascending } }
202396
202582
  );
202397
202583
  const permissionIds = sortStrings([
202398
202584
  .../* @__PURE__ */ new Set([
@@ -202428,7 +202614,7 @@ var listSpacePermissions = (params) => Effect_exports.gen(function* () {
202428
202614
  const permissions = yield* client.findAll(
202429
202615
  core.class.Permission,
202430
202616
  hulyQuery(query),
202431
- { sort: { label: import_core81.SortingOrder.Ascending } }
202617
+ { sort: { label: import_core82.SortingOrder.Ascending } }
202432
202618
  );
202433
202619
  const filtered = permissions.filter((permission) => permissionSearchMatches(permission, params.search));
202434
202620
  const limited = filtered.slice(0, clampLimit(params.limit));
@@ -202480,7 +202666,7 @@ var listHulyPluginConfigurations = () => Effect_exports.gen(function* () {
202480
202666
  const configs = yield* client.findAll(
202481
202667
  core.class.PluginConfiguration,
202482
202668
  hulyQuery({}),
202483
- { sort: { pluginId: import_core82.SortingOrder.Ascending } }
202669
+ { sort: { pluginId: import_core83.SortingOrder.Ascending } }
202484
202670
  );
202485
202671
  const pluginConfigurations = configs.map(toPluginConfigurationSummary);
202486
202672
  return {
@@ -202493,7 +202679,7 @@ var listHulyDomainIndexConfigurations = () => Effect_exports.gen(function* () {
202493
202679
  const configs = yield* client.findAll(
202494
202680
  core.class.DomainIndexConfiguration,
202495
202681
  hulyQuery({}),
202496
- { sort: { domain: import_core82.SortingOrder.Ascending } }
202682
+ { sort: { domain: import_core83.SortingOrder.Ascending } }
202497
202683
  );
202498
202684
  const domainIndexConfigurations = configs.map(toDomainIndexConfigurationSummary);
202499
202685
  return {
@@ -202506,12 +202692,12 @@ var listHulySequences = () => Effect_exports.gen(function* () {
202506
202692
  const sequences = yield* client.findAll(
202507
202693
  core.class.Sequence,
202508
202694
  hulyQuery({}),
202509
- { sort: { _id: import_core82.SortingOrder.Ascending } }
202695
+ { sort: { _id: import_core83.SortingOrder.Ascending } }
202510
202696
  );
202511
202697
  const customSequences = yield* client.findAll(
202512
202698
  core.class.CustomSequence,
202513
202699
  hulyQuery({}),
202514
- { sort: { _id: import_core82.SortingOrder.Ascending } }
202700
+ { sort: { _id: import_core83.SortingOrder.Ascending } }
202515
202701
  );
202516
202702
  const merged = new Map([
202517
202703
  ...sequences.map((sequence) => [sequenceKey(sequence), sequence]),
@@ -202548,7 +202734,7 @@ var describeHulySpaceTypeCapabilities = (params) => Effect_exports.gen(function*
202548
202734
  });
202549
202735
 
202550
202736
  // src/huly/operations/sdk-discovery.ts
202551
- var import_core83 = __toESM(require_lib5(), 1);
202737
+ var import_core84 = __toESM(require_lib5(), 1);
202552
202738
  var MAX_ANCESTOR_DEPTH = 32;
202553
202739
  var classRef3 = core.class.Class;
202554
202740
  var includesQuery = (text, query) => Option_exports.isNone(query) || text.includes(query.value.toLowerCase());
@@ -202591,7 +202777,7 @@ var fetchClasses = (client, params) => {
202591
202777
  return client.findAll(
202592
202778
  classRef3,
202593
202779
  hulyQuery(query),
202594
- { sort: { _id: import_core83.SortingOrder.Ascending } }
202780
+ { sort: { _id: import_core84.SortingOrder.Ascending } }
202595
202781
  );
202596
202782
  };
202597
202783
  var fetchAttributes = (client, params) => {
@@ -202602,7 +202788,7 @@ var fetchAttributes = (client, params) => {
202602
202788
  return client.findAll(
202603
202789
  core.class.Attribute,
202604
202790
  hulyQuery(query),
202605
- { sort: { name: import_core83.SortingOrder.Ascending } }
202791
+ { sort: { name: import_core84.SortingOrder.Ascending } }
202606
202792
  );
202607
202793
  };
202608
202794
  var resolveClass = (client, classId) => Effect_exports.gen(function* () {
@@ -202653,7 +202839,7 @@ var resolveAncestors = (client, cls) => Effect_exports.gen(function* () {
202653
202839
  var attributesForClasses = (client, classIds) => classIds.length === 0 ? Effect_exports.succeed([]) : client.findAll(
202654
202840
  core.class.Attribute,
202655
202841
  hulyQuery({ attributeOf: { $in: classIds.map(toRef) } }),
202656
- { sort: { name: import_core83.SortingOrder.Ascending } }
202842
+ { sort: { name: import_core84.SortingOrder.Ascending } }
202657
202843
  );
202658
202844
  var listHulyClasses = (params) => Effect_exports.gen(function* () {
202659
202845
  const client = yield* HulyClient;
@@ -202719,20 +202905,20 @@ var listHulyEnums = (params) => Effect_exports.gen(function* () {
202719
202905
  const rawEnums = yield* client.findAll(
202720
202906
  core.class.Enum,
202721
202907
  hulyQuery(query),
202722
- { sort: { name: import_core83.SortingOrder.Ascending } }
202908
+ { sort: { name: import_core84.SortingOrder.Ascending } }
202723
202909
  );
202724
202910
  const enums = rawEnums.map(toEnumSummary).filter((summary5) => includesQuery(enumSearchText(summary5), queryText)).slice(0, limit);
202725
202911
  return { enums, total: HulyDiscoveryCount.make(enums.length) };
202726
202912
  });
202727
202913
 
202728
202914
  // src/mcp/tools/sdk-discovery.ts
202729
- var CATEGORY34 = "sdk-discovery";
202915
+ var CATEGORY35 = "sdk-discovery";
202730
202916
  var sdkDiscoveryTools = [
202731
202917
  defineTool(
202732
202918
  {
202733
202919
  name: "list_huly_classes",
202734
202920
  description: "Discover Huly model class, interface, and mixin IDs visible in this workspace. Use this before raw-object, generic association, custom field, or model-backed work when you need exact class IDs instead of guessing.",
202735
- category: CATEGORY34,
202921
+ category: CATEGORY35,
202736
202922
  inputSchema: listHulyClassesParamsJsonSchema,
202737
202923
  resultSchema: ListHulyClassesResultSchema
202738
202924
  },
@@ -202743,7 +202929,7 @@ var sdkDiscoveryTools = [
202743
202929
  {
202744
202930
  name: "get_huly_class",
202745
202931
  description: "Read one Huly class/interface/mixin by exact ID and return its inheritance chain plus model attributes. Use this when you need fields, ref targets, enum IDs, or hints about purpose-built MCP tool categories for the class.",
202746
- category: CATEGORY34,
202932
+ category: CATEGORY35,
202747
202933
  inputSchema: getHulyClassParamsJsonSchema,
202748
202934
  resultSchema: GetHulyClassResultSchema
202749
202935
  },
@@ -202754,7 +202940,7 @@ var sdkDiscoveryTools = [
202754
202940
  {
202755
202941
  name: "list_huly_attributes",
202756
202942
  description: "Discover Huly model attributes across the workspace or directly on one class/mixin. Returns attribute IDs, owner classes, labels, type families, ref targets, enum IDs, and custom-field markers.",
202757
- category: CATEGORY34,
202943
+ category: CATEGORY35,
202758
202944
  inputSchema: listHulyAttributesParamsJsonSchema,
202759
202945
  resultSchema: ListHulyAttributesResultSchema
202760
202946
  },
@@ -202765,7 +202951,7 @@ var sdkDiscoveryTools = [
202765
202951
  {
202766
202952
  name: "list_huly_enums",
202767
202953
  description: "Discover Huly enum model documents and their valid values. Use enum IDs from get_huly_class or list_huly_attributes to inspect allowed enum values before writing or interpreting enum fields.",
202768
- category: CATEGORY34,
202954
+ category: CATEGORY35,
202769
202955
  inputSchema: listHulyEnumsParamsJsonSchema,
202770
202956
  resultSchema: ListHulyEnumsResultSchema
202771
202957
  },
@@ -202776,7 +202962,7 @@ var sdkDiscoveryTools = [
202776
202962
  {
202777
202963
  name: "list_huly_plugin_configurations",
202778
202964
  description: "List read-only Huly plugin configuration records from core.class.PluginConfiguration. Returns plugin id, label, enabled/beta flags, and transaction count so an LLM can see installed model plugin gates without mutating configuration.",
202779
- category: CATEGORY34,
202965
+ category: CATEGORY35,
202780
202966
  inputSchema: listHulyPluginConfigurationsParamsJsonSchema,
202781
202967
  resultSchema: ListHulyPluginConfigurationsResultSchema
202782
202968
  },
@@ -202787,7 +202973,7 @@ var sdkDiscoveryTools = [
202787
202973
  {
202788
202974
  name: "list_huly_domain_index_configurations",
202789
202975
  description: "List read-only Huly domain index configuration records from core.class.DomainIndexConfiguration. Returns each domain plus disabled, skip, and enabled-index summaries while preserving SDK-open index/filter/config payloads as typed metadata.",
202790
- category: CATEGORY34,
202976
+ category: CATEGORY35,
202791
202977
  inputSchema: listHulyDomainIndexConfigurationsParamsJsonSchema,
202792
202978
  resultSchema: ListHulyDomainIndexConfigurationsResultSchema
202793
202979
  },
@@ -202798,7 +202984,7 @@ var sdkDiscoveryTools = [
202798
202984
  {
202799
202985
  name: "list_huly_sequences",
202800
202986
  description: "List read-only Huly sequence counters from core.class.Sequence and core.class.CustomSequence. Returns sequence id, attached class id, current non-negative integer value, and custom prefix when present.",
202801
- category: CATEGORY34,
202987
+ category: CATEGORY35,
202802
202988
  inputSchema: listHulySequencesParamsJsonSchema,
202803
202989
  resultSchema: ListHulySequencesResultSchema
202804
202990
  },
@@ -202809,7 +202995,7 @@ var sdkDiscoveryTools = [
202809
202995
  {
202810
202996
  name: "describe_huly_space_type_capabilities",
202811
202997
  description: "Describe one Huly SpaceType by id or exact name in a single read-only call. Returns descriptor metadata, base/target classes, roles, role permissions, default members, autoJoin, and the stored role-assignment shape.",
202812
- category: CATEGORY34,
202998
+ category: CATEGORY35,
202813
202999
  inputSchema: describeHulySpaceTypeCapabilitiesParamsJsonSchema,
202814
203000
  resultSchema: HulySpaceTypeCapabilitiesSchema
202815
203001
  },
@@ -202850,13 +203036,13 @@ var fulltextSearch = (params) => Effect_exports.gen(function* () {
202850
203036
  });
202851
203037
 
202852
203038
  // src/mcp/tools/search.ts
202853
- var CATEGORY35 = "search";
203039
+ var CATEGORY36 = "search";
202854
203040
  var searchTools = [
202855
203041
  defineTool(
202856
203042
  {
202857
203043
  name: "fulltext_search",
202858
203044
  description: "Perform a global fulltext search across all Huly content. Searches issues, documents, messages, and other indexed content. Returns matching items sorted by relevance (newest first).",
202859
- category: CATEGORY35,
203045
+ category: CATEGORY36,
202860
203046
  inputSchema: fulltextSearchParamsJsonSchema,
202861
203047
  resultSchema: FulltextSearchResultSchema
202862
203048
  },
@@ -203021,13 +203207,13 @@ var addSpaceRoleMembers = (params) => mutateSpaceRoleMembers(params, mergeUnique
203021
203207
  var removeSpaceRoleMembers = (params) => mutateSpaceRoleMembers(params, removeAccountUuids);
203022
203208
 
203023
203209
  // src/mcp/tools/spaces.ts
203024
- var CATEGORY36 = "spaces";
203210
+ var CATEGORY37 = "spaces";
203025
203211
  var spaceTools = [
203026
203212
  defineTool(
203027
203213
  {
203028
203214
  name: "list_spaces",
203029
203215
  description: `List generic Huly spaces across modules. When includeArchived is omitted, includeArchived=${DEFAULT_INCLUDE_ARCHIVED}. Returns raw space id, class, type, privacy, archived, autoJoin, member count, and owner count so module-specific tools can reuse the result.`,
203030
- category: CATEGORY36,
203216
+ category: CATEGORY37,
203031
203217
  inputSchema: listSpacesParamsJsonSchema,
203032
203218
  resultSchema: ListSpacesResultSchema
203033
203219
  },
@@ -203038,7 +203224,7 @@ var spaceTools = [
203038
203224
  {
203039
203225
  name: "get_space",
203040
203226
  description: "Get one generic Huly space by raw space _id or exact space name. Resolution tries _id first, then exact name. If a name matches multiple spaces, pass class and/or type to narrow; ambiguous errors include matching ids/classes/types.",
203041
- category: CATEGORY36,
203227
+ category: CATEGORY37,
203042
203228
  inputSchema: getSpaceParamsJsonSchema,
203043
203229
  resultSchema: GetSpaceResultSchema
203044
203230
  },
@@ -203049,7 +203235,7 @@ var spaceTools = [
203049
203235
  {
203050
203236
  name: "list_space_types",
203051
203237
  description: "List configured Huly SpaceType records. Returns descriptor id, base class, target class, default members, autoJoin, and role count for discovering typed-space configuration.",
203052
- category: CATEGORY36,
203238
+ category: CATEGORY37,
203053
203239
  inputSchema: listSpaceTypesParamsJsonSchema,
203054
203240
  resultSchema: ListSpaceTypesResultSchema
203055
203241
  },
@@ -203060,7 +203246,7 @@ var spaceTools = [
203060
203246
  {
203061
203247
  name: "get_space_type",
203062
203248
  description: "Get one Huly SpaceType by raw SpaceType _id or exact name, including descriptor metadata, role definitions, role permission ids/labels, and available permissions.",
203063
- category: CATEGORY36,
203249
+ category: CATEGORY37,
203064
203250
  inputSchema: getSpaceTypeParamsJsonSchema,
203065
203251
  resultSchema: GetSpaceTypeResultSchema
203066
203252
  },
@@ -203071,7 +203257,7 @@ var spaceTools = [
203071
203257
  {
203072
203258
  name: "list_space_permissions",
203073
203259
  description: "List core Huly Permission records for space/workspace access control discovery. Filter by scope, objectClass, or search text. This is read-only and does not assign permissions.",
203074
- category: CATEGORY36,
203260
+ category: CATEGORY37,
203075
203261
  inputSchema: listSpacePermissionsParamsJsonSchema,
203076
203262
  resultSchema: ListSpacePermissionsResultSchema
203077
203263
  },
@@ -203082,7 +203268,7 @@ var spaceTools = [
203082
203268
  {
203083
203269
  name: "update_space",
203084
203270
  description: "Update safe common metadata on an existing Huly space: name, description, private, archived, and autoJoin. Does not create/delete spaces or mutate module-specific required fields.",
203085
- category: CATEGORY36,
203271
+ category: CATEGORY37,
203086
203272
  inputSchema: updateSpaceParamsJsonSchema,
203087
203273
  resultSchema: UpdateSpaceResultSchema
203088
203274
  },
@@ -203093,7 +203279,7 @@ var spaceTools = [
203093
203279
  {
203094
203280
  name: "add_space_members",
203095
203281
  description: "Idempotently add members to an existing Huly space. Members accept account UUID, exact email, or exact person display name and resolve to Huly account UUIDs before replacing the full members array.",
203096
- category: CATEGORY36,
203282
+ category: CATEGORY37,
203097
203283
  inputSchema: spaceMemberMutationParamsJsonSchema,
203098
203284
  resultSchema: AddSpaceMembersResultSchema
203099
203285
  },
@@ -203104,7 +203290,7 @@ var spaceTools = [
203104
203290
  {
203105
203291
  name: "remove_space_members",
203106
203292
  description: "Idempotently remove members from an existing Huly space. Members accept account UUID, exact email, or exact person display name and resolve to Huly account UUIDs before replacing the full members array.",
203107
- category: CATEGORY36,
203293
+ category: CATEGORY37,
203108
203294
  inputSchema: spaceMemberMutationParamsJsonSchema,
203109
203295
  resultSchema: RemoveSpaceMembersResultSchema
203110
203296
  },
@@ -203115,7 +203301,7 @@ var spaceTools = [
203115
203301
  {
203116
203302
  name: "set_space_owners",
203117
203303
  description: "Replace owners on an existing Huly space. Owners accept account UUID, exact email, or exact person display name. By default, owners are also ensured in members.",
203118
- category: CATEGORY36,
203304
+ category: CATEGORY37,
203119
203305
  inputSchema: setSpaceOwnersParamsJsonSchema,
203120
203306
  resultSchema: SetSpaceOwnersResultSchema
203121
203307
  },
@@ -203126,7 +203312,7 @@ var spaceTools = [
203126
203312
  {
203127
203313
  name: "set_space_role_members",
203128
203314
  description: "Replace members assigned to one role on a typed Huly space while preserving all other role assignments. Role accepts a raw role _id or exact role name from the space's SpaceType. Members accept account UUID, exact email, or exact person display name; pass members=[] to clear this role.",
203129
- category: CATEGORY36,
203315
+ category: CATEGORY37,
203130
203316
  inputSchema: setSpaceRoleMembersParamsJsonSchema,
203131
203317
  annotations: { idempotentHint: true, destructiveHint: false },
203132
203318
  resultSchema: SetSpaceRoleMembersResultSchema
@@ -203138,7 +203324,7 @@ var spaceTools = [
203138
203324
  {
203139
203325
  name: "add_space_role_members",
203140
203326
  description: "Idempotently add members to one role on a typed Huly space while preserving all other role assignments. Role accepts a raw role _id or exact role name from the space's SpaceType. Members accept account UUID, exact email, or exact person display name.",
203141
- category: CATEGORY36,
203327
+ category: CATEGORY37,
203142
203328
  inputSchema: spaceRoleMemberMutationParamsJsonSchema,
203143
203329
  annotations: { idempotentHint: true, destructiveHint: false },
203144
203330
  resultSchema: AddSpaceRoleMembersResultSchema
@@ -203150,7 +203336,7 @@ var spaceTools = [
203150
203336
  {
203151
203337
  name: "remove_space_role_members",
203152
203338
  description: "Idempotently remove members from one role on a typed Huly space while preserving all other role assignments. Role accepts a raw role _id or exact role name from the space's SpaceType. Members accept account UUID, exact email, or exact person display name.",
203153
- category: CATEGORY36,
203339
+ category: CATEGORY37,
203154
203340
  inputSchema: spaceRoleMemberMutationParamsJsonSchema,
203155
203341
  annotations: { idempotentHint: true, destructiveHint: false },
203156
203342
  resultSchema: RemoveSpaceRoleMembersResultSchema
@@ -203176,13 +203362,13 @@ var uploadFile = (params) => Effect_exports.gen(function* () {
203176
203362
  });
203177
203363
 
203178
203364
  // src/mcp/tools/storage.ts
203179
- var CATEGORY37 = "storage";
203365
+ var CATEGORY38 = "storage";
203180
203366
  var storageTools = [
203181
203367
  defineStorageTool(
203182
203368
  {
203183
203369
  name: "upload_file",
203184
203370
  description: "Upload a file to Huly storage. Provide ONE of: filePath (local file - preferred), fileUrl (fetch from URL), or data (base64 - for small files only). Returns blob ID and URL for referencing the file.",
203185
- category: CATEGORY37,
203371
+ category: CATEGORY38,
203186
203372
  inputSchema: uploadFileParamsJsonSchema,
203187
203373
  resultSchema: UploadFileResultSchema
203188
203374
  },
@@ -203192,7 +203378,7 @@ var storageTools = [
203192
203378
  ];
203193
203379
 
203194
203380
  // src/huly/operations/tag-categories.ts
203195
- var import_core84 = __toESM(require_lib5(), 1);
203381
+ var import_core85 = __toESM(require_lib5(), 1);
203196
203382
  var defaultTargetClassRef = toRef(DEFAULT_TAG_CATEGORY_TARGET_CLASS);
203197
203383
  var findCategoryByIdOrLabel = (client, idOrLabel) => Effect_exports.gen(function* () {
203198
203384
  const cat = (yield* client.findOne(
@@ -203230,7 +203416,7 @@ var listTagCategories = (params) => Effect_exports.gen(function* () {
203230
203416
  query,
203231
203417
  {
203232
203418
  limit,
203233
- sort: { modifiedOn: import_core84.SortingOrder.Descending }
203419
+ sort: { modifiedOn: import_core85.SortingOrder.Descending }
203234
203420
  }
203235
203421
  );
203236
203422
  return categories.map(toSummary);
@@ -203245,7 +203431,7 @@ var createTagCategory = (params) => Effect_exports.gen(function* () {
203245
203431
  if (existing !== void 0) {
203246
203432
  return { id: TagCategoryId.make(existing._id), label: existing.label, created: false };
203247
203433
  }
203248
- const catId = (0, import_core84.generateId)();
203434
+ const catId = (0, import_core85.generateId)();
203249
203435
  const catData = {
203250
203436
  // Asset is a branded string type (Metadata<URL>) with no runtime constructor.
203251
203437
  // Empty string is the "no icon" sentinel; Huly UI renders a default icon.
@@ -203296,13 +203482,13 @@ var deleteTagCategory = (params) => Effect_exports.gen(function* () {
203296
203482
  });
203297
203483
 
203298
203484
  // src/mcp/tools/tag-categories.ts
203299
- var CATEGORY38 = "tag-categories";
203485
+ var CATEGORY39 = "tag-categories";
203300
203486
  var tagCategoryTools = [
203301
203487
  defineTool(
203302
203488
  {
203303
203489
  name: "list_tag_categories",
203304
203490
  description: "List tag/label categories in the workspace. Categories group labels (e.g., 'Priority Labels', 'Type Labels'). Omit targetClass to include all classes.",
203305
- category: CATEGORY38,
203491
+ category: CATEGORY39,
203306
203492
  inputSchema: listTagCategoriesParamsJsonSchema,
203307
203493
  resultSchema: ListTagCategoriesResultSchema
203308
203494
  },
@@ -203313,7 +203499,7 @@ var tagCategoryTools = [
203313
203499
  {
203314
203500
  name: "create_tag_category",
203315
203501
  description: "Create a new tag/label category. Idempotent: returns existing category if one with the same label and targetClass already exists (created=false). Defaults targetClass to tracker issues.",
203316
- category: CATEGORY38,
203502
+ category: CATEGORY39,
203317
203503
  inputSchema: createTagCategoryParamsJsonSchema,
203318
203504
  resultSchema: CreateTagCategoryResultSchema
203319
203505
  },
@@ -203324,7 +203510,7 @@ var tagCategoryTools = [
203324
203510
  {
203325
203511
  name: "update_tag_category",
203326
203512
  description: "Update a tag/label category. Accepts category ID or label name. Only provided fields are modified.",
203327
- category: CATEGORY38,
203513
+ category: CATEGORY39,
203328
203514
  inputSchema: updateTagCategoryParamsJsonSchema,
203329
203515
  resultSchema: UpdateTagCategoryResultSchema
203330
203516
  },
@@ -203335,7 +203521,7 @@ var tagCategoryTools = [
203335
203521
  {
203336
203522
  name: "delete_tag_category",
203337
203523
  description: "Permanently delete a tag/label category. Accepts category ID or label name. Labels in this category will be orphaned (not deleted). This action cannot be undone.",
203338
- category: CATEGORY38,
203524
+ category: CATEGORY39,
203339
203525
  inputSchema: deleteTagCategoryParamsJsonSchema,
203340
203526
  resultSchema: DeleteTagCategoryResultSchema
203341
203527
  },
@@ -203345,13 +203531,13 @@ var tagCategoryTools = [
203345
203531
  ];
203346
203532
 
203347
203533
  // src/mcp/tools/tags.ts
203348
- var CATEGORY39 = "tags";
203534
+ var CATEGORY40 = "tags";
203349
203535
  var tagTools = [
203350
203536
  defineTool(
203351
203537
  {
203352
203538
  name: "list_tags",
203353
203539
  description: "List generic Huly tag definitions for one SDK target class. Use this for SDK-level tags such as recruiting skills or document labels. For Tracker issue labels, prefer list_labels.",
203354
- category: CATEGORY39,
203540
+ category: CATEGORY40,
203355
203541
  inputSchema: listTagsParamsJsonSchema,
203356
203542
  resultSchema: ListTagsResultSchema
203357
203543
  },
@@ -203362,7 +203548,7 @@ var tagTools = [
203362
203548
  {
203363
203549
  name: "create_tag",
203364
203550
  description: "Create a generic Huly tag definition for one targetClass. Idempotent by targetClass + title. This exposes the SDK tags model; for Tracker issue labels, prefer create_label.",
203365
- category: CATEGORY39,
203551
+ category: CATEGORY40,
203366
203552
  inputSchema: createTagParamsJsonSchema,
203367
203553
  resultSchema: CreateTagResultSchema
203368
203554
  },
@@ -203373,7 +203559,7 @@ var tagTools = [
203373
203559
  {
203374
203560
  name: "update_tag",
203375
203561
  description: "Update a generic Huly tag definition. The tag argument accepts a tag ID or exact title, resolved within targetClass.",
203376
- category: CATEGORY39,
203562
+ category: CATEGORY40,
203377
203563
  inputSchema: updateTagParamsJsonSchema,
203378
203564
  resultSchema: UpdateTagResultSchema
203379
203565
  },
@@ -203384,7 +203570,7 @@ var tagTools = [
203384
203570
  {
203385
203571
  name: "delete_tag",
203386
203572
  description: "Delete a generic Huly tag definition by ID or exact title, resolved within targetClass. This deletes the tag definition, not only one object's tag reference.",
203387
- category: CATEGORY39,
203573
+ category: CATEGORY40,
203388
203574
  inputSchema: deleteTagParamsJsonSchema,
203389
203575
  annotations: {
203390
203576
  destructiveHint: true,
@@ -203399,7 +203585,7 @@ var tagTools = [
203399
203585
  {
203400
203586
  name: "list_attached_tags",
203401
203587
  description: "List generic Huly TagReference rows attached to one raw object collection. Requires objectId, objectClass, space, and collection because this is an SDK-level tool.",
203402
- category: CATEGORY39,
203588
+ category: CATEGORY40,
203403
203589
  inputSchema: listAttachedTagsParamsJsonSchema,
203404
203590
  resultSchema: ListAttachedTagsResultSchema
203405
203591
  },
@@ -203410,7 +203596,7 @@ var tagTools = [
203410
203596
  {
203411
203597
  name: "attach_tag",
203412
203598
  description: "Attach a generic Huly tag to one raw object collection. Requires targetClass for the tag definition and objectId/objectClass/space/collection for the TagReference. Idempotent for the same object, collection, and tag.",
203413
- category: CATEGORY39,
203599
+ category: CATEGORY40,
203414
203600
  inputSchema: attachTagParamsJsonSchema,
203415
203601
  annotations: {
203416
203602
  idempotentHint: true
@@ -203424,7 +203610,7 @@ var tagTools = [
203424
203610
  {
203425
203611
  name: "detach_tag",
203426
203612
  description: "Detach a generic Huly tag from one raw object collection. Requires targetClass and objectId/objectClass/space/collection. Returns detached=false when the tag is not attached.",
203427
- category: CATEGORY39,
203613
+ category: CATEGORY40,
203428
203614
  inputSchema: detachTagParamsJsonSchema,
203429
203615
  resultSchema: DetachTagResultSchema
203430
203616
  },
@@ -203434,7 +203620,7 @@ var tagTools = [
203434
203620
  ];
203435
203621
 
203436
203622
  // src/huly/operations/task-management.ts
203437
- var import_core85 = __toESM(require_lib5(), 1);
203623
+ var import_core86 = __toESM(require_lib5(), 1);
203438
203624
  var import_platform3 = __toESM(require_lib(), 1);
203439
203625
  var STATUS_CATEGORY_BY_SDK_KEY = {
203440
203626
  UnStarted: { value: "UnStarted", ref: StatusCategoryBySdkKey.UnStarted, name: "UnStarted" },
@@ -203556,7 +203742,7 @@ var projectTypeDetail = (data) => ({
203556
203742
  var listAllProjectTypes = (client) => client.findAll(
203557
203743
  task.class.ProjectType,
203558
203744
  hulyQuery({}),
203559
- { sort: { name: import_core85.SortingOrder.Ascending } }
203745
+ { sort: { name: import_core86.SortingOrder.Ascending } }
203560
203746
  ).pipe(Effect_exports.map((result) => [...result]));
203561
203747
  var resolveProjectType = (client, projectTypeRef) => Effect_exports.gen(function* () {
203562
203748
  const projectTypes = yield* listAllProjectTypes(client);
@@ -203676,7 +203862,7 @@ var createTaskType = (params) => Effect_exports.gen(function* () {
203676
203862
  new HulyError({ message: `Project type '${projectType.name}' has no task type to copy.` })
203677
203863
  );
203678
203864
  }
203679
- const taskTypeId = (0, import_core85.generateId)();
203865
+ const taskTypeId = (0, import_core86.generateId)();
203680
203866
  const targetClassId = `${taskTypeId}:type:mixin`;
203681
203867
  const targetClassRef = toRef(targetClassId);
203682
203868
  const templateStatusIds = uniqueStatusRefs(template.statuses);
@@ -203685,7 +203871,7 @@ var createTaskType = (params) => Effect_exports.gen(function* () {
203685
203871
  core.space.Model,
203686
203872
  {
203687
203873
  extends: template.ofClass,
203688
- kind: import_core85.ClassifierKind.MIXIN,
203874
+ kind: import_core86.ClassifierKind.MIXIN,
203689
203875
  label: (0, import_platform3.getEmbeddedLabel)(params.name),
203690
203876
  ...template.icon === void 0 ? {} : { icon: template.icon }
203691
203877
  },
@@ -203770,7 +203956,7 @@ var createIssueStatus = (params) => Effect_exports.gen(function* () {
203770
203956
  [...workflowData.statuses, ...statusesByName],
203771
203957
  params.name
203772
203958
  );
203773
- const statusId = existingStatus?._id ?? (0, import_core85.generateId)();
203959
+ const statusId = existingStatus?._id ?? (0, import_core86.generateId)();
203774
203960
  if (existingStatus !== void 0) {
203775
203961
  yield* requireStatusCategoryMatch(existingStatus, params.category);
203776
203962
  }
@@ -203840,13 +204026,13 @@ var createIssueStatus = (params) => Effect_exports.gen(function* () {
203840
204026
  });
203841
204027
 
203842
204028
  // src/mcp/tools/task-management.ts
203843
- var CATEGORY40 = "task-management";
204029
+ var CATEGORY41 = "task-management";
203844
204030
  var taskManagementTools = [
203845
204031
  defineTool(
203846
204032
  {
203847
204033
  name: "list_project_types",
203848
204034
  description: "List Huly tracker project types/workflow templates. Returns ID, display name, descriptor, task type count, status count, and whether the type appears to be the default Classic tracker type.",
203849
- category: CATEGORY40,
204035
+ category: CATEGORY41,
203850
204036
  inputSchema: listProjectTypesParamsJsonSchema,
203851
204037
  resultSchema: ListProjectTypesResultSchema
203852
204038
  },
@@ -203857,7 +204043,7 @@ var taskManagementTools = [
203857
204043
  {
203858
204044
  name: "get_project_type",
203859
204045
  description: "Inspect one Huly tracker project type in a single call. Accepts projectType as ID or display name; when omitted, uses the unambiguous Classic tracker type. Returns task types, statuses, categories, and task-type-to-status mappings.",
203860
- category: CATEGORY40,
204046
+ category: CATEGORY41,
203861
204047
  inputSchema: getProjectTypeParamsJsonSchema,
203862
204048
  resultSchema: GetProjectTypeResultSchema
203863
204049
  },
@@ -203868,7 +204054,7 @@ var taskManagementTools = [
203868
204054
  {
203869
204055
  name: "list_task_types",
203870
204056
  description: "List Huly issue/task types. Optionally filter by projectType ID or display name. Returns task type identity, parent project type, kind, issue class, and available status count.",
203871
- category: CATEGORY40,
204057
+ category: CATEGORY41,
203872
204058
  inputSchema: listTaskTypesParamsJsonSchema,
203873
204059
  resultSchema: ListTaskTypesResultSchema
203874
204060
  },
@@ -203879,7 +204065,7 @@ var taskManagementTools = [
203879
204065
  {
203880
204066
  name: "create_task_type",
203881
204067
  description: "Add a Huly issue/task type to a project type idempotently by normalized name. Copies required workflow configuration from an existing template task type unless templateTaskType is supplied. Returns created, IDs, affected task type IDs, and a workspace-level workflow warning.",
203882
- category: CATEGORY40,
204068
+ category: CATEGORY41,
203883
204069
  inputSchema: createTaskTypeParamsJsonSchema,
203884
204070
  annotations: { idempotentHint: true },
203885
204071
  resultSchema: CreateTaskTypeResultSchema
@@ -203891,7 +204077,7 @@ var taskManagementTools = [
203891
204077
  {
203892
204078
  name: "create_issue_status",
203893
204079
  description: `Add a Huly issue workflow status idempotently by normalized name within a project type and task type scope. Accepts category as a Huly SDK task.statusCategory key: ${enumValuesDescription(StatusCategoryValues)}; taskType may be ID or display name, and omission applies the status to every task type in the project type.`,
203894
- category: CATEGORY40,
204080
+ category: CATEGORY41,
203895
204081
  inputSchema: createIssueStatusParamsJsonSchema,
203896
204082
  annotations: { idempotentHint: true },
203897
204083
  resultSchema: CreateIssueStatusResultSchema
@@ -203902,7 +204088,7 @@ var taskManagementTools = [
203902
204088
  ];
203903
204089
 
203904
204090
  // src/huly/operations/test-management-core.ts
203905
- var import_core86 = __toESM(require_lib5(), 1);
204091
+ var import_core87 = __toESM(require_lib5(), 1);
203906
204092
 
203907
204093
  // src/huly/test-management-classes.ts
203908
204094
  var testManagement = {
@@ -204155,7 +204341,7 @@ var listTestProjects = (params) => Effect_exports.gen(function* () {
204155
204341
  {},
204156
204342
  {
204157
204343
  limit,
204158
- sort: { name: import_core86.SortingOrder.Ascending }
204344
+ sort: { name: import_core87.SortingOrder.Ascending }
204159
204345
  }
204160
204346
  );
204161
204347
  return {
@@ -204177,7 +204363,7 @@ var listTestSuites = (params) => Effect_exports.gen(function* () {
204177
204363
  query,
204178
204364
  {
204179
204365
  limit,
204180
- sort: { modifiedOn: import_core86.SortingOrder.Descending }
204366
+ sort: { modifiedOn: import_core87.SortingOrder.Descending }
204181
204367
  }
204182
204368
  );
204183
204369
  return {
@@ -204210,7 +204396,7 @@ var createTestSuite = (params) => Effect_exports.gen(function* () {
204210
204396
  if (existing !== void 0) {
204211
204397
  return { id: TestSuiteId.make(existing._id), name: existing.name, created: false };
204212
204398
  }
204213
- const suiteId = (0, import_core86.generateId)();
204399
+ const suiteId = (0, import_core87.generateId)();
204214
204400
  const suiteData = {
204215
204401
  name: params.name,
204216
204402
  description: params.description ?? "",
@@ -204254,7 +204440,7 @@ var listTestCases = (params) => Effect_exports.gen(function* () {
204254
204440
  query,
204255
204441
  {
204256
204442
  limit,
204257
- sort: { modifiedOn: import_core86.SortingOrder.Descending }
204443
+ sort: { modifiedOn: import_core87.SortingOrder.Descending }
204258
204444
  }
204259
204445
  );
204260
204446
  return {
@@ -204282,7 +204468,7 @@ var createTestCase = (params) => Effect_exports.gen(function* () {
204282
204468
  const client = yield* HulyClient;
204283
204469
  const project3 = yield* findTestProject(client, params.project);
204284
204470
  const suite = yield* findTestSuite(client, project3, params.suite);
204285
- const caseId = (0, import_core86.generateId)();
204471
+ const caseId = (0, import_core87.generateId)();
204286
204472
  const assigneeRef = params.assignee !== void 0 ? toRef((yield* resolveAssignee3(params.assignee))._id) : null;
204287
204473
  const typeEnum = resolveCaseType(params.type ?? DEFAULT_TEST_CASE_TYPE);
204288
204474
  const priorityEnum = resolveCasePriority(params.priority ?? DEFAULT_TEST_CASE_PRIORITY);
@@ -204327,13 +204513,13 @@ var deleteTestCase = (params) => Effect_exports.gen(function* () {
204327
204513
  });
204328
204514
 
204329
204515
  // src/mcp/tools/test-management-core.ts
204330
- var CATEGORY41 = "test-management";
204516
+ var CATEGORY42 = "test-management";
204331
204517
  var testManagementCoreTools = [
204332
204518
  defineTool(
204333
204519
  {
204334
204520
  name: "list_test_projects",
204335
204521
  description: "List test management projects. Returns test projects sorted by name. These are separate from tracker projects.",
204336
- category: CATEGORY41,
204522
+ category: CATEGORY42,
204337
204523
  inputSchema: listTestProjectsParamsJsonSchema,
204338
204524
  resultSchema: ListTestProjectsResultSchema
204339
204525
  },
@@ -204344,7 +204530,7 @@ var testManagementCoreTools = [
204344
204530
  {
204345
204531
  name: "list_test_suites",
204346
204532
  description: "List test suites in a test project. Accepts project ID or name. Optional parent filter for nested suites.",
204347
- category: CATEGORY41,
204533
+ category: CATEGORY42,
204348
204534
  inputSchema: listTestSuitesParamsJsonSchema,
204349
204535
  resultSchema: ListTestSuitesResultSchema
204350
204536
  },
@@ -204355,7 +204541,7 @@ var testManagementCoreTools = [
204355
204541
  {
204356
204542
  name: "get_test_suite",
204357
204543
  description: "Get a single test suite by ID or name within a test project. Returns suite details and test case count.",
204358
- category: CATEGORY41,
204544
+ category: CATEGORY42,
204359
204545
  inputSchema: getTestSuiteParamsJsonSchema,
204360
204546
  resultSchema: GetTestSuiteResultSchema
204361
204547
  },
@@ -204366,7 +204552,7 @@ var testManagementCoreTools = [
204366
204552
  {
204367
204553
  name: "create_test_suite",
204368
204554
  description: "Create a test suite in a test project. Idempotent: returns existing suite if one with the same name exists (created=false). Optional parent for nesting.",
204369
- category: CATEGORY41,
204555
+ category: CATEGORY42,
204370
204556
  inputSchema: createTestSuiteParamsJsonSchema,
204371
204557
  resultSchema: CreateTestSuiteResultSchema
204372
204558
  },
@@ -204377,7 +204563,7 @@ var testManagementCoreTools = [
204377
204563
  {
204378
204564
  name: "update_test_suite",
204379
204565
  description: "Update a test suite. Accepts suite ID or name. Only provided fields are modified.",
204380
- category: CATEGORY41,
204566
+ category: CATEGORY42,
204381
204567
  inputSchema: updateTestSuiteParamsJsonSchema,
204382
204568
  resultSchema: UpdateTestSuiteResultSchema
204383
204569
  },
@@ -204388,7 +204574,7 @@ var testManagementCoreTools = [
204388
204574
  {
204389
204575
  name: "delete_test_suite",
204390
204576
  description: "Permanently delete a test suite. Accepts suite ID or name. This action cannot be undone.",
204391
- category: CATEGORY41,
204577
+ category: CATEGORY42,
204392
204578
  inputSchema: deleteTestSuiteParamsJsonSchema,
204393
204579
  resultSchema: DeleteTestSuiteResultSchema
204394
204580
  },
@@ -204399,7 +204585,7 @@ var testManagementCoreTools = [
204399
204585
  {
204400
204586
  name: "list_test_cases",
204401
204587
  description: "List test cases in a test project. Optional filters: suite (ID or name), assignee (name or email).",
204402
- category: CATEGORY41,
204588
+ category: CATEGORY42,
204403
204589
  inputSchema: listTestCasesParamsJsonSchema,
204404
204590
  resultSchema: ListTestCasesResultSchema
204405
204591
  },
@@ -204410,7 +204596,7 @@ var testManagementCoreTools = [
204410
204596
  {
204411
204597
  name: "get_test_case",
204412
204598
  description: "Get a single test case by ID or name within a test project.",
204413
- category: CATEGORY41,
204599
+ category: CATEGORY42,
204414
204600
  inputSchema: getTestCaseParamsJsonSchema,
204415
204601
  resultSchema: GetTestCaseResultSchema
204416
204602
  },
@@ -204421,7 +204607,7 @@ var testManagementCoreTools = [
204421
204607
  {
204422
204608
  name: "create_test_case",
204423
204609
  description: "Create a test case attached to a suite. Requires project and suite. Defaults: type=functional, priority=medium, status=draft.",
204424
- category: CATEGORY41,
204610
+ category: CATEGORY42,
204425
204611
  inputSchema: createTestCaseParamsJsonSchema,
204426
204612
  resultSchema: CreateTestCaseResultSchema
204427
204613
  },
@@ -204432,7 +204618,7 @@ var testManagementCoreTools = [
204432
204618
  {
204433
204619
  name: "update_test_case",
204434
204620
  description: "Update a test case. Accepts test case ID or name. Only provided fields are modified. Set assignee to null to unassign.",
204435
- category: CATEGORY41,
204621
+ category: CATEGORY42,
204436
204622
  inputSchema: updateTestCaseParamsJsonSchema,
204437
204623
  resultSchema: UpdateTestCaseResultSchema
204438
204624
  },
@@ -204443,7 +204629,7 @@ var testManagementCoreTools = [
204443
204629
  {
204444
204630
  name: "delete_test_case",
204445
204631
  description: "Permanently delete a test case. Accepts test case ID or name. This action cannot be undone.",
204446
- category: CATEGORY41,
204632
+ category: CATEGORY42,
204447
204633
  inputSchema: deleteTestCaseParamsJsonSchema,
204448
204634
  resultSchema: DeleteTestCaseResultSchema
204449
204635
  },
@@ -204453,7 +204639,7 @@ var testManagementCoreTools = [
204453
204639
  ];
204454
204640
 
204455
204641
  // src/huly/operations/test-management-plans.ts
204456
- var import_core87 = __toESM(require_lib5(), 1);
204642
+ var import_core88 = __toESM(require_lib5(), 1);
204457
204643
  var toPlanSummary = (p) => ({
204458
204644
  id: TestPlanId.make(p._id),
204459
204645
  name: p.name
@@ -204471,7 +204657,7 @@ var listTestPlans = (params) => Effect_exports.gen(function* () {
204471
204657
  const plans = yield* client.findAll(
204472
204658
  testManagement.class.TestPlan,
204473
204659
  { space: project3._id },
204474
- { limit, sort: { modifiedOn: import_core87.SortingOrder.Descending } }
204660
+ { limit, sort: { modifiedOn: import_core88.SortingOrder.Descending } }
204475
204661
  );
204476
204662
  return { plans: plans.map(toPlanSummary), total: listTotal(plans.total) };
204477
204663
  });
@@ -204506,7 +204692,7 @@ var createTestPlan = (params) => Effect_exports.gen(function* () {
204506
204692
  if (existing !== void 0) {
204507
204693
  return { id: TestPlanId.make(existing._id), name: existing.name, created: false };
204508
204694
  }
204509
- const planId = (0, import_core87.generateId)();
204695
+ const planId = (0, import_core88.generateId)();
204510
204696
  const descRef = params.description !== void 0 && params.description.trim() !== "" ? yield* client.uploadMarkup(
204511
204697
  testManagement.class.TestPlan,
204512
204698
  planId,
@@ -204591,7 +204777,7 @@ var removeTestPlanItem = (params) => Effect_exports.gen(function* () {
204591
204777
  });
204592
204778
 
204593
204779
  // src/huly/operations/test-management-runs.ts
204594
- var import_core88 = __toESM(require_lib5(), 1);
204780
+ var import_core89 = __toESM(require_lib5(), 1);
204595
204781
  var BATCH_CONCURRENCY = 10;
204596
204782
  var resolveStatusOrUntested = (status) => {
204597
204783
  const resolved = stringToTestRunStatus(status);
@@ -204617,7 +204803,7 @@ var listTestRuns = (params) => Effect_exports.gen(function* () {
204617
204803
  const runs = yield* client.findAll(
204618
204804
  testManagement.class.TestRun,
204619
204805
  { space: project3._id },
204620
- { limit, sort: { modifiedOn: import_core88.SortingOrder.Descending } }
204806
+ { limit, sort: { modifiedOn: import_core89.SortingOrder.Descending } }
204621
204807
  );
204622
204808
  return { runs: runs.map(toRunSummary), total: listTotal(runs.total) };
204623
204809
  });
@@ -204646,7 +204832,7 @@ var getTestRun = (params) => Effect_exports.gen(function* () {
204646
204832
  var createTestRun = (params) => Effect_exports.gen(function* () {
204647
204833
  const client = yield* HulyClient;
204648
204834
  const project3 = yield* findTestProject(client, params.project);
204649
- const runId = (0, import_core88.generateId)();
204835
+ const runId = (0, import_core89.generateId)();
204650
204836
  const descRef = params.description !== void 0 && params.description.trim() !== "" ? yield* client.uploadMarkup(
204651
204837
  testManagement.class.TestRun,
204652
204838
  runId,
@@ -204705,7 +204891,7 @@ var listTestResults = (params) => Effect_exports.gen(function* () {
204705
204891
  const results = yield* client.findAll(
204706
204892
  testManagement.class.TestResult,
204707
204893
  { attachedTo: run3._id },
204708
- { limit, sort: { modifiedOn: import_core88.SortingOrder.Descending } }
204894
+ { limit, sort: { modifiedOn: import_core89.SortingOrder.Descending } }
204709
204895
  );
204710
204896
  return { results: results.map(toResultSummary), total: listTotal(results.total) };
204711
204897
  });
@@ -204819,7 +205005,7 @@ var runTestPlan = (params) => Effect_exports.gen(function* () {
204819
205005
  }
204820
205006
  return { item, tc };
204821
205007
  }), { concurrency: BATCH_CONCURRENCY });
204822
- const runId = (0, import_core88.generateId)();
205008
+ const runId = (0, import_core89.generateId)();
204823
205009
  const runName = params.runName ?? `${plan.name} - Run`;
204824
205010
  yield* client.createDoc(testManagement.class.TestRun, project3._id, {
204825
205011
  name: runName,
@@ -204849,14 +205035,14 @@ var runTestPlan = (params) => Effect_exports.gen(function* () {
204849
205035
  });
204850
205036
 
204851
205037
  // src/mcp/tools/test-management-plans.ts
204852
- var CATEGORY42 = "test-management";
205038
+ var CATEGORY43 = "test-management";
204853
205039
  var testManagementPlansTools = [
204854
205040
  // --- Test Plans ---
204855
205041
  defineTool(
204856
205042
  {
204857
205043
  name: "list_test_plans",
204858
205044
  description: "List test plans in a test management project. Returns plan names and IDs. Requires project ID or name.",
204859
- category: CATEGORY42,
205045
+ category: CATEGORY43,
204860
205046
  inputSchema: listTestPlansParamsJsonSchema,
204861
205047
  resultSchema: ListTestPlansResultSchema
204862
205048
  },
@@ -204867,7 +205053,7 @@ var testManagementPlansTools = [
204867
205053
  {
204868
205054
  name: "get_test_plan",
204869
205055
  description: "Get test plan details including its items (test cases). Accepts plan ID or name within a project.",
204870
- category: CATEGORY42,
205056
+ category: CATEGORY43,
204871
205057
  inputSchema: getTestPlanParamsJsonSchema,
204872
205058
  resultSchema: GetTestPlanResultSchema
204873
205059
  },
@@ -204878,7 +205064,7 @@ var testManagementPlansTools = [
204878
205064
  {
204879
205065
  name: "create_test_plan",
204880
205066
  description: "Create a test plan in a project. Idempotent: returns existing plan if one with the same name exists (created=false).",
204881
- category: CATEGORY42,
205067
+ category: CATEGORY43,
204882
205068
  inputSchema: createTestPlanParamsJsonSchema,
204883
205069
  resultSchema: CreateTestPlanResultSchema
204884
205070
  },
@@ -204889,7 +205075,7 @@ var testManagementPlansTools = [
204889
205075
  {
204890
205076
  name: "update_test_plan",
204891
205077
  description: "Update a test plan's name or description. Only provided fields are modified. Pass description=null to clear.",
204892
- category: CATEGORY42,
205078
+ category: CATEGORY43,
204893
205079
  inputSchema: updateTestPlanParamsJsonSchema,
204894
205080
  resultSchema: UpdateTestPlanResultSchema
204895
205081
  },
@@ -204900,7 +205086,7 @@ var testManagementPlansTools = [
204900
205086
  {
204901
205087
  name: "delete_test_plan",
204902
205088
  description: "Permanently delete a test plan. This does not delete associated test runs. Cannot be undone.",
204903
- category: CATEGORY42,
205089
+ category: CATEGORY43,
204904
205090
  inputSchema: deleteTestPlanParamsJsonSchema,
204905
205091
  resultSchema: DeleteTestPlanResultSchema
204906
205092
  },
@@ -204912,7 +205098,7 @@ var testManagementPlansTools = [
204912
205098
  {
204913
205099
  name: "add_test_plan_item",
204914
205100
  description: "Add a test case to a test plan. Resolves test case by ID or name. Optionally assign a person by email or name.",
204915
- category: CATEGORY42,
205101
+ category: CATEGORY43,
204916
205102
  inputSchema: addTestPlanItemParamsJsonSchema,
204917
205103
  resultSchema: AddTestPlanItemResultSchema
204918
205104
  },
@@ -204923,7 +205109,7 @@ var testManagementPlansTools = [
204923
205109
  {
204924
205110
  name: "remove_test_plan_item",
204925
205111
  description: "Remove a test case from a test plan by item ID. Get item IDs from get_test_plan.",
204926
- category: CATEGORY42,
205112
+ category: CATEGORY43,
204927
205113
  inputSchema: removeTestPlanItemParamsJsonSchema,
204928
205114
  resultSchema: RemoveTestPlanItemResultSchema
204929
205115
  },
@@ -204935,7 +205121,7 @@ var testManagementPlansTools = [
204935
205121
  {
204936
205122
  name: "list_test_runs",
204937
205123
  description: "List test runs in a test management project. Returns run names, IDs, and due dates.",
204938
- category: CATEGORY42,
205124
+ category: CATEGORY43,
204939
205125
  inputSchema: listTestRunsParamsJsonSchema,
204940
205126
  resultSchema: ListTestRunsResultSchema
204941
205127
  },
@@ -204946,7 +205132,7 @@ var testManagementPlansTools = [
204946
205132
  {
204947
205133
  name: "get_test_run",
204948
205134
  description: "Get test run details including all results. Accepts run ID or name within a project.",
204949
- category: CATEGORY42,
205135
+ category: CATEGORY43,
204950
205136
  inputSchema: getTestRunParamsJsonSchema,
204951
205137
  resultSchema: GetTestRunResultSchema
204952
205138
  },
@@ -204957,7 +205143,7 @@ var testManagementPlansTools = [
204957
205143
  {
204958
205144
  name: "create_test_run",
204959
205145
  description: "Create a test run in a project. For bulk creation from a plan, use run_test_plan instead.",
204960
- category: CATEGORY42,
205146
+ category: CATEGORY43,
204961
205147
  inputSchema: createTestRunParamsJsonSchema,
204962
205148
  resultSchema: CreateTestRunResultSchema
204963
205149
  },
@@ -204968,7 +205154,7 @@ var testManagementPlansTools = [
204968
205154
  {
204969
205155
  name: "update_test_run",
204970
205156
  description: "Update a test run's name, description, or due date. Only provided fields are modified. Pass null to clear optional fields.",
204971
- category: CATEGORY42,
205157
+ category: CATEGORY43,
204972
205158
  inputSchema: updateTestRunParamsJsonSchema,
204973
205159
  resultSchema: UpdateTestRunResultSchema
204974
205160
  },
@@ -204979,7 +205165,7 @@ var testManagementPlansTools = [
204979
205165
  {
204980
205166
  name: "delete_test_run",
204981
205167
  description: "Permanently delete a test run. This does not delete associated test results. Cannot be undone.",
204982
- category: CATEGORY42,
205168
+ category: CATEGORY43,
204983
205169
  inputSchema: deleteTestRunParamsJsonSchema,
204984
205170
  resultSchema: DeleteTestRunResultSchema
204985
205171
  },
@@ -204991,7 +205177,7 @@ var testManagementPlansTools = [
204991
205177
  {
204992
205178
  name: "list_test_results",
204993
205179
  description: "List test results in a test run. Returns result names, statuses, and assignees.",
204994
- category: CATEGORY42,
205180
+ category: CATEGORY43,
204995
205181
  inputSchema: listTestResultsParamsJsonSchema,
204996
205182
  resultSchema: ListTestResultsResultSchema
204997
205183
  },
@@ -205002,7 +205188,7 @@ var testManagementPlansTools = [
205002
205188
  {
205003
205189
  name: "get_test_result",
205004
205190
  description: "Get test result details. Accepts result ID or name.",
205005
- category: CATEGORY42,
205191
+ category: CATEGORY43,
205006
205192
  inputSchema: getTestResultParamsJsonSchema,
205007
205193
  resultSchema: GetTestResultResultSchema
205008
205194
  },
@@ -205013,7 +205199,7 @@ var testManagementPlansTools = [
205013
205199
  {
205014
205200
  name: "create_test_result",
205015
205201
  description: "Create a test result in a run. Resolves test case by ID or name. Status defaults to 'untested'.",
205016
- category: CATEGORY42,
205202
+ category: CATEGORY43,
205017
205203
  inputSchema: createTestResultParamsJsonSchema,
205018
205204
  resultSchema: CreateTestResultResultSchema
205019
205205
  },
@@ -205024,7 +205210,7 @@ var testManagementPlansTools = [
205024
205210
  {
205025
205211
  name: "update_test_result",
205026
205212
  description: "Update a test result's status, assignee, or description. Status values: untested, blocked, passed, failed.",
205027
- category: CATEGORY42,
205213
+ category: CATEGORY43,
205028
205214
  inputSchema: updateTestResultParamsJsonSchema,
205029
205215
  resultSchema: UpdateTestResultResultSchema
205030
205216
  },
@@ -205035,7 +205221,7 @@ var testManagementPlansTools = [
205035
205221
  {
205036
205222
  name: "delete_test_result",
205037
205223
  description: "Permanently delete a test result. Cannot be undone.",
205038
- category: CATEGORY42,
205224
+ category: CATEGORY43,
205039
205225
  inputSchema: deleteTestResultParamsJsonSchema,
205040
205226
  resultSchema: DeleteTestResultResultSchema
205041
205227
  },
@@ -205047,7 +205233,7 @@ var testManagementPlansTools = [
205047
205233
  {
205048
205234
  name: "run_test_plan",
205049
205235
  description: "Execute a test plan: creates a test run and one test result per plan item. Returns the run ID and count of results created. Optionally name the run and set a due date.",
205050
- category: CATEGORY42,
205236
+ category: CATEGORY43,
205051
205237
  inputSchema: runTestPlanParamsJsonSchema,
205052
205238
  annotations: {
205053
205239
  title: "Run Test Plan",
@@ -205064,13 +205250,13 @@ var testManagementPlansTools = [
205064
205250
  ];
205065
205251
 
205066
205252
  // src/mcp/tools/time.ts
205067
- var CATEGORY43 = "time tracking";
205253
+ var CATEGORY44 = "time tracking";
205068
205254
  var timeTools = [
205069
205255
  defineTool(
205070
205256
  {
205071
205257
  name: "log_time",
205072
205258
  description: "Log time spent on a Huly issue. Records a time entry with optional description. Time value is in minutes.",
205073
- category: CATEGORY43,
205259
+ category: CATEGORY44,
205074
205260
  inputSchema: logTimeParamsJsonSchema,
205075
205261
  resultSchema: LogTimeResultSchema
205076
205262
  },
@@ -205081,7 +205267,7 @@ var timeTools = [
205081
205267
  {
205082
205268
  name: "get_time_report",
205083
205269
  description: "Get time tracking report for a specific Huly issue. Shows total time, estimation, remaining time, and all time entries.",
205084
- category: CATEGORY43,
205270
+ category: CATEGORY44,
205085
205271
  inputSchema: getTimeReportParamsJsonSchema,
205086
205272
  resultSchema: TimeReportSummarySchema
205087
205273
  },
@@ -205092,7 +205278,7 @@ var timeTools = [
205092
205278
  {
205093
205279
  name: "list_time_spend_reports",
205094
205280
  description: "List all time entries across issues. Supports filtering by project and date range. Returns entries sorted by date (newest first).",
205095
- category: CATEGORY43,
205281
+ category: CATEGORY44,
205096
205282
  inputSchema: listTimeSpendReportsParamsJsonSchema,
205097
205283
  resultSchema: ListTimeSpendReportsResultSchema
205098
205284
  },
@@ -205103,7 +205289,7 @@ var timeTools = [
205103
205289
  {
205104
205290
  name: "get_detailed_time_report",
205105
205291
  description: "Get detailed time breakdown for a project. Shows total time grouped by issue and by employee. Supports date range filtering.",
205106
- category: CATEGORY43,
205292
+ category: CATEGORY44,
205107
205293
  inputSchema: getDetailedTimeReportParamsJsonSchema,
205108
205294
  resultSchema: DetailedTimeReportSchema
205109
205295
  },
@@ -205114,7 +205300,7 @@ var timeTools = [
205114
205300
  {
205115
205301
  name: "list_work_slots",
205116
205302
  description: "List scheduled work slots created by schedule_todo, Huly UI, or other clients. Shows planned time blocks attached to ToDos. Supports filtering by employee and date range.",
205117
- category: CATEGORY43,
205303
+ category: CATEGORY44,
205118
205304
  inputSchema: listWorkSlotsParamsJsonSchema,
205119
205305
  resultSchema: ListWorkSlotsResultSchema
205120
205306
  },
@@ -205125,7 +205311,7 @@ var timeTools = [
205125
205311
  {
205126
205312
  name: "start_timer",
205127
205313
  description: "Start a client-side timer on a Huly issue. Validates the issue exists and returns a start timestamp. Use log_time to record the elapsed time when done.",
205128
- category: CATEGORY43,
205314
+ category: CATEGORY44,
205129
205315
  inputSchema: startTimerParamsJsonSchema,
205130
205316
  resultSchema: StartTimerResultSchema
205131
205317
  },
@@ -205136,7 +205322,7 @@ var timeTools = [
205136
205322
  {
205137
205323
  name: "stop_timer",
205138
205324
  description: "Stop a client-side timer on a Huly issue. Returns the stop timestamp. Calculate elapsed time from start/stop timestamps and use log_time to record it.",
205139
- category: CATEGORY43,
205325
+ category: CATEGORY44,
205140
205326
  inputSchema: stopTimerParamsJsonSchema,
205141
205327
  resultSchema: StopTimerResultSchema
205142
205328
  },
@@ -205146,7 +205332,7 @@ var timeTools = [
205146
205332
  ];
205147
205333
 
205148
205334
  // src/huly/operations/user-statuses.ts
205149
- var import_core89 = __toESM(require_lib5(), 1);
205335
+ var import_core90 = __toESM(require_lib5(), 1);
205150
205336
  var userStatusSummary = (status) => ({
205151
205337
  id: UserStatusId.make(status._id),
205152
205338
  user: UserStatusAccountUuid.make(status.user),
@@ -205163,7 +205349,7 @@ var listUserStatuses = (params) => Effect_exports.gen(function* () {
205163
205349
  hulyQuery(query),
205164
205350
  {
205165
205351
  limit: clampLimit(params.limit),
205166
- sort: { modifiedOn: import_core89.SortingOrder.Descending }
205352
+ sort: { modifiedOn: import_core90.SortingOrder.Descending }
205167
205353
  }
205168
205354
  );
205169
205355
  return ListUserStatusesResultSchema.make({
@@ -205173,13 +205359,13 @@ var listUserStatuses = (params) => Effect_exports.gen(function* () {
205173
205359
  });
205174
205360
 
205175
205361
  // src/mcp/tools/user-statuses.ts
205176
- var CATEGORY44 = "user-statuses";
205362
+ var CATEGORY45 = "user-statuses";
205177
205363
  var userStatusTools = [
205178
205364
  defineTool(
205179
205365
  {
205180
205366
  name: "list_user_statuses",
205181
205367
  description: "List Huly user presence records. Returns account UUIDs, online status, and last modified timestamp. Use this to check who is currently connected; presence is maintained by Huly server sessions. Filter by online or account UUID.",
205182
- category: CATEGORY44,
205368
+ category: CATEGORY45,
205183
205369
  inputSchema: listUserStatusesParamsJsonSchema,
205184
205370
  resultSchema: ListUserStatusesResultSchema
205185
205371
  },
@@ -205189,7 +205375,7 @@ var userStatusTools = [
205189
205375
  ];
205190
205376
 
205191
205377
  // src/huly/operations/views.ts
205192
- var import_core90 = __toESM(require_lib5(), 1);
205378
+ var import_core91 = __toESM(require_lib5(), 1);
205193
205379
  var viewletIdField2 = (viewletId) => viewletId === void 0 || viewletId === null ? {} : { viewletId: ViewletId.make(viewletId) };
205194
205380
  var stringField2 = (key, value3) => value3 === void 0 || value3.trim() === "" ? {} : { [key]: value3 };
205195
205381
  var visibilityFor2 = (filteredView, account) => filteredView.users.includes(account) ? "own" : "shared";
@@ -205289,7 +205475,7 @@ var listFilteredViews = (params) => Effect_exports.gen(function* () {
205289
205475
  const filteredViews = yield* client.findAll(
205290
205476
  view.class.FilteredView,
205291
205477
  hulyQuery(query),
205292
- { sort: { modifiedOn: import_core90.SortingOrder.Descending }, total: true }
205478
+ { sort: { modifiedOn: import_core91.SortingOrder.Descending }, total: true }
205293
205479
  );
205294
205480
  const visible = filterByVisibility2(filteredViews, params.visibility, account);
205295
205481
  const limited = visible.slice(0, clampLimit(params.limit));
@@ -205343,13 +205529,13 @@ var listViewlets = (params) => Effect_exports.gen(function* () {
205343
205529
  });
205344
205530
 
205345
205531
  // src/mcp/tools/views.ts
205346
- var CATEGORY45 = "views";
205532
+ var CATEGORY46 = "views";
205347
205533
  var viewTools = [
205348
205534
  defineTool(
205349
205535
  {
205350
205536
  name: "list_filtered_views",
205351
205537
  description: "List saved filtered views from @hcengineering/view. Use attachedTo to scope by raw app/resource string such as board:app:Board; omit attachedTo to discover saved views across modules. Reports own/shared visibility from the current account's users membership.",
205352
- category: CATEGORY45,
205538
+ category: CATEGORY46,
205353
205539
  inputSchema: listFilteredViewsParamsJsonSchema,
205354
205540
  resultSchema: ListFilteredViewsResultSchema
205355
205541
  },
@@ -205360,7 +205546,7 @@ var viewTools = [
205360
205546
  {
205361
205547
  name: "get_filtered_view",
205362
205548
  description: "Get one saved filtered view by FilteredView _id or exact name. Pass attachedTo, such as board:app:Board, when an exact name may exist in more than one module. Read-only; no saved-view writes are performed.",
205363
- category: CATEGORY45,
205549
+ category: CATEGORY46,
205364
205550
  inputSchema: getFilteredViewParamsJsonSchema,
205365
205551
  resultSchema: FilteredViewDetailSchema
205366
205552
  },
@@ -205371,7 +205557,7 @@ var viewTools = [
205371
205557
  {
205372
205558
  name: "list_viewlets",
205373
205559
  description: "List viewlets from @hcengineering/view model metadata. Use attachTo with a Huly class id such as board:class:Card to scope by rendered document class; use list_huly_classes when you need class ids. The optional viewlet locator accepts a Viewlet _id, exact title, exact variant, or descriptor _id; descriptor ids may return multiple viewlets. Includes descriptor metadata and matching ViewletPreference configs.",
205374
- category: CATEGORY45,
205560
+ category: CATEGORY46,
205375
205561
  inputSchema: listViewletsParamsJsonSchema,
205376
205562
  resultSchema: ListViewletsResultSchema
205377
205563
  },
@@ -205381,7 +205567,7 @@ var viewTools = [
205381
205567
  ];
205382
205568
 
205383
205569
  // src/huly/operations/virtual-office.ts
205384
- var import_core91 = __toESM(require_lib5(), 1);
205570
+ var import_core92 = __toESM(require_lib5(), 1);
205385
205571
  var import_love = __toESM(require_lib31(), 1);
205386
205572
  var ROOM_ACCESS_TO_STRING = {
205387
205573
  [import_love.RoomAccess.Open]: "open",
@@ -205487,7 +205673,7 @@ var listOfficeFloors = (params) => Effect_exports.gen(function* () {
205487
205673
  const floors = yield* client.findAll(
205488
205674
  love.class.Floor,
205489
205675
  hulyQuery({}),
205490
- { limit: clampLimit(params.limit), sort: { name: import_core91.SortingOrder.Ascending } }
205676
+ { limit: clampLimit(params.limit), sort: { name: import_core92.SortingOrder.Ascending } }
205491
205677
  );
205492
205678
  return floors.map(summarizeFloor);
205493
205679
  });
@@ -205507,7 +205693,7 @@ var listOfficeRooms = (params) => Effect_exports.gen(function* () {
205507
205693
  const rooms = yield* client.findAll(
205508
205694
  love.class.Room,
205509
205695
  hulyQuery(query),
205510
- { limit: clampLimit(params.limit), sort: { name: import_core91.SortingOrder.Ascending } }
205696
+ { limit: clampLimit(params.limit), sort: { name: import_core92.SortingOrder.Ascending } }
205511
205697
  );
205512
205698
  return rooms.map(summarizeRoom);
205513
205699
  });
@@ -205530,7 +205716,7 @@ var listOffices = (params) => Effect_exports.gen(function* () {
205530
205716
  const offices = yield* client.findAll(
205531
205717
  love.class.Office,
205532
205718
  hulyQuery(query),
205533
- { limit: clampLimit(params.limit), sort: { name: import_core91.SortingOrder.Ascending } }
205719
+ { limit: clampLimit(params.limit), sort: { name: import_core92.SortingOrder.Ascending } }
205534
205720
  );
205535
205721
  const persons = yield* lookupPersons(
205536
205722
  client,
@@ -205569,7 +205755,7 @@ var listActiveRoomParticipants = (params) => Effect_exports.gen(function* () {
205569
205755
  const participants = yield* client.findAll(
205570
205756
  love.class.ParticipantInfo,
205571
205757
  hulyQuery(query),
205572
- { sort: { name: import_core91.SortingOrder.Ascending } }
205758
+ { sort: { name: import_core92.SortingOrder.Ascending } }
205573
205759
  );
205574
205760
  const rooms = yield* lookupRooms(client, participants.map((participant) => participant.room));
205575
205761
  return participants.map((participant) => ({
@@ -205597,7 +205783,7 @@ var listMeetingMinutes = (params) => Effect_exports.gen(function* () {
205597
205783
  const minutes2 = yield* client.findAll(
205598
205784
  love.class.MeetingMinutes,
205599
205785
  hulyQuery(query),
205600
- { limit: clampLimit(params.limit), sort: { createdOn: import_core91.SortingOrder.Descending } }
205786
+ { limit: clampLimit(params.limit), sort: { createdOn: import_core92.SortingOrder.Descending } }
205601
205787
  );
205602
205788
  return minutes2.map(summarizeMinutes);
205603
205789
  });
@@ -205634,7 +205820,7 @@ var listOfficeDefaults = (_params) => Effect_exports.gen(function* () {
205634
205820
  const rooms = yield* client.findAll(
205635
205821
  love.class.Room,
205636
205822
  hulyQuery({}),
205637
- { sort: { name: import_core91.SortingOrder.Ascending } }
205823
+ { sort: { name: import_core92.SortingOrder.Ascending } }
205638
205824
  );
205639
205825
  return rooms.map((room) => ({
205640
205826
  roomId: RoomId.make(room._id),
@@ -205646,13 +205832,13 @@ var listOfficeDefaults = (_params) => Effect_exports.gen(function* () {
205646
205832
  });
205647
205833
 
205648
205834
  // src/mcp/tools/virtual-office.ts
205649
- var CATEGORY46 = "virtual-office";
205835
+ var CATEGORY47 = "virtual-office";
205650
205836
  var virtualOfficeTools = [
205651
205837
  defineTool(
205652
205838
  {
205653
205839
  name: "list_office_floors",
205654
205840
  description: "List virtual office floors.",
205655
- category: CATEGORY46,
205841
+ category: CATEGORY47,
205656
205842
  inputSchema: listOfficeFloorsParamsJsonSchema,
205657
205843
  resultSchema: ListOfficeFloorsResultSchema
205658
205844
  },
@@ -205663,7 +205849,7 @@ var virtualOfficeTools = [
205663
205849
  {
205664
205850
  name: "get_office_floor",
205665
205851
  description: "Get one virtual office floor by floorId.",
205666
- category: CATEGORY46,
205852
+ category: CATEGORY47,
205667
205853
  inputSchema: getOfficeFloorParamsJsonSchema,
205668
205854
  resultSchema: GetOfficeFloorResultSchema
205669
205855
  },
@@ -205674,7 +205860,7 @@ var virtualOfficeTools = [
205674
205860
  {
205675
205861
  name: "list_office_rooms",
205676
205862
  description: "List virtual office rooms, including access mode, type, floor, floor-plan position/size, language, and recording/transcription defaults.",
205677
- category: CATEGORY46,
205863
+ category: CATEGORY47,
205678
205864
  inputSchema: listOfficeRoomsParamsJsonSchema,
205679
205865
  resultSchema: ListOfficeRoomsResultSchema
205680
205866
  },
@@ -205685,7 +205871,7 @@ var virtualOfficeTools = [
205685
205871
  {
205686
205872
  name: "get_office_room",
205687
205873
  description: "Get one virtual office room by roomId, including description when readable.",
205688
- category: CATEGORY46,
205874
+ category: CATEGORY47,
205689
205875
  inputSchema: getOfficeRoomParamsJsonSchema,
205690
205876
  resultSchema: GetOfficeRoomResultSchema
205691
205877
  },
@@ -205696,7 +205882,7 @@ var virtualOfficeTools = [
205696
205882
  {
205697
205883
  name: "list_offices",
205698
205884
  description: "List personal office rooms and their assigned people when readable.",
205699
- category: CATEGORY46,
205885
+ category: CATEGORY47,
205700
205886
  inputSchema: listOfficesParamsJsonSchema,
205701
205887
  resultSchema: ListOfficesResultSchema
205702
205888
  },
@@ -205707,7 +205893,7 @@ var virtualOfficeTools = [
205707
205893
  {
205708
205894
  name: "get_office",
205709
205895
  description: "Get one personal office room by roomId, including assigned person and description when readable.",
205710
- category: CATEGORY46,
205896
+ category: CATEGORY47,
205711
205897
  inputSchema: getOfficeParamsJsonSchema,
205712
205898
  resultSchema: GetOfficeResultSchema
205713
205899
  },
@@ -205718,7 +205904,7 @@ var virtualOfficeTools = [
205718
205904
  {
205719
205905
  name: "list_active_room_info",
205720
205906
  description: "List transient active room occupancy summaries.",
205721
- category: CATEGORY46,
205907
+ category: CATEGORY47,
205722
205908
  inputSchema: listActiveRoomInfoParamsJsonSchema,
205723
205909
  resultSchema: ListActiveRoomInfoResultSchema
205724
205910
  },
@@ -205729,7 +205915,7 @@ var virtualOfficeTools = [
205729
205915
  {
205730
205916
  name: "list_active_room_participants",
205731
205917
  description: "List transient active virtual-office participants and positions, optionally filtered by roomId.",
205732
- category: CATEGORY46,
205918
+ category: CATEGORY47,
205733
205919
  inputSchema: listActiveRoomParticipantsParamsJsonSchema,
205734
205920
  resultSchema: ListActiveRoomParticipantsResultSchema
205735
205921
  },
@@ -205740,7 +205926,7 @@ var virtualOfficeTools = [
205740
205926
  {
205741
205927
  name: "list_meeting_minutes",
205742
205928
  description: "List meeting notes/transcript records (minutes) by optional attachment target and created-on range.",
205743
- category: CATEGORY46,
205929
+ category: CATEGORY47,
205744
205930
  inputSchema: listMeetingMinutesParamsJsonSchema,
205745
205931
  resultSchema: ListMeetingMinutesResultSchema
205746
205932
  },
@@ -205751,7 +205937,7 @@ var virtualOfficeTools = [
205751
205937
  {
205752
205938
  name: "get_meeting_minutes",
205753
205939
  description: "Get one meeting notes/transcript record (minutes) by meetingMinutesId, including description when readable.",
205754
- category: CATEGORY46,
205940
+ category: CATEGORY47,
205755
205941
  inputSchema: getMeetingMinutesParamsJsonSchema,
205756
205942
  resultSchema: GetMeetingMinutesResultSchema
205757
205943
  },
@@ -205762,7 +205948,7 @@ var virtualOfficeTools = [
205762
205948
  {
205763
205949
  name: "list_device_preferences",
205764
205950
  description: "List readable virtual-office media device preferences.",
205765
- category: CATEGORY46,
205951
+ category: CATEGORY47,
205766
205952
  inputSchema: listDevicePreferencesParamsJsonSchema,
205767
205953
  resultSchema: ListDevicePreferencesResultSchema
205768
205954
  },
@@ -205773,7 +205959,7 @@ var virtualOfficeTools = [
205773
205959
  {
205774
205960
  name: "list_office_defaults",
205775
205961
  description: "List room-level language, default recording, and default transcription settings.",
205776
- category: CATEGORY46,
205962
+ category: CATEGORY47,
205777
205963
  inputSchema: listOfficeDefaultsParamsJsonSchema,
205778
205964
  resultSchema: ListOfficeDefaultsResultSchema
205779
205965
  },
@@ -205783,15 +205969,15 @@ var virtualOfficeTools = [
205783
205969
  ];
205784
205970
 
205785
205971
  // src/huly/operations/workspace.ts
205786
- var import_core92 = __toESM(require_lib5(), 1);
205972
+ var import_core93 = __toESM(require_lib5(), 1);
205787
205973
  var accountRoleMap = {
205788
- READONLYGUEST: import_core92.AccountRole.ReadOnlyGuest,
205789
- DocGuest: import_core92.AccountRole.DocGuest,
205790
- GUEST: import_core92.AccountRole.Guest,
205791
- USER: import_core92.AccountRole.User,
205792
- MAINTAINER: import_core92.AccountRole.Maintainer,
205793
- OWNER: import_core92.AccountRole.Owner,
205794
- ADMIN: import_core92.AccountRole.Admin
205974
+ READONLYGUEST: import_core93.AccountRole.ReadOnlyGuest,
205975
+ DocGuest: import_core93.AccountRole.DocGuest,
205976
+ GUEST: import_core93.AccountRole.Guest,
205977
+ USER: import_core93.AccountRole.User,
205978
+ MAINTAINER: import_core93.AccountRole.Maintainer,
205979
+ OWNER: import_core93.AccountRole.Owner,
205980
+ ADMIN: import_core93.AccountRole.Admin
205795
205981
  };
205796
205982
  var exactAccountRoleMapping = (value3) => value3;
205797
205983
  exactAccountRoleMapping(true);
@@ -205954,13 +206140,13 @@ var getRegions = () => Effect_exports.gen(function* () {
205954
206140
  });
205955
206141
 
205956
206142
  // src/mcp/tools/workspace.ts
205957
- var CATEGORY47 = "workspace";
206143
+ var CATEGORY48 = "workspace";
205958
206144
  var workspaceTools = [
205959
206145
  defineWorkspaceTool(
205960
206146
  {
205961
206147
  name: "list_workspace_members",
205962
206148
  description: "List members in the current Huly workspace with their roles. Returns members with account IDs and roles.",
205963
- category: CATEGORY47,
206149
+ category: CATEGORY48,
205964
206150
  inputSchema: listWorkspaceMembersParamsJsonSchema,
205965
206151
  resultSchema: ListWorkspaceMembersResultSchema
205966
206152
  },
@@ -205971,7 +206157,7 @@ var workspaceTools = [
205971
206157
  {
205972
206158
  name: "update_member_role",
205973
206159
  description: "Update a workspace member's role. Requires appropriate permissions. Valid roles: READONLYGUEST, DocGuest, GUEST, USER, MAINTAINER, OWNER, ADMIN.",
205974
- category: CATEGORY47,
206160
+ category: CATEGORY48,
205975
206161
  inputSchema: updateMemberRoleParamsJsonSchema,
205976
206162
  resultSchema: UpdateMemberRoleResultSchema
205977
206163
  },
@@ -205981,7 +206167,7 @@ var workspaceTools = [
205981
206167
  defineNoParamsWorkspaceTool({
205982
206168
  name: "get_workspace_info",
205983
206169
  description: "Get information about the current workspace including name, URL, region, and settings.",
205984
- category: CATEGORY47,
206170
+ category: CATEGORY48,
205985
206171
  inputSchema: emptyParamsJsonSchema,
205986
206172
  resultSchema: WorkspaceInfoSchema
205987
206173
  }, getWorkspaceInfo),
@@ -205989,7 +206175,7 @@ var workspaceTools = [
205989
206175
  {
205990
206176
  name: "list_workspaces",
205991
206177
  description: "List all workspaces accessible to the current user. Returns workspace summaries sorted by last visit.",
205992
- category: CATEGORY47,
206178
+ category: CATEGORY48,
205993
206179
  inputSchema: listWorkspacesParamsJsonSchema,
205994
206180
  resultSchema: ListWorkspacesResultSchema
205995
206181
  },
@@ -206000,7 +206186,7 @@ var workspaceTools = [
206000
206186
  {
206001
206187
  name: "create_workspace",
206002
206188
  description: "Create a new Huly workspace. Returns the workspace UUID and URL. Optionally specify a region.",
206003
- category: CATEGORY47,
206189
+ category: CATEGORY48,
206004
206190
  inputSchema: createWorkspaceParamsJsonSchema,
206005
206191
  resultSchema: CreateWorkspaceResultSchema
206006
206192
  },
@@ -206010,14 +206196,14 @@ var workspaceTools = [
206010
206196
  defineNoParamsWorkspaceTool({
206011
206197
  name: "delete_workspace",
206012
206198
  description: "Permanently delete the current workspace. This action cannot be undone. Use with extreme caution.",
206013
- category: CATEGORY47,
206199
+ category: CATEGORY48,
206014
206200
  inputSchema: emptyParamsJsonSchema,
206015
206201
  resultSchema: DeleteWorkspaceResultSchema
206016
206202
  }, deleteWorkspace),
206017
206203
  defineNoParamsWorkspaceTool({
206018
206204
  name: "get_user_profile",
206019
206205
  description: "Get the current user's profile information including bio, location, and social links.",
206020
- category: CATEGORY47,
206206
+ category: CATEGORY48,
206021
206207
  inputSchema: emptyParamsJsonSchema,
206022
206208
  resultSchema: GetUserProfileResultSchema
206023
206209
  }, getUserProfile),
@@ -206025,7 +206211,7 @@ var workspaceTools = [
206025
206211
  {
206026
206212
  name: "update_user_profile",
206027
206213
  description: "Update the current user's profile. Supports bio, city, country, website, social links, and public visibility.",
206028
- category: CATEGORY47,
206214
+ category: CATEGORY48,
206029
206215
  inputSchema: updateUserProfileParamsJsonSchema,
206030
206216
  resultSchema: UpdateUserProfileResultSchema
206031
206217
  },
@@ -206036,7 +206222,7 @@ var workspaceTools = [
206036
206222
  {
206037
206223
  name: "update_guest_settings",
206038
206224
  description: "Update workspace guest settings. Control read-only guest access and guest sign-up permissions.",
206039
- category: CATEGORY47,
206225
+ category: CATEGORY48,
206040
206226
  inputSchema: updateGuestSettingsParamsJsonSchema,
206041
206227
  resultSchema: UpdateGuestSettingsResultSchema
206042
206228
  },
@@ -206047,7 +206233,7 @@ var workspaceTools = [
206047
206233
  {
206048
206234
  name: "create_access_link",
206049
206235
  description: `Create a Huly workspace access link. When role is omitted, role=${DEFAULT_ACCESS_LINK_ROLE}. Supports anonymous reusable guest links by setting personalized=false with notBefore and expiration, and can restrict access to specific Huly space IDs via spaces.`,
206050
- category: CATEGORY47,
206236
+ category: CATEGORY48,
206051
206237
  inputSchema: createAccessLinkParamsJsonSchema,
206052
206238
  resultSchema: CreateAccessLinkResultSchema
206053
206239
  },
@@ -206058,7 +206244,7 @@ var workspaceTools = [
206058
206244
  {
206059
206245
  name: "get_regions",
206060
206246
  description: "Get available regions for workspace creation. Returns region codes and display names.",
206061
- category: CATEGORY47,
206247
+ category: CATEGORY48,
206062
206248
  inputSchema: getRegionsParamsJsonSchema,
206063
206249
  resultSchema: GetRegionsResultSchema
206064
206250
  },
@@ -206102,6 +206288,7 @@ var allTools = [
206102
206288
  ...calendarTools,
206103
206289
  ...timeTools,
206104
206290
  ...plannerTools,
206291
+ ...preferenceTools,
206105
206292
  ...searchTools,
206106
206293
  ...activityTools,
206107
206294
  ...notificationTools,