@elnora-ai/cli 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +2 -1
  2. package/dist/cli.js +845 -444
  3. package/package.json +5 -5
package/dist/cli.js CHANGED
@@ -30,7 +30,7 @@ var VERSION, PRODUCTION_BASE_URL, BASE_URL, AI_SERVER_URL, PRODUCTION_MCP_URL, M
30
30
  var init_config = __esm({
31
31
  "src/lib/config.ts"() {
32
32
  "use strict";
33
- VERSION = true ? "2.3.0" : process.env.npm_package_version ?? "0.0.0-dev";
33
+ VERSION = true ? "2.5.0" : process.env.npm_package_version ?? "0.0.0-dev";
34
34
  PRODUCTION_BASE_URL = "https://platform.elnora.ai/api/v1";
35
35
  BASE_URL = process.env.ELNORA_API_URL ?? PRODUCTION_BASE_URL;
36
36
  AI_SERVER_URL = process.env.ELNORA_AI_SERVER_URL ?? "https://platform.elnora.ai/ai-server";
@@ -51,6 +51,9 @@ var init_config = __esm({
51
51
  tasks: "/tasks",
52
52
  task: "/tasks/{id}",
53
53
  task_messages: "/tasks/{id}/messages",
54
+ task_unarchive: "/tasks/{id}/unarchive",
55
+ task_attachments: "/tasks/{id}/attachments",
56
+ task_attachment_content: "/tasks/{id}/attachments/{aid}/content",
54
57
  // Files
55
58
  files: "/files",
56
59
  file: "/files/{id}",
@@ -66,14 +69,25 @@ var init_config = __esm({
66
69
  file_working_copy: "/files/{id}/working-copy",
67
70
  file_commit: "/files/{id}/commit",
68
71
  file_upload_batch: "/files/upload/batch",
72
+ file_move: "/files/{id}/move",
73
+ // Per-file sharing (KB Access V2)
74
+ file_share: "/files/{id}/share",
75
+ file_share_ace: "/files/{id}/share/{aceId}",
76
+ file_shares: "/files/{id}/shares",
69
77
  // Folders (closure-table Knowledge Base — the `folder`/`folder_move` paths are shared with the
70
78
  // legacy controller; the KB read/mutation verbs are distinguished by HTTP method at the call site)
71
79
  folder: "/folders/{id}",
80
+ folder_create: "/folders",
72
81
  folder_move: "/folders/{id}/move",
82
+ folder_archive: "/folders/{id}/archive",
73
83
  folders_files: "/folders/files",
74
84
  folder_roots: "/folders/roots",
75
85
  folder_children: "/folders/{id}/children",
76
86
  folder_files: "/folders/{id}/files",
87
+ // Per-folder sharing (KB Access V2)
88
+ folder_share: "/folders/{id}/share",
89
+ folder_share_ace: "/folders/{id}/share/{aceId}",
90
+ folder_shares: "/folders/{id}/shares",
77
91
  // Organizations
78
92
  organizations: "/organizations",
79
93
  organization: "/organizations/{id}",
@@ -85,6 +99,8 @@ var init_config = __esm({
85
99
  organization_set_default: "/organizations/{id}/set-default",
86
100
  organizations_all: "/organizations/all",
87
101
  org_files: "/organizations/{orgId}/files",
102
+ org_member_directory: "/organizations/{orgId}/members/directory",
103
+ org_kb_autotidy: "/organizations/{orgId}/kb-autotidy",
88
104
  // Organization invitations
89
105
  org_invitations: "/organizations/{orgId}/invitations",
90
106
  org_invitation: "/organizations/{orgId}/invitations/{invId}",
@@ -96,6 +112,10 @@ var init_config = __esm({
96
112
  library_files: "/organizations/{orgId}/library/files",
97
113
  library_folders: "/organizations/{orgId}/library/folders",
98
114
  library_folder: "/organizations/{orgId}/library/folders/{id}",
115
+ // Knowledge Base review queue
116
+ kb_review_items: "/kb-review-items",
117
+ kb_review_approve: "/kb-review-items/{id}/approve",
118
+ kb_review_reject: "/kb-review-items/{id}/reject",
99
119
  // Search
100
120
  search_tasks: "/search/tasks",
101
121
  search_files: "/search/files",
@@ -1819,6 +1839,7 @@ var EXPECTED_SKILLS = [
1819
1839
  "elnora-orgs",
1820
1840
  "elnora-platform",
1821
1841
  "elnora-projects",
1842
+ "elnora-review",
1822
1843
  "elnora-search",
1823
1844
  "elnora-tasks"
1824
1845
  ];
@@ -3738,18 +3759,44 @@ var filesList = {
3738
3759
  }
3739
3760
  };
3740
3761
 
3741
- // src/commands/files/promote.ts
3762
+ // src/commands/files/move.ts
3742
3763
  import { z as z34 } from "zod";
3743
3764
  var inputSchema32 = z34.object({
3744
- fileId: z34.string().uuid().describe("File ID"),
3745
- visibility: z34.string().min(1).describe("Visibility level")
3765
+ fileId: z34.string().uuid().describe("File ID to move"),
3766
+ parentFolderId: z34.string().uuid().describe("Destination Knowledge Base folder ID")
3767
+ });
3768
+ var filesMove = {
3769
+ name: "files.move",
3770
+ group: "files",
3771
+ description: "Move a file to a different Knowledge Base folder",
3772
+ inputSchema: inputSchema32,
3773
+ outputSchema: z34.any(),
3774
+ annotations: { idempotentHint: true },
3775
+ async execute(input, ctx) {
3776
+ return ctx.client.patch(
3777
+ "file_move",
3778
+ { parentFolderId: input.parentFolderId },
3779
+ { pathParams: { id: input.fileId } }
3780
+ );
3781
+ },
3782
+ formatOutput(output, format) {
3783
+ if (format === "compact") return output.id ?? JSON.stringify(output);
3784
+ return JSON.stringify(output, null, 2);
3785
+ }
3786
+ };
3787
+
3788
+ // src/commands/files/promote.ts
3789
+ import { z as z35 } from "zod";
3790
+ var inputSchema33 = z35.object({
3791
+ fileId: z35.string().uuid().describe("File ID"),
3792
+ visibility: z35.string().min(1).describe("Visibility level")
3746
3793
  });
3747
3794
  var filesPromote = {
3748
3795
  name: "files.promote",
3749
3796
  group: "files",
3750
3797
  description: "Promote a file to a new visibility level",
3751
- inputSchema: inputSchema32,
3752
- outputSchema: z34.any(),
3798
+ inputSchema: inputSchema33,
3799
+ outputSchema: z35.any(),
3753
3800
  async execute(input, ctx) {
3754
3801
  return ctx.client.post(
3755
3802
  "file_promote",
@@ -3766,17 +3813,17 @@ var filesPromote = {
3766
3813
  };
3767
3814
 
3768
3815
  // src/commands/files/restore.ts
3769
- import { z as z35 } from "zod";
3770
- var inputSchema33 = z35.object({
3771
- fileId: z35.string().uuid().describe("File ID"),
3772
- versionId: z35.string().uuid().describe("Version ID to restore")
3816
+ import { z as z36 } from "zod";
3817
+ var inputSchema34 = z36.object({
3818
+ fileId: z36.string().uuid().describe("File ID"),
3819
+ versionId: z36.string().uuid().describe("Version ID to restore")
3773
3820
  });
3774
3821
  var filesRestore = {
3775
3822
  name: "files.restore",
3776
3823
  group: "files",
3777
3824
  description: "Restore a file to a specific version",
3778
- inputSchema: inputSchema33,
3779
- outputSchema: z35.any(),
3825
+ inputSchema: inputSchema34,
3826
+ outputSchema: z36.any(),
3780
3827
  async execute(input, ctx) {
3781
3828
  return ctx.client.post("file_version_restore", void 0, {
3782
3829
  pathParams: { id: input.fileId, vid: input.versionId }
@@ -3789,18 +3836,18 @@ var filesRestore = {
3789
3836
  };
3790
3837
 
3791
3838
  // src/commands/files/search-content.ts
3792
- import { z as z36 } from "zod";
3793
- var inputSchema34 = z36.object({
3794
- query: z36.string().min(1).describe("Search query"),
3795
- project: z36.string().uuid().optional().describe("Project ID to scope search"),
3839
+ import { z as z37 } from "zod";
3840
+ var inputSchema35 = z37.object({
3841
+ query: z37.string().min(1).describe("Search query"),
3842
+ project: z37.string().uuid().optional().describe("Project ID to scope search"),
3796
3843
  ...paginationInput
3797
3844
  });
3798
3845
  var filesSearchContent = {
3799
3846
  name: "files.searchContent",
3800
3847
  group: "files",
3801
3848
  description: "Search file content across projects",
3802
- inputSchema: inputSchema34,
3803
- outputSchema: z36.any(),
3849
+ inputSchema: inputSchema35,
3850
+ outputSchema: z37.any(),
3804
3851
  annotations: { readOnlyHint: true },
3805
3852
  async execute(input, ctx) {
3806
3853
  const queryParams = {
@@ -3817,20 +3864,97 @@ var filesSearchContent = {
3817
3864
  }
3818
3865
  };
3819
3866
 
3867
+ // src/commands/files/share.ts
3868
+ init_errors();
3869
+ import { z as z38 } from "zod";
3870
+ var inputSchema36 = z38.object({
3871
+ fileId: z38.string().uuid().describe("File ID to share"),
3872
+ userId: z38.number().int().positive().optional().describe("User ID to share with (omit when using --org-wide)"),
3873
+ orgWide: z38.boolean().default(false).describe("Share with everyone in the organization"),
3874
+ role: z38.enum(["viewer", "editor", "admin"]).default("editor").describe("Access role to grant")
3875
+ });
3876
+ var filesShare = {
3877
+ name: "files.share",
3878
+ group: "files",
3879
+ description: "Share a file with a user or the whole organization (default role: editor)",
3880
+ inputSchema: inputSchema36,
3881
+ outputSchema: z38.any(),
3882
+ async execute(input, ctx) {
3883
+ if (input.orgWide === (input.userId !== void 0)) {
3884
+ throw new ValidationError(
3885
+ "Specify exactly one recipient.",
3886
+ "Pass either --user-id <id> or --org-wide (not both, and not neither)."
3887
+ );
3888
+ }
3889
+ const body = input.orgWide ? { isOrgWide: true, role: input.role } : { userId: input.userId, role: input.role };
3890
+ return ctx.client.post("file_share", body, { pathParams: { id: input.fileId } });
3891
+ },
3892
+ formatOutput(output, format) {
3893
+ if (format === "compact") return output.id ?? JSON.stringify(output);
3894
+ return JSON.stringify(output, null, 2);
3895
+ }
3896
+ };
3897
+
3898
+ // src/commands/files/shares.ts
3899
+ import { z as z39 } from "zod";
3900
+ var inputSchema37 = z39.object({
3901
+ fileId: z39.string().uuid().describe("File ID")
3902
+ });
3903
+ var filesShares = {
3904
+ name: "files.shares",
3905
+ group: "files",
3906
+ description: "List the current shares on a file",
3907
+ inputSchema: inputSchema37,
3908
+ outputSchema: z39.any(),
3909
+ annotations: { readOnlyHint: true },
3910
+ async execute(input, ctx) {
3911
+ return ctx.client.get("file_shares", { pathParams: { id: input.fileId } });
3912
+ },
3913
+ formatOutput(output, format) {
3914
+ if (format === "compact") return output.id ?? JSON.stringify(output);
3915
+ return JSON.stringify(output, null, 2);
3916
+ }
3917
+ };
3918
+
3919
+ // src/commands/files/unshare.ts
3920
+ import { z as z40 } from "zod";
3921
+ var inputSchema38 = z40.object({
3922
+ fileId: z40.string().uuid().describe("File ID"),
3923
+ aceId: z40.string().uuid().describe("Share (ACE) ID to revoke")
3924
+ });
3925
+ var filesUnshare = {
3926
+ name: "files.unshare",
3927
+ group: "files",
3928
+ description: "Revoke a file share by its ACE id",
3929
+ inputSchema: inputSchema38,
3930
+ outputSchema: z40.any(),
3931
+ annotations: { destructiveHint: true, idempotentHint: true },
3932
+ async execute(input, ctx) {
3933
+ await ctx.client.del("file_share_ace", {
3934
+ pathParams: { id: input.fileId, aceId: input.aceId }
3935
+ });
3936
+ return { revoked: true, fileId: input.fileId, aceId: input.aceId };
3937
+ },
3938
+ formatOutput(output, format) {
3939
+ if (format === "compact") return output.aceId ?? JSON.stringify(output);
3940
+ return JSON.stringify(output, null, 2);
3941
+ }
3942
+ };
3943
+
3820
3944
  // src/commands/files/update.ts
3821
3945
  init_errors();
3822
- import { z as z37 } from "zod";
3823
- var inputSchema35 = z37.object({
3824
- fileId: z37.string().uuid().describe("File ID"),
3825
- name: z37.string().min(1).optional().describe("New file name"),
3826
- folder: z37.string().uuid().optional().describe("New folder ID")
3946
+ import { z as z41 } from "zod";
3947
+ var inputSchema39 = z41.object({
3948
+ fileId: z41.string().uuid().describe("File ID"),
3949
+ name: z41.string().min(1).optional().describe("New file name"),
3950
+ folder: z41.string().uuid().optional().describe("New folder ID")
3827
3951
  });
3828
3952
  var filesUpdate = {
3829
3953
  name: "files.update",
3830
3954
  group: "files",
3831
3955
  description: "Update a file's metadata",
3832
- inputSchema: inputSchema35,
3833
- outputSchema: z37.any(),
3956
+ inputSchema: inputSchema39,
3957
+ outputSchema: z41.any(),
3834
3958
  annotations: { idempotentHint: true },
3835
3959
  async execute(input, ctx) {
3836
3960
  const { fileId, ...fields } = input;
@@ -3857,19 +3981,19 @@ var filesUpdate = {
3857
3981
  init_client();
3858
3982
  import { readFileSync as readFileSync6, statSync as statSync3 } from "node:fs";
3859
3983
  import { basename } from "node:path";
3860
- import { z as z38 } from "zod";
3861
- var inputSchema36 = z38.object({
3862
- project: z38.string().uuid().optional().describe("Project ID (optional; defaults to your workspace)"),
3863
- filePath: z38.string().min(1).describe("Local file path to upload"),
3864
- fileName: z38.string().optional().describe("Override file name"),
3865
- contentType: z38.string().optional().describe("MIME content type")
3984
+ import { z as z42 } from "zod";
3985
+ var inputSchema40 = z42.object({
3986
+ project: z42.string().uuid().optional().describe("Project ID (optional; defaults to your workspace)"),
3987
+ filePath: z42.string().min(1).describe("Local file path to upload"),
3988
+ fileName: z42.string().optional().describe("Override file name"),
3989
+ contentType: z42.string().optional().describe("MIME content type")
3866
3990
  });
3867
3991
  var filesUpload = {
3868
3992
  name: "files.upload",
3869
3993
  group: "files",
3870
3994
  description: "Upload a file to a project (three-stage: presign, PUT, confirm)",
3871
- inputSchema: inputSchema36,
3872
- outputSchema: z38.any(),
3995
+ inputSchema: inputSchema40,
3996
+ outputSchema: z42.any(),
3873
3997
  async execute(input, ctx) {
3874
3998
  const fileBuffer = readFileSync6(input.filePath);
3875
3999
  const fileName = input.fileName ?? basename(input.filePath);
@@ -3904,18 +4028,18 @@ init_client();
3904
4028
  init_errors();
3905
4029
  import { readFileSync as readFileSync7, statSync as statSync4 } from "node:fs";
3906
4030
  import { basename as basename2 } from "node:path";
3907
- import { z as z39 } from "zod";
3908
- var inputSchema37 = z39.object({
3909
- project: z39.string().uuid().optional().describe("Project ID (optional; defaults to your workspace)"),
3910
- filePaths: z39.string().min(1).describe("Comma-separated local file paths to upload"),
3911
- folder: z39.string().uuid().optional().describe("Folder ID")
4031
+ import { z as z43 } from "zod";
4032
+ var inputSchema41 = z43.object({
4033
+ project: z43.string().uuid().optional().describe("Project ID (optional; defaults to your workspace)"),
4034
+ filePaths: z43.string().min(1).describe("Comma-separated local file paths to upload"),
4035
+ folder: z43.string().uuid().optional().describe("Folder ID")
3912
4036
  });
3913
4037
  var filesUploadBatch = {
3914
4038
  name: "files.uploadBatch",
3915
4039
  group: "files",
3916
4040
  description: "Upload multiple files to a project (max 50)",
3917
- inputSchema: inputSchema37,
3918
- outputSchema: z39.any(),
4041
+ inputSchema: inputSchema41,
4042
+ outputSchema: z43.any(),
3919
4043
  async execute(input, ctx) {
3920
4044
  const paths = input.filePaths.split(",").map((p) => p.trim()).filter(Boolean);
3921
4045
  if (paths.length === 0) {
@@ -3973,17 +4097,17 @@ var filesUploadBatch = {
3973
4097
  };
3974
4098
 
3975
4099
  // src/commands/files/version-content.ts
3976
- import { z as z40 } from "zod";
3977
- var inputSchema38 = z40.object({
3978
- fileId: z40.string().uuid().describe("File ID"),
3979
- versionId: z40.string().uuid().describe("Version ID")
4100
+ import { z as z44 } from "zod";
4101
+ var inputSchema42 = z44.object({
4102
+ fileId: z44.string().uuid().describe("File ID"),
4103
+ versionId: z44.string().uuid().describe("Version ID")
3980
4104
  });
3981
4105
  var filesVersionContent = {
3982
4106
  name: "files.versionContent",
3983
4107
  group: "files",
3984
4108
  description: "Get the raw content of a specific file version",
3985
- inputSchema: inputSchema38,
3986
- outputSchema: z40.any(),
4109
+ inputSchema: inputSchema42,
4110
+ outputSchema: z44.any(),
3987
4111
  annotations: { readOnlyHint: true },
3988
4112
  async execute(input, ctx) {
3989
4113
  return ctx.client.get("file_version_content", {
@@ -3997,17 +4121,17 @@ var filesVersionContent = {
3997
4121
  };
3998
4122
 
3999
4123
  // src/commands/files/versions.ts
4000
- import { z as z41 } from "zod";
4001
- var inputSchema39 = z41.object({
4002
- fileId: z41.string().uuid().describe("File ID"),
4124
+ import { z as z45 } from "zod";
4125
+ var inputSchema43 = z45.object({
4126
+ fileId: z45.string().uuid().describe("File ID"),
4003
4127
  ...paginationInput
4004
4128
  });
4005
4129
  var filesVersions = {
4006
4130
  name: "files.versions",
4007
4131
  group: "files",
4008
4132
  description: "List versions of a file",
4009
- inputSchema: inputSchema39,
4010
- outputSchema: z41.any(),
4133
+ inputSchema: inputSchema43,
4134
+ outputSchema: z45.any(),
4011
4135
  annotations: { readOnlyHint: true },
4012
4136
  async execute(input, ctx) {
4013
4137
  return ctx.client.get("file_versions", {
@@ -4022,17 +4146,17 @@ var filesVersions = {
4022
4146
  };
4023
4147
 
4024
4148
  // src/commands/files/working-copy.ts
4025
- import { z as z42 } from "zod";
4026
- var inputSchema40 = z42.object({
4027
- fileId: z42.string().uuid().describe("File ID"),
4028
- task: z42.string().uuid().optional().describe("Task ID")
4149
+ import { z as z46 } from "zod";
4150
+ var inputSchema44 = z46.object({
4151
+ fileId: z46.string().uuid().describe("File ID"),
4152
+ task: z46.string().uuid().optional().describe("Task ID")
4029
4153
  });
4030
4154
  var filesWorkingCopy = {
4031
4155
  name: "files.workingCopy",
4032
4156
  group: "files",
4033
4157
  description: "Create a working copy of a file",
4034
- inputSchema: inputSchema40,
4035
- outputSchema: z42.any(),
4158
+ inputSchema: inputSchema44,
4159
+ outputSchema: z46.any(),
4036
4160
  async execute(input, ctx) {
4037
4161
  const body = {};
4038
4162
  if (input.task !== void 0) body.taskId = input.task;
@@ -4067,21 +4191,25 @@ function registerFileCommands() {
4067
4191
  filesFork,
4068
4192
  filesWorkingCopy,
4069
4193
  filesCommit,
4070
- filesSearchContent
4194
+ filesSearchContent,
4195
+ filesMove,
4196
+ filesShare,
4197
+ filesUnshare,
4198
+ filesShares
4071
4199
  ];
4072
4200
  }
4073
4201
 
4074
4202
  // src/commands/flags/get.ts
4075
- import { z as z43 } from "zod";
4076
- var inputSchema41 = z43.object({
4077
- key: z43.string().min(1).describe("Feature flag key")
4203
+ import { z as z47 } from "zod";
4204
+ var inputSchema45 = z47.object({
4205
+ key: z47.string().min(1).describe("Feature flag key")
4078
4206
  });
4079
4207
  var flagsGet = {
4080
4208
  name: "flags.get",
4081
4209
  group: "flags",
4082
4210
  description: "Get a feature flag by key",
4083
- inputSchema: inputSchema41,
4084
- outputSchema: z43.any(),
4211
+ inputSchema: inputSchema45,
4212
+ outputSchema: z47.any(),
4085
4213
  annotations: { readOnlyHint: true },
4086
4214
  async execute(input, ctx) {
4087
4215
  return ctx.client.get("feature_flag", {
@@ -4095,14 +4223,14 @@ var flagsGet = {
4095
4223
  };
4096
4224
 
4097
4225
  // src/commands/flags/list.ts
4098
- import { z as z44 } from "zod";
4099
- var inputSchema42 = z44.object({});
4226
+ import { z as z48 } from "zod";
4227
+ var inputSchema46 = z48.object({});
4100
4228
  var flagsList = {
4101
4229
  name: "flags.list",
4102
4230
  group: "flags",
4103
4231
  description: "List all feature flags",
4104
- inputSchema: inputSchema42,
4105
- outputSchema: z44.any(),
4232
+ inputSchema: inputSchema46,
4233
+ outputSchema: z48.any(),
4106
4234
  annotations: { readOnlyHint: true },
4107
4235
  async execute(_input, ctx) {
4108
4236
  return ctx.client.get("feature_flags");
@@ -4114,18 +4242,18 @@ var flagsList = {
4114
4242
  };
4115
4243
 
4116
4244
  // src/commands/flags/set.ts
4117
- import { z as z45 } from "zod";
4118
- var inputSchema43 = z45.object({
4119
- key: z45.string().min(1).describe("Feature flag key"),
4120
- value: z45.enum(["true", "false"]).describe("Feature flag value"),
4121
- yes: z45.boolean().optional().default(false).describe("Skip confirmation prompt")
4245
+ import { z as z49 } from "zod";
4246
+ var inputSchema47 = z49.object({
4247
+ key: z49.string().min(1).describe("Feature flag key"),
4248
+ value: z49.enum(["true", "false"]).describe("Feature flag value"),
4249
+ yes: z49.boolean().optional().default(false).describe("Skip confirmation prompt")
4122
4250
  });
4123
4251
  var flagsSet = {
4124
4252
  name: "flags.set",
4125
4253
  group: "flags",
4126
4254
  description: "Set a feature flag value",
4127
- inputSchema: inputSchema43,
4128
- outputSchema: z45.any(),
4255
+ inputSchema: inputSchema47,
4256
+ outputSchema: z49.any(),
4129
4257
  async execute(input, ctx) {
4130
4258
  if (!input.yes) {
4131
4259
  const confirmed = await confirmDestructive(`Set feature flag "${input.key}" to ${input.value}? [y/N] `);
@@ -4154,16 +4282,16 @@ function registerFlagCommands() {
4154
4282
  }
4155
4283
 
4156
4284
  // src/commands/folders/children.ts
4157
- import { z as z46 } from "zod";
4158
- var inputSchema44 = z46.object({
4159
- folderId: z46.string().uuid().describe("Folder ID")
4285
+ import { z as z50 } from "zod";
4286
+ var inputSchema48 = z50.object({
4287
+ folderId: z50.string().uuid().describe("Folder ID")
4160
4288
  });
4161
4289
  var foldersChildren = {
4162
4290
  name: "folders.children",
4163
4291
  group: "folders",
4164
4292
  description: "List the child folders of a Knowledge Base folder",
4165
- inputSchema: inputSchema44,
4166
- outputSchema: z46.any(),
4293
+ inputSchema: inputSchema48,
4294
+ outputSchema: z50.any(),
4167
4295
  annotations: { readOnlyHint: true },
4168
4296
  async execute(input, ctx) {
4169
4297
  return ctx.client.get("folder_children", {
@@ -4177,24 +4305,25 @@ var foldersChildren = {
4177
4305
  };
4178
4306
 
4179
4307
  // src/commands/folders/create.ts
4180
- import { z as z47 } from "zod";
4181
- var inputSchema45 = z47.object({
4182
- projectId: z47.string().uuid().describe("Project ID"),
4183
- name: z47.string().min(1).describe("Folder name"),
4184
- parentId: z47.string().uuid().optional().describe("Parent folder ID")
4308
+ import { z as z51 } from "zod";
4309
+ var inputSchema49 = z51.object({
4310
+ name: z51.string().min(1).describe("Folder name"),
4311
+ parentId: z51.string().uuid().optional().describe("Parent folder ID (for nesting)"),
4312
+ project: z51.string().uuid().optional().describe("Legacy: create a project-scoped folder in this project instead of a Knowledge Base folder")
4185
4313
  });
4186
4314
  var foldersCreate = {
4187
4315
  name: "folders.create",
4188
4316
  group: "folders",
4189
- description: "Create a new folder in a project",
4190
- inputSchema: inputSchema45,
4191
- outputSchema: z47.any(),
4317
+ description: "Create a Knowledge Base folder (or a legacy project folder when project is set)",
4318
+ inputSchema: inputSchema49,
4319
+ outputSchema: z51.any(),
4192
4320
  async execute(input, ctx) {
4193
4321
  const body = { name: input.name };
4194
- if (input.parentId) body.parentId = input.parentId;
4195
- return ctx.client.post("project_folders", body, {
4196
- pathParams: { id: input.projectId }
4197
- });
4322
+ if (input.parentId) body.parentFolderId = input.parentId;
4323
+ if (input.project) {
4324
+ return ctx.client.post("project_folders", body, { pathParams: { id: input.project } });
4325
+ }
4326
+ return ctx.client.post("folder_create", body);
4198
4327
  },
4199
4328
  formatOutput(output, format) {
4200
4329
  if (format === "compact") return output.id ?? JSON.stringify(output);
@@ -4203,22 +4332,26 @@ var foldersCreate = {
4203
4332
  };
4204
4333
 
4205
4334
  // src/commands/folders/delete.ts
4206
- import { z as z48 } from "zod";
4207
- var inputSchema46 = z48.object({
4208
- folderId: z48.string().uuid().describe("Folder ID to delete")
4335
+ import { z as z52 } from "zod";
4336
+ var inputSchema50 = z52.object({
4337
+ folderId: z52.string().uuid().describe("Folder ID to delete"),
4338
+ legacy: z52.boolean().default(false).describe("Hard-delete a legacy project folder instead of archiving a Knowledge Base folder")
4209
4339
  });
4210
4340
  var foldersDelete = {
4211
4341
  name: "folders.delete",
4212
4342
  group: "folders",
4213
- description: "Delete a folder",
4214
- inputSchema: inputSchema46,
4215
- outputSchema: z48.any(),
4343
+ description: "Delete a folder (Knowledge Base folders are archived)",
4344
+ inputSchema: inputSchema50,
4345
+ outputSchema: z52.any(),
4216
4346
  annotations: { destructiveHint: true },
4217
4347
  async execute(input, ctx) {
4218
- await ctx.client.del("folder", {
4219
- pathParams: { id: input.folderId }
4220
- });
4221
- return { deleted: true, folderId: input.folderId };
4348
+ const opts = { pathParams: { id: input.folderId } };
4349
+ if (input.legacy) {
4350
+ await ctx.client.del("folder", opts);
4351
+ return { deleted: true, folderId: input.folderId };
4352
+ }
4353
+ await ctx.client.post("folder_archive", {}, opts);
4354
+ return { archived: true, folderId: input.folderId };
4222
4355
  },
4223
4356
  formatOutput(output, format) {
4224
4357
  if (format === "compact") return output.folderId;
@@ -4227,17 +4360,17 @@ var foldersDelete = {
4227
4360
  };
4228
4361
 
4229
4362
  // src/commands/folders/files.ts
4230
- import { z as z49 } from "zod";
4231
- var inputSchema47 = z49.object({
4232
- folderId: z49.string().uuid().describe("Folder ID"),
4363
+ import { z as z53 } from "zod";
4364
+ var inputSchema51 = z53.object({
4365
+ folderId: z53.string().uuid().describe("Folder ID"),
4233
4366
  ...paginationInput
4234
4367
  });
4235
4368
  var foldersFiles = {
4236
4369
  name: "folders.files",
4237
4370
  group: "folders",
4238
4371
  description: "List files placed directly in a Knowledge Base folder",
4239
- inputSchema: inputSchema47,
4240
- outputSchema: z49.any(),
4372
+ inputSchema: inputSchema51,
4373
+ outputSchema: z53.any(),
4241
4374
  annotations: { readOnlyHint: true },
4242
4375
  async execute(input, ctx) {
4243
4376
  return ctx.client.get("folder_files", {
@@ -4252,16 +4385,16 @@ var foldersFiles = {
4252
4385
  };
4253
4386
 
4254
4387
  // src/commands/folders/get.ts
4255
- import { z as z50 } from "zod";
4256
- var inputSchema48 = z50.object({
4257
- folderId: z50.string().uuid().describe("Folder ID")
4388
+ import { z as z54 } from "zod";
4389
+ var inputSchema52 = z54.object({
4390
+ folderId: z54.string().uuid().describe("Folder ID")
4258
4391
  });
4259
4392
  var foldersGet = {
4260
4393
  name: "folders.get",
4261
4394
  group: "folders",
4262
4395
  description: "Get a Knowledge Base folder's details and breadcrumb path",
4263
- inputSchema: inputSchema48,
4264
- outputSchema: z50.any(),
4396
+ inputSchema: inputSchema52,
4397
+ outputSchema: z54.any(),
4265
4398
  annotations: { readOnlyHint: true },
4266
4399
  async execute(input, ctx) {
4267
4400
  return ctx.client.get("folder", {
@@ -4275,16 +4408,16 @@ var foldersGet = {
4275
4408
  };
4276
4409
 
4277
4410
  // src/commands/folders/list.ts
4278
- import { z as z51 } from "zod";
4279
- var inputSchema49 = z51.object({
4280
- projectId: z51.string().uuid().describe("Project ID")
4411
+ import { z as z55 } from "zod";
4412
+ var inputSchema53 = z55.object({
4413
+ projectId: z55.string().uuid().describe("Project ID")
4281
4414
  });
4282
4415
  var foldersList = {
4283
4416
  name: "folders.list",
4284
4417
  group: "folders",
4285
4418
  description: "List folders in a project",
4286
- inputSchema: inputSchema49,
4287
- outputSchema: z51.any(),
4419
+ inputSchema: inputSchema53,
4420
+ outputSchema: z55.any(),
4288
4421
  annotations: { readOnlyHint: true },
4289
4422
  async execute(input, ctx) {
4290
4423
  return ctx.client.get("project_folders", {
@@ -4299,37 +4432,35 @@ var foldersList = {
4299
4432
 
4300
4433
  // src/commands/folders/move.ts
4301
4434
  init_errors();
4302
- import { z as z52 } from "zod";
4435
+ import { z as z56 } from "zod";
4303
4436
  var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
4304
- var inputSchema50 = z52.object({
4305
- folderId: z52.string().uuid().describe("Folder ID to move"),
4306
- parentId: z52.string().min(1).describe("Target parent folder ID, or 'root' to move to project root")
4437
+ var inputSchema54 = z56.object({
4438
+ folderId: z56.string().uuid().describe("Folder ID to move"),
4439
+ parentId: z56.string().min(1).describe("Target parent folder ID, or 'root' to move to the top level"),
4440
+ legacy: z56.boolean().default(false).describe("Move a legacy project folder instead of a Knowledge Base folder")
4307
4441
  });
4308
4442
  var foldersMove = {
4309
4443
  name: "folders.move",
4310
4444
  group: "folders",
4311
4445
  description: "Move a folder to a new parent (or to root)",
4312
- inputSchema: inputSchema50,
4313
- outputSchema: z52.any(),
4446
+ inputSchema: inputSchema54,
4447
+ outputSchema: z56.any(),
4314
4448
  async execute(input, ctx) {
4315
- let parentValue;
4316
- if (input.parentId === "root") {
4317
- parentValue = null;
4318
- } else if (UUID_RE.test(input.parentId)) {
4319
- parentValue = input.parentId;
4320
- } else {
4449
+ const isRoot = input.parentId === "root";
4450
+ if (!isRoot && !UUID_RE.test(input.parentId)) {
4321
4451
  throw new ValidationError(
4322
4452
  "parent must be a valid UUID or 'root'.",
4323
4453
  "Provide a folder UUID or the literal string 'root'."
4324
4454
  );
4325
4455
  }
4326
- return ctx.client.put(
4327
- "folder_move",
4328
- { parentId: parentValue },
4329
- {
4330
- pathParams: { id: input.folderId }
4331
- }
4332
- );
4456
+ const opts = { pathParams: { id: input.folderId } };
4457
+ if (input.legacy) {
4458
+ return ctx.client.put("folder_move", { newParentFolderId: isRoot ? null : input.parentId }, opts);
4459
+ }
4460
+ if (isRoot) {
4461
+ return ctx.client.patch("folder", { moveToRoot: true }, opts);
4462
+ }
4463
+ return ctx.client.patch("folder_move", { parentFolderId: input.parentId }, opts);
4333
4464
  },
4334
4465
  formatOutput(output, format) {
4335
4466
  if (format === "compact") return output.id ?? JSON.stringify(output);
@@ -4338,26 +4469,23 @@ var foldersMove = {
4338
4469
  };
4339
4470
 
4340
4471
  // src/commands/folders/rename.ts
4341
- import { z as z53 } from "zod";
4342
- var inputSchema51 = z53.object({
4343
- folderId: z53.string().uuid().describe("Folder ID"),
4344
- name: z53.string().min(1).describe("New folder name")
4472
+ import { z as z57 } from "zod";
4473
+ var inputSchema55 = z57.object({
4474
+ folderId: z57.string().uuid().describe("Folder ID"),
4475
+ name: z57.string().min(1).describe("New folder name"),
4476
+ legacy: z57.boolean().default(false).describe("Rename a legacy project folder instead of a Knowledge Base folder")
4345
4477
  });
4346
4478
  var foldersRename = {
4347
4479
  name: "folders.rename",
4348
4480
  group: "folders",
4349
4481
  description: "Rename a folder",
4350
- inputSchema: inputSchema51,
4351
- outputSchema: z53.any(),
4482
+ inputSchema: inputSchema55,
4483
+ outputSchema: z57.any(),
4352
4484
  annotations: { idempotentHint: true },
4353
4485
  async execute(input, ctx) {
4354
- return ctx.client.put(
4355
- "folder",
4356
- { name: input.name },
4357
- {
4358
- pathParams: { id: input.folderId }
4359
- }
4360
- );
4486
+ const body = { name: input.name };
4487
+ const opts = { pathParams: { id: input.folderId } };
4488
+ return input.legacy ? ctx.client.put("folder", body, opts) : ctx.client.patch("folder", body, opts);
4361
4489
  },
4362
4490
  formatOutput(output, format) {
4363
4491
  if (format === "compact") return output.id ?? JSON.stringify(output);
@@ -4366,14 +4494,14 @@ var foldersRename = {
4366
4494
  };
4367
4495
 
4368
4496
  // src/commands/folders/roots.ts
4369
- import { z as z54 } from "zod";
4370
- var inputSchema52 = z54.object({});
4497
+ import { z as z58 } from "zod";
4498
+ var inputSchema56 = z58.object({});
4371
4499
  var foldersRoots = {
4372
4500
  name: "folders.roots",
4373
4501
  group: "folders",
4374
4502
  description: "List the top-level Knowledge Base folders you can access",
4375
- inputSchema: inputSchema52,
4376
- outputSchema: z54.any(),
4503
+ inputSchema: inputSchema56,
4504
+ outputSchema: z58.any(),
4377
4505
  annotations: { readOnlyHint: true },
4378
4506
  async execute(_input, ctx) {
4379
4507
  return ctx.client.get("folder_roots");
@@ -4384,6 +4512,83 @@ var foldersRoots = {
4384
4512
  }
4385
4513
  };
4386
4514
 
4515
+ // src/commands/folders/share.ts
4516
+ init_errors();
4517
+ import { z as z59 } from "zod";
4518
+ var inputSchema57 = z59.object({
4519
+ folderId: z59.string().uuid().describe("Folder ID to share"),
4520
+ userId: z59.number().int().positive().optional().describe("User ID to share with (omit when using --org-wide)"),
4521
+ orgWide: z59.boolean().default(false).describe("Share with everyone in the organization"),
4522
+ role: z59.enum(["viewer", "editor", "admin"]).default("editor").describe("Access role to grant")
4523
+ });
4524
+ var foldersShare = {
4525
+ name: "folders.share",
4526
+ group: "folders",
4527
+ description: "Share a folder with a user or the whole organization (default role: editor)",
4528
+ inputSchema: inputSchema57,
4529
+ outputSchema: z59.any(),
4530
+ async execute(input, ctx) {
4531
+ if (input.orgWide === (input.userId !== void 0)) {
4532
+ throw new ValidationError(
4533
+ "Specify exactly one recipient.",
4534
+ "Pass either --user-id <id> or --org-wide (not both, and not neither)."
4535
+ );
4536
+ }
4537
+ const body = input.orgWide ? { isOrgWide: true, role: input.role } : { userId: input.userId, role: input.role };
4538
+ return ctx.client.post("folder_share", body, { pathParams: { id: input.folderId } });
4539
+ },
4540
+ formatOutput(output, format) {
4541
+ if (format === "compact") return output.id ?? JSON.stringify(output);
4542
+ return JSON.stringify(output, null, 2);
4543
+ }
4544
+ };
4545
+
4546
+ // src/commands/folders/shares.ts
4547
+ import { z as z60 } from "zod";
4548
+ var inputSchema58 = z60.object({
4549
+ folderId: z60.string().uuid().describe("Folder ID")
4550
+ });
4551
+ var foldersShares = {
4552
+ name: "folders.shares",
4553
+ group: "folders",
4554
+ description: "List the current shares on a folder",
4555
+ inputSchema: inputSchema58,
4556
+ outputSchema: z60.any(),
4557
+ annotations: { readOnlyHint: true },
4558
+ async execute(input, ctx) {
4559
+ return ctx.client.get("folder_shares", { pathParams: { id: input.folderId } });
4560
+ },
4561
+ formatOutput(output, format) {
4562
+ if (format === "compact") return output.id ?? JSON.stringify(output);
4563
+ return JSON.stringify(output, null, 2);
4564
+ }
4565
+ };
4566
+
4567
+ // src/commands/folders/unshare.ts
4568
+ import { z as z61 } from "zod";
4569
+ var inputSchema59 = z61.object({
4570
+ folderId: z61.string().uuid().describe("Folder ID"),
4571
+ aceId: z61.string().uuid().describe("Share (ACE) ID to revoke")
4572
+ });
4573
+ var foldersUnshare = {
4574
+ name: "folders.unshare",
4575
+ group: "folders",
4576
+ description: "Revoke a folder share by its ACE id",
4577
+ inputSchema: inputSchema59,
4578
+ outputSchema: z61.any(),
4579
+ annotations: { destructiveHint: true, idempotentHint: true },
4580
+ async execute(input, ctx) {
4581
+ await ctx.client.del("folder_share_ace", {
4582
+ pathParams: { id: input.folderId, aceId: input.aceId }
4583
+ });
4584
+ return { revoked: true, folderId: input.folderId, aceId: input.aceId };
4585
+ },
4586
+ formatOutput(output, format) {
4587
+ if (format === "compact") return output.aceId ?? JSON.stringify(output);
4588
+ return JSON.stringify(output, null, 2);
4589
+ }
4590
+ };
4591
+
4387
4592
  // src/commands/folders/index.ts
4388
4593
  function registerFolderCommands() {
4389
4594
  return [
@@ -4395,16 +4600,19 @@ function registerFolderCommands() {
4395
4600
  foldersCreate,
4396
4601
  foldersRename,
4397
4602
  foldersMove,
4398
- foldersDelete
4603
+ foldersDelete,
4604
+ foldersShare,
4605
+ foldersUnshare,
4606
+ foldersShares
4399
4607
  ];
4400
4608
  }
4401
4609
 
4402
4610
  // src/commands/health.ts
4403
- import { z as z55 } from "zod";
4404
- var healthInput = z55.object({});
4405
- var healthOutput = z55.object({
4406
- status: z55.string(),
4407
- timestamp: z55.string()
4611
+ import { z as z62 } from "zod";
4612
+ var healthInput = z62.object({});
4613
+ var healthOutput = z62.object({
4614
+ status: z62.string(),
4615
+ timestamp: z62.string()
4408
4616
  });
4409
4617
  var healthCheck = {
4410
4618
  name: "health.check",
@@ -4434,18 +4642,18 @@ var healthCheck = {
4434
4642
  };
4435
4643
 
4436
4644
  // src/commands/library/create-folder.ts
4437
- import { z as z56 } from "zod";
4438
- var inputSchema53 = z56.object({
4439
- orgId: z56.string().uuid().describe("Organization ID"),
4440
- name: z56.string().min(1).describe("Folder name"),
4441
- parent: z56.string().uuid().optional().describe("Parent folder ID")
4645
+ import { z as z63 } from "zod";
4646
+ var inputSchema60 = z63.object({
4647
+ orgId: z63.string().uuid().describe("Organization ID"),
4648
+ name: z63.string().min(1).describe("Folder name"),
4649
+ parent: z63.string().uuid().optional().describe("Parent folder ID")
4442
4650
  });
4443
4651
  var libraryCreateFolder = {
4444
4652
  name: "library.createFolder",
4445
4653
  group: "library",
4446
4654
  description: "Create a folder in the organization library",
4447
- inputSchema: inputSchema53,
4448
- outputSchema: z56.any(),
4655
+ inputSchema: inputSchema60,
4656
+ outputSchema: z63.any(),
4449
4657
  async execute(input, ctx) {
4450
4658
  const body = { name: input.name };
4451
4659
  if (input.parent) body.parentId = input.parent;
@@ -4460,17 +4668,17 @@ var libraryCreateFolder = {
4460
4668
  };
4461
4669
 
4462
4670
  // src/commands/library/delete-folder.ts
4463
- import { z as z57 } from "zod";
4464
- var inputSchema54 = z57.object({
4465
- orgId: z57.string().uuid().describe("Organization ID"),
4466
- folderId: z57.string().uuid().describe("Folder ID to delete")
4671
+ import { z as z64 } from "zod";
4672
+ var inputSchema61 = z64.object({
4673
+ orgId: z64.string().uuid().describe("Organization ID"),
4674
+ folderId: z64.string().uuid().describe("Folder ID to delete")
4467
4675
  });
4468
4676
  var libraryDeleteFolder = {
4469
4677
  name: "library.deleteFolder",
4470
4678
  group: "library",
4471
4679
  description: "Delete a folder from the organization library",
4472
- inputSchema: inputSchema54,
4473
- outputSchema: z57.any(),
4680
+ inputSchema: inputSchema61,
4681
+ outputSchema: z64.any(),
4474
4682
  annotations: { destructiveHint: true },
4475
4683
  async execute(input, ctx) {
4476
4684
  await ctx.client.del("library_folder", {
@@ -4485,17 +4693,17 @@ var libraryDeleteFolder = {
4485
4693
  };
4486
4694
 
4487
4695
  // src/commands/library/files.ts
4488
- import { z as z58 } from "zod";
4489
- var inputSchema55 = z58.object({
4490
- orgId: z58.string().uuid().describe("Organization ID"),
4696
+ import { z as z65 } from "zod";
4697
+ var inputSchema62 = z65.object({
4698
+ orgId: z65.string().uuid().describe("Organization ID"),
4491
4699
  ...paginationInput
4492
4700
  });
4493
4701
  var libraryFiles = {
4494
4702
  name: "library.files",
4495
4703
  group: "library",
4496
4704
  description: "List files in the organization library",
4497
- inputSchema: inputSchema55,
4498
- outputSchema: z58.any(),
4705
+ inputSchema: inputSchema62,
4706
+ outputSchema: z65.any(),
4499
4707
  annotations: { readOnlyHint: true },
4500
4708
  async execute(input, ctx) {
4501
4709
  return ctx.client.get("library_files", {
@@ -4510,16 +4718,16 @@ var libraryFiles = {
4510
4718
  };
4511
4719
 
4512
4720
  // src/commands/library/folders.ts
4513
- import { z as z59 } from "zod";
4514
- var inputSchema56 = z59.object({
4515
- orgId: z59.string().uuid().describe("Organization ID")
4721
+ import { z as z66 } from "zod";
4722
+ var inputSchema63 = z66.object({
4723
+ orgId: z66.string().uuid().describe("Organization ID")
4516
4724
  });
4517
4725
  var libraryFolders = {
4518
4726
  name: "library.folders",
4519
4727
  group: "library",
4520
4728
  description: "List folders in the organization library",
4521
- inputSchema: inputSchema56,
4522
- outputSchema: z59.any(),
4729
+ inputSchema: inputSchema63,
4730
+ outputSchema: z66.any(),
4523
4731
  annotations: { readOnlyHint: true },
4524
4732
  async execute(input, ctx) {
4525
4733
  return ctx.client.get("library_folders", {
@@ -4533,18 +4741,18 @@ var libraryFolders = {
4533
4741
  };
4534
4742
 
4535
4743
  // src/commands/library/rename-folder.ts
4536
- import { z as z60 } from "zod";
4537
- var inputSchema57 = z60.object({
4538
- orgId: z60.string().uuid().describe("Organization ID"),
4539
- folderId: z60.string().uuid().describe("Folder ID to rename"),
4540
- name: z60.string().min(1).describe("New folder name")
4744
+ import { z as z67 } from "zod";
4745
+ var inputSchema64 = z67.object({
4746
+ orgId: z67.string().uuid().describe("Organization ID"),
4747
+ folderId: z67.string().uuid().describe("Folder ID to rename"),
4748
+ name: z67.string().min(1).describe("New folder name")
4541
4749
  });
4542
4750
  var libraryRenameFolder = {
4543
4751
  name: "library.renameFolder",
4544
4752
  group: "library",
4545
4753
  description: "Rename a folder in the organization library",
4546
- inputSchema: inputSchema57,
4547
- outputSchema: z60.any(),
4754
+ inputSchema: inputSchema64,
4755
+ outputSchema: z67.any(),
4548
4756
  async execute(input, ctx) {
4549
4757
  return ctx.client.put(
4550
4758
  "library_folder",
@@ -4566,16 +4774,16 @@ function registerLibraryCommands() {
4566
4774
  }
4567
4775
 
4568
4776
  // src/commands/orgs/accept-invite.ts
4569
- import { z as z61 } from "zod";
4570
- var inputSchema58 = z61.object({
4571
- token: z61.string().min(1).describe("Invitation token")
4777
+ import { z as z68 } from "zod";
4778
+ var inputSchema65 = z68.object({
4779
+ token: z68.string().min(1).describe("Invitation token")
4572
4780
  });
4573
4781
  var orgsAcceptInvite = {
4574
4782
  name: "orgs.acceptInvite",
4575
4783
  group: "orgs",
4576
4784
  description: "Accept an organization invitation by token",
4577
- inputSchema: inputSchema58,
4578
- outputSchema: z61.any(),
4785
+ inputSchema: inputSchema65,
4786
+ outputSchema: z68.any(),
4579
4787
  async execute(input, ctx) {
4580
4788
  return ctx.client.post("invitation_accept", void 0, {
4581
4789
  pathParams: { token: input.token }
@@ -4588,16 +4796,16 @@ var orgsAcceptInvite = {
4588
4796
  };
4589
4797
 
4590
4798
  // src/commands/orgs/billing.ts
4591
- import { z as z62 } from "zod";
4592
- var inputSchema59 = z62.object({
4593
- orgId: z62.string().uuid().describe("Organization ID")
4799
+ import { z as z69 } from "zod";
4800
+ var inputSchema66 = z69.object({
4801
+ orgId: z69.string().uuid().describe("Organization ID")
4594
4802
  });
4595
4803
  var orgsBilling = {
4596
4804
  name: "orgs.billing",
4597
4805
  group: "orgs",
4598
4806
  description: "Get billing status for an organization",
4599
- inputSchema: inputSchema59,
4600
- outputSchema: z62.any(),
4807
+ inputSchema: inputSchema66,
4808
+ outputSchema: z69.any(),
4601
4809
  annotations: { readOnlyHint: true },
4602
4810
  async execute(input, ctx) {
4603
4811
  return ctx.client.get("organization_billing", {
@@ -4611,17 +4819,17 @@ var orgsBilling = {
4611
4819
  };
4612
4820
 
4613
4821
  // src/commands/orgs/cancel-invite.ts
4614
- import { z as z63 } from "zod";
4615
- var inputSchema60 = z63.object({
4616
- orgId: z63.string().uuid().describe("Organization ID"),
4617
- invitationId: z63.string().uuid().describe("Invitation ID to cancel")
4822
+ import { z as z70 } from "zod";
4823
+ var inputSchema67 = z70.object({
4824
+ orgId: z70.string().uuid().describe("Organization ID"),
4825
+ invitationId: z70.string().uuid().describe("Invitation ID to cancel")
4618
4826
  });
4619
4827
  var orgsCancelInvite = {
4620
4828
  name: "orgs.cancelInvite",
4621
4829
  group: "orgs",
4622
4830
  description: "Cancel a pending organization invitation",
4623
- inputSchema: inputSchema60,
4624
- outputSchema: z63.any(),
4831
+ inputSchema: inputSchema67,
4832
+ outputSchema: z70.any(),
4625
4833
  annotations: { destructiveHint: true },
4626
4834
  async execute(input, ctx) {
4627
4835
  await ctx.client.del("org_invitation", {
@@ -4636,17 +4844,17 @@ var orgsCancelInvite = {
4636
4844
  };
4637
4845
 
4638
4846
  // src/commands/orgs/create.ts
4639
- import { z as z64 } from "zod";
4640
- var inputSchema61 = z64.object({
4641
- name: z64.string().min(1).describe("Organization name"),
4642
- description: z64.string().optional().describe("Organization description")
4847
+ import { z as z71 } from "zod";
4848
+ var inputSchema68 = z71.object({
4849
+ name: z71.string().min(1).describe("Organization name"),
4850
+ description: z71.string().optional().describe("Organization description")
4643
4851
  });
4644
4852
  var orgsCreate = {
4645
4853
  name: "orgs.create",
4646
4854
  group: "orgs",
4647
4855
  description: "Create a new organization",
4648
- inputSchema: inputSchema61,
4649
- outputSchema: z64.any(),
4856
+ inputSchema: inputSchema68,
4857
+ outputSchema: z71.any(),
4650
4858
  async execute(input, ctx) {
4651
4859
  return ctx.client.post("organizations", input);
4652
4860
  },
@@ -4657,17 +4865,17 @@ var orgsCreate = {
4657
4865
  };
4658
4866
 
4659
4867
  // src/commands/orgs/delete.ts
4660
- import { z as z65 } from "zod";
4661
- var inputSchema62 = z65.object({
4662
- orgId: z65.string().uuid().describe("Organization ID to delete"),
4663
- yes: z65.boolean().optional().default(false).describe("Skip confirmation prompt")
4868
+ import { z as z72 } from "zod";
4869
+ var inputSchema69 = z72.object({
4870
+ orgId: z72.string().uuid().describe("Organization ID to delete"),
4871
+ yes: z72.boolean().optional().default(false).describe("Skip confirmation prompt")
4664
4872
  });
4665
4873
  var orgsDelete = {
4666
4874
  name: "orgs.delete",
4667
4875
  group: "orgs",
4668
4876
  description: "Delete an organization",
4669
- inputSchema: inputSchema62,
4670
- outputSchema: z65.any(),
4877
+ inputSchema: inputSchema69,
4878
+ outputSchema: z72.any(),
4671
4879
  annotations: { destructiveHint: true },
4672
4880
  async execute(input, ctx) {
4673
4881
  if (!input.yes) {
@@ -4687,18 +4895,43 @@ var orgsDelete = {
4687
4895
  }
4688
4896
  };
4689
4897
 
4898
+ // src/commands/orgs/directory.ts
4899
+ import { z as z73 } from "zod";
4900
+ var inputSchema70 = z73.object({
4901
+ orgId: z73.string().uuid().describe("Organization ID"),
4902
+ query: z73.string().min(2).describe("Name or email substring to match (minimum 2 characters)")
4903
+ });
4904
+ var orgsDirectory = {
4905
+ name: "orgs.directory",
4906
+ group: "orgs",
4907
+ description: "Search organization members by name or email (Share-modal typeahead)",
4908
+ inputSchema: inputSchema70,
4909
+ outputSchema: z73.any(),
4910
+ annotations: { readOnlyHint: true },
4911
+ async execute(input, ctx) {
4912
+ return ctx.client.get("org_member_directory", {
4913
+ pathParams: { orgId: input.orgId },
4914
+ queryParams: { q: input.query }
4915
+ });
4916
+ },
4917
+ formatOutput(output, format) {
4918
+ if (format === "compact") return output.id ?? JSON.stringify(output);
4919
+ return JSON.stringify(output, null, 2);
4920
+ }
4921
+ };
4922
+
4690
4923
  // src/commands/orgs/files.ts
4691
- import { z as z66 } from "zod";
4692
- var inputSchema63 = z66.object({
4693
- orgId: z66.string().uuid().describe("Organization ID"),
4924
+ import { z as z74 } from "zod";
4925
+ var inputSchema71 = z74.object({
4926
+ orgId: z74.string().uuid().describe("Organization ID"),
4694
4927
  ...paginationInput
4695
4928
  });
4696
4929
  var orgsFiles = {
4697
4930
  name: "orgs.files",
4698
4931
  group: "orgs",
4699
4932
  description: "List files belonging to an organization",
4700
- inputSchema: inputSchema63,
4701
- outputSchema: z66.any(),
4933
+ inputSchema: inputSchema71,
4934
+ outputSchema: z74.any(),
4702
4935
  annotations: { readOnlyHint: true },
4703
4936
  async execute(input, ctx) {
4704
4937
  return ctx.client.get("org_files", {
@@ -4713,16 +4946,16 @@ var orgsFiles = {
4713
4946
  };
4714
4947
 
4715
4948
  // src/commands/orgs/get.ts
4716
- import { z as z67 } from "zod";
4717
- var inputSchema64 = z67.object({
4718
- orgId: z67.string().uuid().describe("Organization ID")
4949
+ import { z as z75 } from "zod";
4950
+ var inputSchema72 = z75.object({
4951
+ orgId: z75.string().uuid().describe("Organization ID")
4719
4952
  });
4720
4953
  var orgsGet = {
4721
4954
  name: "orgs.get",
4722
4955
  group: "orgs",
4723
4956
  description: "Get details of a specific organization",
4724
- inputSchema: inputSchema64,
4725
- outputSchema: z67.any(),
4957
+ inputSchema: inputSchema72,
4958
+ outputSchema: z75.any(),
4726
4959
  async execute(input, ctx) {
4727
4960
  return ctx.client.get("organization", {
4728
4961
  pathParams: { id: input.orgId }
@@ -4735,16 +4968,16 @@ var orgsGet = {
4735
4968
  };
4736
4969
 
4737
4970
  // src/commands/orgs/invitation-info.ts
4738
- import { z as z68 } from "zod";
4739
- var inputSchema65 = z68.object({
4740
- token: z68.string().min(1).describe("Invitation token")
4971
+ import { z as z76 } from "zod";
4972
+ var inputSchema73 = z76.object({
4973
+ token: z76.string().min(1).describe("Invitation token")
4741
4974
  });
4742
4975
  var orgsInvitationInfo = {
4743
4976
  name: "orgs.invitationInfo",
4744
4977
  group: "orgs",
4745
4978
  description: "Get information about an invitation by token",
4746
- inputSchema: inputSchema65,
4747
- outputSchema: z68.any(),
4979
+ inputSchema: inputSchema73,
4980
+ outputSchema: z76.any(),
4748
4981
  annotations: { readOnlyHint: true },
4749
4982
  async execute(input, ctx) {
4750
4983
  return ctx.client.get("invitation_info", {
@@ -4758,16 +4991,16 @@ var orgsInvitationInfo = {
4758
4991
  };
4759
4992
 
4760
4993
  // src/commands/orgs/invitations.ts
4761
- import { z as z69 } from "zod";
4762
- var inputSchema66 = z69.object({
4763
- orgId: z69.string().uuid().describe("Organization ID")
4994
+ import { z as z77 } from "zod";
4995
+ var inputSchema74 = z77.object({
4996
+ orgId: z77.string().uuid().describe("Organization ID")
4764
4997
  });
4765
4998
  var orgsInvitations = {
4766
4999
  name: "orgs.invitations",
4767
5000
  group: "orgs",
4768
5001
  description: "List pending invitations for an organization",
4769
- inputSchema: inputSchema66,
4770
- outputSchema: z69.any(),
5002
+ inputSchema: inputSchema74,
5003
+ outputSchema: z77.any(),
4771
5004
  annotations: { readOnlyHint: true },
4772
5005
  async execute(input, ctx) {
4773
5006
  return ctx.client.get("org_invitations", {
@@ -4781,18 +5014,18 @@ var orgsInvitations = {
4781
5014
  };
4782
5015
 
4783
5016
  // src/commands/orgs/invite.ts
4784
- import { z as z70 } from "zod";
4785
- var inputSchema67 = z70.object({
4786
- orgId: z70.string().uuid().describe("Organization ID"),
4787
- email: z70.string().email().describe("Email address to invite"),
4788
- role: z70.string().optional().default("Member").describe("Role to assign (default: Member)")
5017
+ import { z as z78 } from "zod";
5018
+ var inputSchema75 = z78.object({
5019
+ orgId: z78.string().uuid().describe("Organization ID"),
5020
+ email: z78.string().email().describe("Email address to invite"),
5021
+ role: z78.string().optional().default("Member").describe("Role to assign (default: Member)")
4789
5022
  });
4790
5023
  var orgsInvite = {
4791
5024
  name: "orgs.invite",
4792
5025
  group: "orgs",
4793
5026
  description: "Invite a user to an organization by email",
4794
- inputSchema: inputSchema67,
4795
- outputSchema: z70.any(),
5027
+ inputSchema: inputSchema75,
5028
+ outputSchema: z78.any(),
4796
5029
  annotations: { idempotentHint: true },
4797
5030
  async execute(input, ctx) {
4798
5031
  const existing = await ctx.client.get("org_invitations", {
@@ -4820,14 +5053,14 @@ var orgsInvite = {
4820
5053
  };
4821
5054
 
4822
5055
  // src/commands/orgs/list.ts
4823
- import { z as z71 } from "zod";
4824
- var inputSchema68 = z71.object({});
5056
+ import { z as z79 } from "zod";
5057
+ var inputSchema76 = z79.object({});
4825
5058
  var orgsList = {
4826
5059
  name: "orgs.list",
4827
5060
  group: "orgs",
4828
5061
  description: "List all organizations the current user belongs to",
4829
- inputSchema: inputSchema68,
4830
- outputSchema: z71.any(),
5062
+ inputSchema: inputSchema76,
5063
+ outputSchema: z79.any(),
4831
5064
  annotations: { readOnlyHint: true },
4832
5065
  async execute(_input, ctx) {
4833
5066
  return ctx.client.get("organizations");
@@ -4839,14 +5072,14 @@ var orgsList = {
4839
5072
  };
4840
5073
 
4841
5074
  // src/commands/orgs/list-all.ts
4842
- import { z as z72 } from "zod";
4843
- var inputSchema69 = z72.object({});
5075
+ import { z as z80 } from "zod";
5076
+ var inputSchema77 = z80.object({});
4844
5077
  var orgsListAll = {
4845
5078
  name: "orgs.listAll",
4846
5079
  group: "orgs",
4847
5080
  description: "List all organizations (admin)",
4848
- inputSchema: inputSchema69,
4849
- outputSchema: z72.any(),
5081
+ inputSchema: inputSchema77,
5082
+ outputSchema: z80.any(),
4850
5083
  annotations: { readOnlyHint: true, internal: true },
4851
5084
  async execute(_input, ctx) {
4852
5085
  return ctx.client.get("organizations_all");
@@ -4858,16 +5091,16 @@ var orgsListAll = {
4858
5091
  };
4859
5092
 
4860
5093
  // src/commands/orgs/members.ts
4861
- import { z as z73 } from "zod";
4862
- var inputSchema70 = z73.object({
4863
- orgId: z73.string().uuid().describe("Organization ID")
5094
+ import { z as z81 } from "zod";
5095
+ var inputSchema78 = z81.object({
5096
+ orgId: z81.string().uuid().describe("Organization ID")
4864
5097
  });
4865
5098
  var orgsMembers = {
4866
5099
  name: "orgs.members",
4867
5100
  group: "orgs",
4868
5101
  description: "List members of an organization",
4869
- inputSchema: inputSchema70,
4870
- outputSchema: z73.any(),
5102
+ inputSchema: inputSchema78,
5103
+ outputSchema: z81.any(),
4871
5104
  annotations: { readOnlyHint: true },
4872
5105
  async execute(input, ctx) {
4873
5106
  return ctx.client.get("organization_members", {
@@ -4881,17 +5114,17 @@ var orgsMembers = {
4881
5114
  };
4882
5115
 
4883
5116
  // src/commands/orgs/remove-member.ts
4884
- import { z as z74 } from "zod";
4885
- var inputSchema71 = z74.object({
4886
- orgId: z74.string().uuid().describe("Organization ID"),
4887
- membershipId: z74.string().uuid().describe("Membership ID of the member to remove")
5117
+ import { z as z82 } from "zod";
5118
+ var inputSchema79 = z82.object({
5119
+ orgId: z82.string().uuid().describe("Organization ID"),
5120
+ membershipId: z82.string().uuid().describe("Membership ID of the member to remove")
4888
5121
  });
4889
5122
  var orgsRemoveMember = {
4890
5123
  name: "orgs.removeMember",
4891
5124
  group: "orgs",
4892
5125
  description: "Remove a member from an organization",
4893
- inputSchema: inputSchema71,
4894
- outputSchema: z74.any(),
5126
+ inputSchema: inputSchema79,
5127
+ outputSchema: z82.any(),
4895
5128
  annotations: { destructiveHint: true },
4896
5129
  async execute(input, ctx) {
4897
5130
  await ctx.client.del("organization_member", {
@@ -4906,42 +5139,64 @@ var orgsRemoveMember = {
4906
5139
  };
4907
5140
 
4908
5141
  // src/commands/orgs/resend-invite.ts
4909
- import { z as z75 } from "zod";
4910
- var inputSchema72 = z75.object({
4911
- orgId: z75.string().uuid().describe("Organization ID"),
4912
- invitationId: z75.string().uuid().describe("Invitation ID to resend")
5142
+ import { z as z83 } from "zod";
5143
+ var inputSchema80 = z83.object({
5144
+ orgId: z83.string().uuid().describe("Organization ID"),
5145
+ invitationId: z83.string().uuid().describe("Invitation ID to resend")
4913
5146
  });
4914
5147
  var orgsResendInvite = {
4915
5148
  name: "orgs.resendInvite",
4916
5149
  group: "orgs",
4917
- description: "Resend an organization invitation email. Regenerates the token and extends the expiry by 7 days. Works on both pending and expired invitations, preserves the invitation ID.",
4918
- inputSchema: inputSchema72,
4919
- outputSchema: z75.any(),
5150
+ description: "Resend an organization invitation email. Regenerates the token and extends the expiry by 7 days. Works on both pending and expired invitations, preserves the invitation ID.",
5151
+ inputSchema: inputSchema80,
5152
+ outputSchema: z83.any(),
5153
+ annotations: { idempotentHint: true },
5154
+ async execute(input, ctx) {
5155
+ return ctx.client.post(
5156
+ "org_invitation_resend",
5157
+ {},
5158
+ { pathParams: { orgId: input.orgId, invId: input.invitationId } }
5159
+ );
5160
+ },
5161
+ formatOutput(output, format) {
5162
+ if (format === "compact") return output.id ?? JSON.stringify(output);
5163
+ return JSON.stringify(output, null, 2);
5164
+ }
5165
+ };
5166
+
5167
+ // src/commands/orgs/set-autotidy.ts
5168
+ import { z as z84 } from "zod";
5169
+ var inputSchema81 = z84.object({
5170
+ orgId: z84.string().uuid().describe("Organization ID"),
5171
+ enabled: z84.boolean().default(false).describe("Enable Knowledge Base auto-tidy (omit to disable)")
5172
+ });
5173
+ var orgsSetAutotidy = {
5174
+ name: "orgs.setAutotidy",
5175
+ group: "orgs",
5176
+ description: "Enable or disable Knowledge Base auto-tidy for an organization",
5177
+ inputSchema: inputSchema81,
5178
+ outputSchema: z84.any(),
4920
5179
  annotations: { idempotentHint: true },
4921
5180
  async execute(input, ctx) {
4922
- return ctx.client.post(
4923
- "org_invitation_resend",
4924
- {},
4925
- { pathParams: { orgId: input.orgId, invId: input.invitationId } }
4926
- );
5181
+ return ctx.client.patch("org_kb_autotidy", { enabled: input.enabled }, { pathParams: { orgId: input.orgId } });
4927
5182
  },
4928
5183
  formatOutput(output, format) {
4929
- if (format === "compact") return output.id ?? JSON.stringify(output);
5184
+ if (format === "compact") return JSON.stringify(output);
4930
5185
  return JSON.stringify(output, null, 2);
4931
5186
  }
4932
5187
  };
4933
5188
 
4934
5189
  // src/commands/orgs/set-default.ts
4935
- import { z as z76 } from "zod";
4936
- var inputSchema73 = z76.object({
4937
- orgId: z76.string().uuid().describe("Organization ID to set as default")
5190
+ import { z as z85 } from "zod";
5191
+ var inputSchema82 = z85.object({
5192
+ orgId: z85.string().uuid().describe("Organization ID to set as default")
4938
5193
  });
4939
5194
  var orgsSetDefault = {
4940
5195
  name: "orgs.setDefault",
4941
5196
  group: "orgs",
4942
5197
  description: "Set an organization as the default",
4943
- inputSchema: inputSchema73,
4944
- outputSchema: z76.any(),
5198
+ inputSchema: inputSchema82,
5199
+ outputSchema: z85.any(),
4945
5200
  annotations: { idempotentHint: true },
4946
5201
  async execute(input, ctx) {
4947
5202
  return ctx.client.put("organization_set_default", void 0, {
@@ -4955,17 +5210,17 @@ var orgsSetDefault = {
4955
5210
  };
4956
5211
 
4957
5212
  // src/commands/orgs/set-stripe.ts
4958
- import { z as z77 } from "zod";
4959
- var inputSchema74 = z77.object({
4960
- orgId: z77.string().uuid().describe("Organization ID"),
4961
- stripeCustomerId: z77.string().min(1).describe("Stripe customer ID (e.g. cus_xxx)")
5213
+ import { z as z86 } from "zod";
5214
+ var inputSchema83 = z86.object({
5215
+ orgId: z86.string().uuid().describe("Organization ID"),
5216
+ stripeCustomerId: z86.string().min(1).describe("Stripe customer ID (e.g. cus_xxx)")
4962
5217
  });
4963
5218
  var orgsSetStripe = {
4964
5219
  name: "orgs.setStripe",
4965
5220
  group: "orgs",
4966
5221
  description: "Set the Stripe customer ID for an organization",
4967
- inputSchema: inputSchema74,
4968
- outputSchema: z77.any(),
5222
+ inputSchema: inputSchema83,
5223
+ outputSchema: z86.any(),
4969
5224
  annotations: { idempotentHint: true },
4970
5225
  async execute(input, ctx) {
4971
5226
  return ctx.client.put(
@@ -4982,18 +5237,18 @@ var orgsSetStripe = {
4982
5237
 
4983
5238
  // src/commands/orgs/update.ts
4984
5239
  init_errors();
4985
- import { z as z78 } from "zod";
4986
- var inputSchema75 = z78.object({
4987
- orgId: z78.string().uuid().describe("Organization ID"),
4988
- name: z78.string().min(1).optional().describe("New organization name"),
4989
- description: z78.string().optional().describe("New organization description")
5240
+ import { z as z87 } from "zod";
5241
+ var inputSchema84 = z87.object({
5242
+ orgId: z87.string().uuid().describe("Organization ID"),
5243
+ name: z87.string().min(1).optional().describe("New organization name"),
5244
+ description: z87.string().optional().describe("New organization description")
4990
5245
  });
4991
5246
  var orgsUpdate = {
4992
5247
  name: "orgs.update",
4993
5248
  group: "orgs",
4994
5249
  description: "Update an existing organization",
4995
- inputSchema: inputSchema75,
4996
- outputSchema: z78.any(),
5250
+ inputSchema: inputSchema84,
5251
+ outputSchema: z87.any(),
4997
5252
  annotations: { idempotentHint: true },
4998
5253
  async execute(input, ctx) {
4999
5254
  const { orgId, ...fields } = input;
@@ -5014,18 +5269,18 @@ var orgsUpdate = {
5014
5269
  };
5015
5270
 
5016
5271
  // src/commands/orgs/update-role.ts
5017
- import { z as z79 } from "zod";
5018
- var inputSchema76 = z79.object({
5019
- orgId: z79.string().uuid().describe("Organization ID"),
5020
- membershipId: z79.string().uuid().describe("Membership ID of the member"),
5021
- role: z79.string().min(1).describe("New role to assign")
5272
+ import { z as z88 } from "zod";
5273
+ var inputSchema85 = z88.object({
5274
+ orgId: z88.string().uuid().describe("Organization ID"),
5275
+ membershipId: z88.string().uuid().describe("Membership ID of the member"),
5276
+ role: z88.string().min(1).describe("New role to assign")
5022
5277
  });
5023
5278
  var orgsUpdateRole = {
5024
5279
  name: "orgs.updateRole",
5025
5280
  group: "orgs",
5026
5281
  description: "Update an organization member's role",
5027
- inputSchema: inputSchema76,
5028
- outputSchema: z79.any(),
5282
+ inputSchema: inputSchema85,
5283
+ outputSchema: z88.any(),
5029
5284
  annotations: { idempotentHint: true },
5030
5285
  async execute(input, ctx) {
5031
5286
  return ctx.client.put(
@@ -5061,23 +5316,25 @@ function registerOrgCommands() {
5061
5316
  orgsInvitationInfo,
5062
5317
  orgsAcceptInvite,
5063
5318
  orgsFiles,
5064
- orgsListAll
5319
+ orgsListAll,
5320
+ orgsDirectory,
5321
+ orgsSetAutotidy
5065
5322
  ];
5066
5323
  }
5067
5324
 
5068
5325
  // src/commands/projects/add-member.ts
5069
- import { z as z80 } from "zod";
5070
- var inputSchema77 = z80.object({
5071
- projectId: z80.string().uuid().describe("Project ID"),
5072
- userId: z80.string().uuid().describe("User ID to add"),
5073
- role: z80.string().default("Member").describe("Role to assign (default: Member)")
5326
+ import { z as z89 } from "zod";
5327
+ var inputSchema86 = z89.object({
5328
+ projectId: z89.string().uuid().describe("Project ID"),
5329
+ userId: z89.string().uuid().describe("User ID to add"),
5330
+ role: z89.string().default("Member").describe("Role to assign (default: Member)")
5074
5331
  });
5075
5332
  var projectsAddMember = {
5076
5333
  name: "projects.addMember",
5077
5334
  group: "projects",
5078
5335
  description: "Add a member to a project",
5079
- inputSchema: inputSchema77,
5080
- outputSchema: z80.any(),
5336
+ inputSchema: inputSchema86,
5337
+ outputSchema: z89.any(),
5081
5338
  async execute(input, ctx) {
5082
5339
  return ctx.client.post(
5083
5340
  "project_members",
@@ -5092,16 +5349,16 @@ var projectsAddMember = {
5092
5349
  };
5093
5350
 
5094
5351
  // src/commands/projects/archive.ts
5095
- import { z as z81 } from "zod";
5096
- var inputSchema78 = z81.object({
5097
- projectId: z81.string().uuid().describe("Project ID to archive")
5352
+ import { z as z90 } from "zod";
5353
+ var inputSchema87 = z90.object({
5354
+ projectId: z90.string().uuid().describe("Project ID to archive")
5098
5355
  });
5099
5356
  var projectsArchive = {
5100
5357
  name: "projects.archive",
5101
5358
  group: "projects",
5102
5359
  description: "Archive (delete) a project",
5103
- inputSchema: inputSchema78,
5104
- outputSchema: z81.any(),
5360
+ inputSchema: inputSchema87,
5361
+ outputSchema: z90.any(),
5105
5362
  annotations: { destructiveHint: true },
5106
5363
  async execute(input, ctx) {
5107
5364
  await ctx.client.del("project", {
@@ -5116,18 +5373,18 @@ var projectsArchive = {
5116
5373
  };
5117
5374
 
5118
5375
  // src/commands/projects/create.ts
5119
- import { z as z82 } from "zod";
5120
- var inputSchema79 = z82.object({
5121
- name: z82.string().min(1).describe("Project name"),
5122
- description: z82.string().optional().describe("Project description"),
5123
- icon: z82.string().optional().describe("Project icon")
5376
+ import { z as z91 } from "zod";
5377
+ var inputSchema88 = z91.object({
5378
+ name: z91.string().min(1).describe("Project name"),
5379
+ description: z91.string().optional().describe("Project description"),
5380
+ icon: z91.string().optional().describe("Project icon")
5124
5381
  });
5125
5382
  var projectsCreate = {
5126
5383
  name: "projects.create",
5127
5384
  group: "projects",
5128
5385
  description: "Create a new project",
5129
- inputSchema: inputSchema79,
5130
- outputSchema: z82.any(),
5386
+ inputSchema: inputSchema88,
5387
+ outputSchema: z91.any(),
5131
5388
  async execute(input, ctx) {
5132
5389
  return ctx.client.post("projects", input);
5133
5390
  },
@@ -5138,16 +5395,16 @@ var projectsCreate = {
5138
5395
  };
5139
5396
 
5140
5397
  // src/commands/projects/get.ts
5141
- import { z as z83 } from "zod";
5142
- var inputSchema80 = z83.object({
5143
- projectId: z83.string().uuid().describe("Project ID")
5398
+ import { z as z92 } from "zod";
5399
+ var inputSchema89 = z92.object({
5400
+ projectId: z92.string().uuid().describe("Project ID")
5144
5401
  });
5145
5402
  var projectsGet = {
5146
5403
  name: "projects.get",
5147
5404
  group: "projects",
5148
5405
  description: "Get details of a specific project",
5149
- inputSchema: inputSchema80,
5150
- outputSchema: z83.any(),
5406
+ inputSchema: inputSchema89,
5407
+ outputSchema: z92.any(),
5151
5408
  annotations: { readOnlyHint: true },
5152
5409
  async execute(input, ctx) {
5153
5410
  return ctx.client.get("project", {
@@ -5161,16 +5418,16 @@ var projectsGet = {
5161
5418
  };
5162
5419
 
5163
5420
  // src/commands/projects/leave.ts
5164
- import { z as z84 } from "zod";
5165
- var inputSchema81 = z84.object({
5166
- projectId: z84.string().uuid().describe("Project ID to leave")
5421
+ import { z as z93 } from "zod";
5422
+ var inputSchema90 = z93.object({
5423
+ projectId: z93.string().uuid().describe("Project ID to leave")
5167
5424
  });
5168
5425
  var projectsLeave = {
5169
5426
  name: "projects.leave",
5170
5427
  group: "projects",
5171
5428
  description: "Leave a project",
5172
- inputSchema: inputSchema81,
5173
- outputSchema: z84.any(),
5429
+ inputSchema: inputSchema90,
5430
+ outputSchema: z93.any(),
5174
5431
  annotations: { destructiveHint: true },
5175
5432
  async execute(input, ctx) {
5176
5433
  return ctx.client.post("project_leave", void 0, {
@@ -5184,16 +5441,16 @@ var projectsLeave = {
5184
5441
  };
5185
5442
 
5186
5443
  // src/commands/projects/list.ts
5187
- import { z as z85 } from "zod";
5188
- var inputSchema82 = z85.object({
5444
+ import { z as z94 } from "zod";
5445
+ var inputSchema91 = z94.object({
5189
5446
  ...paginationInput
5190
5447
  });
5191
5448
  var projectsList = {
5192
5449
  name: "projects.list",
5193
5450
  group: "projects",
5194
5451
  description: "List all projects accessible to the current user",
5195
- inputSchema: inputSchema82,
5196
- outputSchema: z85.any(),
5452
+ inputSchema: inputSchema91,
5453
+ outputSchema: z94.any(),
5197
5454
  annotations: { readOnlyHint: true },
5198
5455
  async execute(input, ctx) {
5199
5456
  return ctx.client.get("projects", {
@@ -5207,16 +5464,16 @@ var projectsList = {
5207
5464
  };
5208
5465
 
5209
5466
  // src/commands/projects/members.ts
5210
- import { z as z86 } from "zod";
5211
- var inputSchema83 = z86.object({
5212
- projectId: z86.string().uuid().describe("Project ID")
5467
+ import { z as z95 } from "zod";
5468
+ var inputSchema92 = z95.object({
5469
+ projectId: z95.string().uuid().describe("Project ID")
5213
5470
  });
5214
5471
  var projectsMembers = {
5215
5472
  name: "projects.members",
5216
5473
  group: "projects",
5217
5474
  description: "List members of a project",
5218
- inputSchema: inputSchema83,
5219
- outputSchema: z86.any(),
5475
+ inputSchema: inputSchema92,
5476
+ outputSchema: z95.any(),
5220
5477
  annotations: { readOnlyHint: true },
5221
5478
  async execute(input, ctx) {
5222
5479
  return ctx.client.get("project_members", {
@@ -5230,17 +5487,17 @@ var projectsMembers = {
5230
5487
  };
5231
5488
 
5232
5489
  // src/commands/projects/remove-member.ts
5233
- import { z as z87 } from "zod";
5234
- var inputSchema84 = z87.object({
5235
- projectId: z87.string().uuid().describe("Project ID"),
5236
- userId: z87.string().uuid().describe("User ID to remove")
5490
+ import { z as z96 } from "zod";
5491
+ var inputSchema93 = z96.object({
5492
+ projectId: z96.string().uuid().describe("Project ID"),
5493
+ userId: z96.string().uuid().describe("User ID to remove")
5237
5494
  });
5238
5495
  var projectsRemoveMember = {
5239
5496
  name: "projects.removeMember",
5240
5497
  group: "projects",
5241
5498
  description: "Remove a member from a project",
5242
- inputSchema: inputSchema84,
5243
- outputSchema: z87.any(),
5499
+ inputSchema: inputSchema93,
5500
+ outputSchema: z96.any(),
5244
5501
  annotations: { destructiveHint: true },
5245
5502
  async execute(input, ctx) {
5246
5503
  await ctx.client.del("project_member", {
@@ -5256,19 +5513,19 @@ var projectsRemoveMember = {
5256
5513
 
5257
5514
  // src/commands/projects/update.ts
5258
5515
  init_errors();
5259
- import { z as z88 } from "zod";
5260
- var inputSchema85 = z88.object({
5261
- projectId: z88.string().uuid().describe("Project ID"),
5262
- name: z88.string().min(1).optional().describe("New project name"),
5263
- description: z88.string().optional().describe("New project description"),
5264
- icon: z88.string().optional().describe("New project icon")
5516
+ import { z as z97 } from "zod";
5517
+ var inputSchema94 = z97.object({
5518
+ projectId: z97.string().uuid().describe("Project ID"),
5519
+ name: z97.string().min(1).optional().describe("New project name"),
5520
+ description: z97.string().optional().describe("New project description"),
5521
+ icon: z97.string().optional().describe("New project icon")
5265
5522
  });
5266
5523
  var projectsUpdate = {
5267
5524
  name: "projects.update",
5268
5525
  group: "projects",
5269
5526
  description: "Update an existing project",
5270
- inputSchema: inputSchema85,
5271
- outputSchema: z88.any(),
5527
+ inputSchema: inputSchema94,
5528
+ outputSchema: z97.any(),
5272
5529
  annotations: { idempotentHint: true },
5273
5530
  async execute(input, ctx) {
5274
5531
  const { projectId, ...fields } = input;
@@ -5289,18 +5546,18 @@ var projectsUpdate = {
5289
5546
  };
5290
5547
 
5291
5548
  // src/commands/projects/update-role.ts
5292
- import { z as z89 } from "zod";
5293
- var inputSchema86 = z89.object({
5294
- projectId: z89.string().uuid().describe("Project ID"),
5295
- userId: z89.string().uuid().describe("User ID of the member"),
5296
- role: z89.string().min(1).describe("New role to assign")
5549
+ import { z as z98 } from "zod";
5550
+ var inputSchema95 = z98.object({
5551
+ projectId: z98.string().uuid().describe("Project ID"),
5552
+ userId: z98.string().uuid().describe("User ID of the member"),
5553
+ role: z98.string().min(1).describe("New role to assign")
5297
5554
  });
5298
5555
  var projectsUpdateRole = {
5299
5556
  name: "projects.updateRole",
5300
5557
  group: "projects",
5301
5558
  description: "Update a project member's role",
5302
- inputSchema: inputSchema86,
5303
- outputSchema: z89.any(),
5559
+ inputSchema: inputSchema95,
5560
+ outputSchema: z98.any(),
5304
5561
  annotations: { idempotentHint: true },
5305
5562
  async execute(input, ctx) {
5306
5563
  return ctx.client.put(
@@ -5332,19 +5589,19 @@ function registerProjectCommands() {
5332
5589
  }
5333
5590
 
5334
5591
  // src/commands/protocols/generate.ts
5335
- import { z as z90 } from "zod";
5336
- var inputSchema87 = z90.object({
5337
- description: z90.string().min(10).max(5e3).describe("Protocol description"),
5338
- title: z90.string().max(200).optional().describe("Task title (defaults to first 100 chars of description)"),
5339
- project: z90.string().uuid().optional().describe("Project UUID to associate with")
5592
+ import { z as z99 } from "zod";
5593
+ var inputSchema96 = z99.object({
5594
+ description: z99.string().min(10).max(5e3).describe("Protocol description"),
5595
+ title: z99.string().max(200).optional().describe("Task title (defaults to first 100 chars of description)"),
5596
+ project: z99.string().uuid().optional().describe("Project UUID to associate with")
5340
5597
  });
5341
5598
  var protocolsGenerate = {
5342
5599
  name: "protocols.generate",
5343
5600
  group: "protocols",
5344
5601
  description: "Generate a bioprotocol \u2014 creates a task and sends the description in one call. Returns the task and the queued user message, NOT the AI response; the agent processes asynchronously. To get the generated protocol, poll elnora_tasks_messages with the returned task id every 5-10s until the last message has role 'assistant' with metadata.status 'completed'. Timeout after 5 min.",
5345
5602
  stdinField: "description",
5346
- inputSchema: inputSchema87,
5347
- outputSchema: z90.any(),
5603
+ inputSchema: inputSchema96,
5604
+ outputSchema: z99.any(),
5348
5605
  annotations: { mcpScopes: ["tasks:write", "messages:write"] },
5349
5606
  async execute(input, ctx) {
5350
5607
  const body = { title: input.title || input.description.slice(0, 100) };
@@ -5377,10 +5634,77 @@ function registerProtocolCommands() {
5377
5634
  return [protocolsGenerate];
5378
5635
  }
5379
5636
 
5637
+ // src/commands/review/approve.ts
5638
+ import { z as z100 } from "zod";
5639
+ var inputSchema97 = z100.object({
5640
+ itemId: z100.string().uuid().describe("Review item ID")
5641
+ });
5642
+ var reviewApprove = {
5643
+ name: "review.approve",
5644
+ group: "review",
5645
+ description: "Approve a Knowledge Base review item, applying its proposed change",
5646
+ inputSchema: inputSchema97,
5647
+ outputSchema: z100.any(),
5648
+ async execute(input, ctx) {
5649
+ return ctx.client.post("kb_review_approve", {}, { pathParams: { id: input.itemId } });
5650
+ },
5651
+ formatOutput(output, format) {
5652
+ if (format === "compact") return output.id ?? JSON.stringify(output);
5653
+ return JSON.stringify(output, null, 2);
5654
+ }
5655
+ };
5656
+
5657
+ // src/commands/review/list.ts
5658
+ import { z as z101 } from "zod";
5659
+ var inputSchema98 = z101.object({
5660
+ status: z101.enum(["pending", "applied", "rejected", "all"]).default("pending").describe("Filter by review status ('all' lists every state)")
5661
+ });
5662
+ var reviewList = {
5663
+ name: "review.list",
5664
+ group: "review",
5665
+ description: "List the Knowledge Base review queue (auto-tidy proposals awaiting approval)",
5666
+ inputSchema: inputSchema98,
5667
+ outputSchema: z101.any(),
5668
+ annotations: { readOnlyHint: true },
5669
+ async execute(input, ctx) {
5670
+ const status = input.status === "all" ? "" : input.status;
5671
+ return ctx.client.get("kb_review_items", { queryParams: { status } });
5672
+ },
5673
+ formatOutput(output, format) {
5674
+ if (format === "compact") return output.id ?? JSON.stringify(output);
5675
+ return JSON.stringify(output, null, 2);
5676
+ }
5677
+ };
5678
+
5679
+ // src/commands/review/reject.ts
5680
+ import { z as z102 } from "zod";
5681
+ var inputSchema99 = z102.object({
5682
+ itemId: z102.string().uuid().describe("Review item ID")
5683
+ });
5684
+ var reviewReject = {
5685
+ name: "review.reject",
5686
+ group: "review",
5687
+ description: "Reject a Knowledge Base review item without applying its change",
5688
+ inputSchema: inputSchema99,
5689
+ outputSchema: z102.any(),
5690
+ async execute(input, ctx) {
5691
+ return ctx.client.post("kb_review_reject", {}, { pathParams: { id: input.itemId } });
5692
+ },
5693
+ formatOutput(output, format) {
5694
+ if (format === "compact") return output.id ?? JSON.stringify(output);
5695
+ return JSON.stringify(output, null, 2);
5696
+ }
5697
+ };
5698
+
5699
+ // src/commands/review/index.ts
5700
+ function registerReviewCommands() {
5701
+ return [reviewList, reviewApprove, reviewReject];
5702
+ }
5703
+
5380
5704
  // src/commands/search/all.ts
5381
- import { z as z91 } from "zod";
5382
- var inputSchema88 = z91.object({
5383
- query: z91.string().min(1).describe("Search query"),
5705
+ import { z as z103 } from "zod";
5706
+ var inputSchema100 = z103.object({
5707
+ query: z103.string().min(1).describe("Search query"),
5384
5708
  ...paginationInput
5385
5709
  });
5386
5710
  var searchAll = {
@@ -5388,8 +5712,8 @@ var searchAll = {
5388
5712
  group: "search",
5389
5713
  description: "Search across all entities",
5390
5714
  stdinField: "query",
5391
- inputSchema: inputSchema88,
5392
- outputSchema: z91.any(),
5715
+ inputSchema: inputSchema100,
5716
+ outputSchema: z103.any(),
5393
5717
  annotations: { readOnlyHint: true },
5394
5718
  async execute(input, ctx) {
5395
5719
  return ctx.client.get("search_all", {
@@ -5403,10 +5727,10 @@ var searchAll = {
5403
5727
  };
5404
5728
 
5405
5729
  // src/commands/search/file-content.ts
5406
- import { z as z92 } from "zod";
5407
- var inputSchema89 = z92.object({
5408
- query: z92.string().min(1).describe("Search query"),
5409
- projectId: z92.string().uuid().optional().describe("Filter by project ID"),
5730
+ import { z as z104 } from "zod";
5731
+ var inputSchema101 = z104.object({
5732
+ query: z104.string().min(1).describe("Search query"),
5733
+ projectId: z104.string().uuid().optional().describe("Filter by project ID"),
5410
5734
  ...paginationInput
5411
5735
  });
5412
5736
  var searchFileContent = {
@@ -5414,8 +5738,8 @@ var searchFileContent = {
5414
5738
  group: "search",
5415
5739
  description: "Search within file contents",
5416
5740
  stdinField: "query",
5417
- inputSchema: inputSchema89,
5418
- outputSchema: z92.any(),
5741
+ inputSchema: inputSchema101,
5742
+ outputSchema: z104.any(),
5419
5743
  annotations: { readOnlyHint: true },
5420
5744
  async execute(input, ctx) {
5421
5745
  const queryParams = {
@@ -5433,9 +5757,9 @@ var searchFileContent = {
5433
5757
  };
5434
5758
 
5435
5759
  // src/commands/search/files.ts
5436
- import { z as z93 } from "zod";
5437
- var inputSchema90 = z93.object({
5438
- query: z93.string().min(1).describe("Search query"),
5760
+ import { z as z105 } from "zod";
5761
+ var inputSchema102 = z105.object({
5762
+ query: z105.string().min(1).describe("Search query"),
5439
5763
  ...paginationInput
5440
5764
  });
5441
5765
  var searchFiles = {
@@ -5443,8 +5767,8 @@ var searchFiles = {
5443
5767
  group: "search",
5444
5768
  description: "Search files by query",
5445
5769
  stdinField: "query",
5446
- inputSchema: inputSchema90,
5447
- outputSchema: z93.any(),
5770
+ inputSchema: inputSchema102,
5771
+ outputSchema: z105.any(),
5448
5772
  annotations: { readOnlyHint: true },
5449
5773
  async execute(input, ctx) {
5450
5774
  return ctx.client.get("search_files", {
@@ -5458,9 +5782,9 @@ var searchFiles = {
5458
5782
  };
5459
5783
 
5460
5784
  // src/commands/search/tasks.ts
5461
- import { z as z94 } from "zod";
5462
- var inputSchema91 = z94.object({
5463
- query: z94.string().min(1).describe("Search query"),
5785
+ import { z as z106 } from "zod";
5786
+ var inputSchema103 = z106.object({
5787
+ query: z106.string().min(1).describe("Search query"),
5464
5788
  ...paginationInput
5465
5789
  });
5466
5790
  var searchTasks = {
@@ -5468,8 +5792,8 @@ var searchTasks = {
5468
5792
  group: "search",
5469
5793
  description: "Search tasks by query",
5470
5794
  stdinField: "query",
5471
- inputSchema: inputSchema91,
5472
- outputSchema: z94.any(),
5795
+ inputSchema: inputSchema103,
5796
+ outputSchema: z106.any(),
5473
5797
  annotations: { readOnlyHint: true },
5474
5798
  async execute(input, ctx) {
5475
5799
  return ctx.client.get("search_tasks", {
@@ -5488,16 +5812,16 @@ function registerSearchCommands() {
5488
5812
  }
5489
5813
 
5490
5814
  // src/commands/tasks/archive.ts
5491
- import { z as z95 } from "zod";
5492
- var inputSchema92 = z95.object({
5493
- taskId: z95.string().uuid().describe("Task ID to archive")
5815
+ import { z as z107 } from "zod";
5816
+ var inputSchema104 = z107.object({
5817
+ taskId: z107.string().uuid().describe("Task ID to archive")
5494
5818
  });
5495
5819
  var tasksArchive = {
5496
5820
  name: "tasks.archive",
5497
5821
  group: "tasks",
5498
5822
  description: "Archive (delete) a task",
5499
- inputSchema: inputSchema92,
5500
- outputSchema: z95.any(),
5823
+ inputSchema: inputSchema104,
5824
+ outputSchema: z107.any(),
5501
5825
  annotations: { destructiveHint: true },
5502
5826
  async execute(input, ctx) {
5503
5827
  await ctx.client.del("task", {
@@ -5511,8 +5835,53 @@ var tasksArchive = {
5511
5835
  }
5512
5836
  };
5513
5837
 
5838
+ // src/commands/tasks/attachment-content.ts
5839
+ import { z as z108 } from "zod";
5840
+ var inputSchema105 = z108.object({
5841
+ taskId: z108.string().uuid().describe("Task ID"),
5842
+ attachmentId: z108.string().uuid().describe("Attachment ID")
5843
+ });
5844
+ var tasksAttachmentContent = {
5845
+ name: "tasks.attachmentContent",
5846
+ group: "tasks",
5847
+ description: "Get the content of a task attachment",
5848
+ inputSchema: inputSchema105,
5849
+ outputSchema: z108.any(),
5850
+ annotations: { readOnlyHint: true },
5851
+ async execute(input, ctx) {
5852
+ return ctx.client.get("task_attachment_content", {
5853
+ pathParams: { id: input.taskId, aid: input.attachmentId }
5854
+ });
5855
+ },
5856
+ formatOutput(output, format) {
5857
+ if (format === "compact") return output.content ?? JSON.stringify(output);
5858
+ return JSON.stringify(output, null, 2);
5859
+ }
5860
+ };
5861
+
5862
+ // src/commands/tasks/attachments.ts
5863
+ import { z as z109 } from "zod";
5864
+ var inputSchema106 = z109.object({
5865
+ taskId: z109.string().uuid().describe("Task ID")
5866
+ });
5867
+ var tasksAttachments = {
5868
+ name: "tasks.attachments",
5869
+ group: "tasks",
5870
+ description: "List the files attached to a task",
5871
+ inputSchema: inputSchema106,
5872
+ outputSchema: z109.any(),
5873
+ annotations: { readOnlyHint: true },
5874
+ async execute(input, ctx) {
5875
+ return ctx.client.get("task_attachments", { pathParams: { id: input.taskId } });
5876
+ },
5877
+ formatOutput(output, format) {
5878
+ if (format === "compact") return output.id ?? JSON.stringify(output);
5879
+ return JSON.stringify(output, null, 2);
5880
+ }
5881
+ };
5882
+
5514
5883
  // src/commands/tasks/create.ts
5515
- import { z as z96 } from "zod";
5884
+ import { z as z110 } from "zod";
5516
5885
 
5517
5886
  // src/lib/poll.ts
5518
5887
  init_errors();
@@ -5718,20 +6087,20 @@ ${this.useColor ? pc5.yellow("Stream timed out.") : "Stream timed out."}
5718
6087
  };
5719
6088
 
5720
6089
  // src/commands/tasks/create.ts
5721
- var inputSchema93 = z96.object({
5722
- project: z96.string().uuid().optional().describe("Project ID (optional; defaults to your workspace)"),
5723
- title: z96.string().optional().describe("Task title"),
5724
- message: z96.string().optional().describe("Initial message"),
5725
- wait: z96.boolean().default(false).describe("Wait for agent response (polling)"),
5726
- stream: z96.boolean().default(false).describe("Stream agent response in real-time (SSE)")
6090
+ var inputSchema107 = z110.object({
6091
+ project: z110.string().uuid().optional().describe("Project ID (optional; defaults to your workspace)"),
6092
+ title: z110.string().optional().describe("Task title"),
6093
+ message: z110.string().optional().describe("Initial message"),
6094
+ wait: z110.boolean().default(false).describe("Wait for agent response (polling)"),
6095
+ stream: z110.boolean().default(false).describe("Stream agent response in real-time (SSE)")
5727
6096
  });
5728
6097
  var tasksCreate = {
5729
6098
  name: "tasks.create",
5730
6099
  group: "tasks",
5731
6100
  description: "Create a new task in a project. If a message is provided it is queued, but the AI response is NOT returned \u2014 the agent processes asynchronously. Poll elnora_tasks_messages every 5-10s until the last message has role 'assistant' with metadata.status 'completed'. Timeout after 5 min.",
5732
6101
  stdinField: "message",
5733
- inputSchema: inputSchema93,
5734
- outputSchema: z96.any(),
6102
+ inputSchema: inputSchema107,
6103
+ outputSchema: z110.any(),
5735
6104
  async execute(input, ctx) {
5736
6105
  const result = await ctx.client.post("tasks", {
5737
6106
  // projectId is optional (ELN-880 Phase C): when omitted the backend creates the
@@ -5783,16 +6152,16 @@ var tasksCreate = {
5783
6152
  };
5784
6153
 
5785
6154
  // src/commands/tasks/get.ts
5786
- import { z as z97 } from "zod";
5787
- var inputSchema94 = z97.object({
5788
- taskId: z97.string().uuid().describe("Task ID")
6155
+ import { z as z111 } from "zod";
6156
+ var inputSchema108 = z111.object({
6157
+ taskId: z111.string().uuid().describe("Task ID")
5789
6158
  });
5790
6159
  var tasksGet = {
5791
6160
  name: "tasks.get",
5792
6161
  group: "tasks",
5793
6162
  description: "Get details of a specific task",
5794
- inputSchema: inputSchema94,
5795
- outputSchema: z97.any(),
6163
+ inputSchema: inputSchema108,
6164
+ outputSchema: z111.any(),
5796
6165
  annotations: { readOnlyHint: true },
5797
6166
  async execute(input, ctx) {
5798
6167
  return ctx.client.get("task", {
@@ -5806,28 +6175,26 @@ var tasksGet = {
5806
6175
  };
5807
6176
 
5808
6177
  // src/commands/tasks/list.ts
5809
- import { z as z98 } from "zod";
5810
- var inputSchema95 = z98.object({
5811
- project: z98.string().uuid().optional().describe("Project ID to filter by"),
6178
+ import { z as z112 } from "zod";
6179
+ var inputSchema109 = z112.object({
6180
+ project: z112.string().uuid().optional().describe("Project ID to filter by"),
6181
+ status: z112.enum(["active", "archived", "all"]).optional().describe("Lifecycle filter: active (default), archived, or all"),
5812
6182
  ...paginationInput
5813
6183
  });
5814
6184
  var tasksList = {
5815
6185
  name: "tasks.list",
5816
6186
  group: "tasks",
5817
- description: "List tasks, optionally filtered by project",
5818
- inputSchema: inputSchema95,
5819
- outputSchema: z98.any(),
6187
+ description: "List tasks, optionally filtered by project or lifecycle status",
6188
+ inputSchema: inputSchema109,
6189
+ outputSchema: z112.any(),
5820
6190
  annotations: { readOnlyHint: true },
5821
6191
  async execute(input, ctx) {
6192
+ const queryParams = { page: input.page, pageSize: input.pageSize };
6193
+ if (input.status) queryParams.status = input.status;
5822
6194
  if (input.project) {
5823
- return ctx.client.get("project_tasks", {
5824
- pathParams: { id: input.project },
5825
- queryParams: { page: input.page, pageSize: input.pageSize }
5826
- });
6195
+ return ctx.client.get("project_tasks", { pathParams: { id: input.project }, queryParams });
5827
6196
  }
5828
- return ctx.client.get("tasks", {
5829
- queryParams: { page: input.page, pageSize: input.pageSize }
5830
- });
6197
+ return ctx.client.get("tasks", { queryParams });
5831
6198
  },
5832
6199
  formatOutput(output, format) {
5833
6200
  if (format === "compact") return output.id ?? JSON.stringify(output);
@@ -5836,18 +6203,18 @@ var tasksList = {
5836
6203
  };
5837
6204
 
5838
6205
  // src/commands/tasks/messages.ts
5839
- import { z as z99 } from "zod";
5840
- var inputSchema96 = z99.object({
5841
- taskId: z99.string().uuid().describe("Task ID"),
5842
- cursor: z99.string().optional().describe("Pagination cursor"),
5843
- limit: z99.number().int().min(1).max(100).default(50).describe("Results per page")
6206
+ import { z as z113 } from "zod";
6207
+ var inputSchema110 = z113.object({
6208
+ taskId: z113.string().uuid().describe("Task ID"),
6209
+ cursor: z113.string().optional().describe("Pagination cursor"),
6210
+ limit: z113.number().int().min(1).max(100).default(50).describe("Results per page")
5844
6211
  });
5845
6212
  var tasksMessages = {
5846
6213
  name: "tasks.messages",
5847
6214
  group: "tasks",
5848
6215
  description: "List messages for a task",
5849
- inputSchema: inputSchema96,
5850
- outputSchema: z99.any(),
6216
+ inputSchema: inputSchema110,
6217
+ outputSchema: z113.any(),
5851
6218
  annotations: { readOnlyHint: true },
5852
6219
  async execute(input, ctx) {
5853
6220
  const queryParams = { limit: input.limit };
@@ -5866,23 +6233,23 @@ var tasksMessages = {
5866
6233
  };
5867
6234
 
5868
6235
  // src/commands/tasks/send.ts
5869
- import { z as z100 } from "zod";
6236
+ import { z as z114 } from "zod";
5870
6237
  init_profiles();
5871
6238
  var UUID_RE2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
5872
- var inputSchema97 = z100.object({
5873
- taskId: z100.string().uuid().describe("Task ID"),
5874
- message: z100.string().min(1).describe("Message content"),
5875
- fileRefs: z100.string().optional().describe("Comma-separated file reference UUIDs"),
5876
- wait: z100.boolean().default(false).describe("Wait for agent response (polling)"),
5877
- stream: z100.boolean().default(false).describe("Stream agent response in real-time (SSE)")
6239
+ var inputSchema111 = z114.object({
6240
+ taskId: z114.string().uuid().describe("Task ID"),
6241
+ message: z114.string().min(1).describe("Message content"),
6242
+ fileRefs: z114.string().optional().describe("Comma-separated file reference UUIDs"),
6243
+ wait: z114.boolean().default(false).describe("Wait for agent response (polling)"),
6244
+ stream: z114.boolean().default(false).describe("Stream agent response in real-time (SSE)")
5878
6245
  });
5879
6246
  var tasksSend = {
5880
6247
  name: "tasks.send",
5881
6248
  group: "tasks",
5882
6249
  description: "Send a message to a task. Returns the created user message immediately \u2014 the agent processes asynchronously. To get the AI response, poll elnora_tasks_messages until the last message has role 'assistant' with metadata.status 'completed'. Poll every 5-10s, timeout after 5 min.",
5883
6250
  stdinField: "message",
5884
- inputSchema: inputSchema97,
5885
- outputSchema: z100.any(),
6251
+ inputSchema: inputSchema111,
6252
+ outputSchema: z114.any(),
5886
6253
  async execute(input, ctx) {
5887
6254
  let referencedFileIds;
5888
6255
  if (input.fileRefs) {
@@ -5937,20 +6304,42 @@ var tasksSend = {
5937
6304
  }
5938
6305
  };
5939
6306
 
6307
+ // src/commands/tasks/unarchive.ts
6308
+ import { z as z115 } from "zod";
6309
+ var inputSchema112 = z115.object({
6310
+ taskId: z115.string().uuid().describe("Task ID to unarchive")
6311
+ });
6312
+ var tasksUnarchive = {
6313
+ name: "tasks.unarchive",
6314
+ group: "tasks",
6315
+ description: "Unarchive a task so it reappears in the default task list",
6316
+ inputSchema: inputSchema112,
6317
+ outputSchema: z115.any(),
6318
+ annotations: { idempotentHint: true },
6319
+ async execute(input, ctx) {
6320
+ await ctx.client.post("task_unarchive", {}, { pathParams: { id: input.taskId } });
6321
+ return { unarchived: true, taskId: input.taskId };
6322
+ },
6323
+ formatOutput(output, format) {
6324
+ if (format === "compact") return output.taskId ?? JSON.stringify(output);
6325
+ return JSON.stringify(output, null, 2);
6326
+ }
6327
+ };
6328
+
5940
6329
  // src/commands/tasks/update.ts
5941
6330
  init_errors();
5942
- import { z as z101 } from "zod";
5943
- var inputSchema98 = z101.object({
5944
- taskId: z101.string().uuid().describe("Task ID"),
5945
- title: z101.string().min(1).optional().describe("New task title"),
5946
- status: z101.string().optional().describe("New task status")
6331
+ import { z as z116 } from "zod";
6332
+ var inputSchema113 = z116.object({
6333
+ taskId: z116.string().uuid().describe("Task ID"),
6334
+ title: z116.string().min(1).optional().describe("New task title"),
6335
+ status: z116.string().optional().describe("New task status")
5947
6336
  });
5948
6337
  var tasksUpdate = {
5949
6338
  name: "tasks.update",
5950
6339
  group: "tasks",
5951
6340
  description: "Update an existing task",
5952
- inputSchema: inputSchema98,
5953
- outputSchema: z101.any(),
6341
+ inputSchema: inputSchema113,
6342
+ outputSchema: z116.any(),
5954
6343
  annotations: { idempotentHint: true },
5955
6344
  async execute(input, ctx) {
5956
6345
  const { taskId, ...fields } = input;
@@ -5972,7 +6361,18 @@ var tasksUpdate = {
5972
6361
 
5973
6362
  // src/commands/tasks/index.ts
5974
6363
  function registerTaskCommands() {
5975
- return [tasksList, tasksGet, tasksCreate, tasksSend, tasksMessages, tasksUpdate, tasksArchive];
6364
+ return [
6365
+ tasksList,
6366
+ tasksGet,
6367
+ tasksCreate,
6368
+ tasksSend,
6369
+ tasksMessages,
6370
+ tasksUpdate,
6371
+ tasksArchive,
6372
+ tasksUnarchive,
6373
+ tasksAttachments,
6374
+ tasksAttachmentContent
6375
+ ];
5976
6376
  }
5977
6377
 
5978
6378
  // src/core/registry.ts
@@ -6013,6 +6413,7 @@ function buildRegistry() {
6013
6413
  registerFileCommands(),
6014
6414
  registerOrgCommands(),
6015
6415
  registerFolderCommands(),
6416
+ registerReviewCommands(),
6016
6417
  registerSearchCommands(),
6017
6418
  registerProtocolCommands(),
6018
6419
  registerLibraryCommands(),