@elnora-ai/cli 2.4.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.
- package/README.md +1 -1
- package/dist/cli.js +382 -204
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ elnora setup
|
|
|
49
49
|
|
|
50
50
|
This auto-detects which tools you have installed and configures them:
|
|
51
51
|
|
|
52
|
-
- **Claude Code** — registers the `elnora-plugins` marketplace and enables
|
|
52
|
+
- **Claude Code** — registers the `elnora-plugins` marketplace and enables 10 skills (`elnora-tasks`, `elnora-projects`, `elnora-files`, etc.) so you can use natural language.
|
|
53
53
|
- **Cursor / VS Code / Codex** — writes an MCP server config pointing at `https://mcp.elnora.ai/mcp` with your API key.
|
|
54
54
|
|
|
55
55
|
Target a specific tool: `elnora setup claude` · `elnora setup cursor` · `elnora setup vscode` · `elnora setup codex`.
|
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.
|
|
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}",
|
|
@@ -74,7 +77,9 @@ var init_config = __esm({
|
|
|
74
77
|
// Folders (closure-table Knowledge Base — the `folder`/`folder_move` paths are shared with the
|
|
75
78
|
// legacy controller; the KB read/mutation verbs are distinguished by HTTP method at the call site)
|
|
76
79
|
folder: "/folders/{id}",
|
|
80
|
+
folder_create: "/folders",
|
|
77
81
|
folder_move: "/folders/{id}/move",
|
|
82
|
+
folder_archive: "/folders/{id}/archive",
|
|
78
83
|
folders_files: "/folders/files",
|
|
79
84
|
folder_roots: "/folders/roots",
|
|
80
85
|
folder_children: "/folders/{id}/children",
|
|
@@ -95,6 +100,7 @@ var init_config = __esm({
|
|
|
95
100
|
organizations_all: "/organizations/all",
|
|
96
101
|
org_files: "/organizations/{orgId}/files",
|
|
97
102
|
org_member_directory: "/organizations/{orgId}/members/directory",
|
|
103
|
+
org_kb_autotidy: "/organizations/{orgId}/kb-autotidy",
|
|
98
104
|
// Organization invitations
|
|
99
105
|
org_invitations: "/organizations/{orgId}/invitations",
|
|
100
106
|
org_invitation: "/organizations/{orgId}/invitations/{invId}",
|
|
@@ -106,6 +112,10 @@ var init_config = __esm({
|
|
|
106
112
|
library_files: "/organizations/{orgId}/library/files",
|
|
107
113
|
library_folders: "/organizations/{orgId}/library/folders",
|
|
108
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",
|
|
109
119
|
// Search
|
|
110
120
|
search_tasks: "/search/tasks",
|
|
111
121
|
search_files: "/search/files",
|
|
@@ -1829,6 +1839,7 @@ var EXPECTED_SKILLS = [
|
|
|
1829
1839
|
"elnora-orgs",
|
|
1830
1840
|
"elnora-platform",
|
|
1831
1841
|
"elnora-projects",
|
|
1842
|
+
"elnora-review",
|
|
1832
1843
|
"elnora-search",
|
|
1833
1844
|
"elnora-tasks"
|
|
1834
1845
|
];
|
|
@@ -4296,22 +4307,23 @@ var foldersChildren = {
|
|
|
4296
4307
|
// src/commands/folders/create.ts
|
|
4297
4308
|
import { z as z51 } from "zod";
|
|
4298
4309
|
var inputSchema49 = z51.object({
|
|
4299
|
-
projectId: z51.string().uuid().describe("Project ID"),
|
|
4300
4310
|
name: z51.string().min(1).describe("Folder name"),
|
|
4301
|
-
parentId: z51.string().uuid().optional().describe("Parent folder ID")
|
|
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")
|
|
4302
4313
|
});
|
|
4303
4314
|
var foldersCreate = {
|
|
4304
4315
|
name: "folders.create",
|
|
4305
4316
|
group: "folders",
|
|
4306
|
-
description: "Create a
|
|
4317
|
+
description: "Create a Knowledge Base folder (or a legacy project folder when project is set)",
|
|
4307
4318
|
inputSchema: inputSchema49,
|
|
4308
4319
|
outputSchema: z51.any(),
|
|
4309
4320
|
async execute(input, ctx) {
|
|
4310
4321
|
const body = { name: input.name };
|
|
4311
|
-
if (input.parentId) body.
|
|
4312
|
-
|
|
4313
|
-
pathParams: { id: input.
|
|
4314
|
-
}
|
|
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);
|
|
4315
4327
|
},
|
|
4316
4328
|
formatOutput(output, format) {
|
|
4317
4329
|
if (format === "compact") return output.id ?? JSON.stringify(output);
|
|
@@ -4322,20 +4334,24 @@ var foldersCreate = {
|
|
|
4322
4334
|
// src/commands/folders/delete.ts
|
|
4323
4335
|
import { z as z52 } from "zod";
|
|
4324
4336
|
var inputSchema50 = z52.object({
|
|
4325
|
-
folderId: z52.string().uuid().describe("Folder ID to delete")
|
|
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")
|
|
4326
4339
|
});
|
|
4327
4340
|
var foldersDelete = {
|
|
4328
4341
|
name: "folders.delete",
|
|
4329
4342
|
group: "folders",
|
|
4330
|
-
description: "Delete a folder",
|
|
4343
|
+
description: "Delete a folder (Knowledge Base folders are archived)",
|
|
4331
4344
|
inputSchema: inputSchema50,
|
|
4332
4345
|
outputSchema: z52.any(),
|
|
4333
4346
|
annotations: { destructiveHint: true },
|
|
4334
4347
|
async execute(input, ctx) {
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
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 };
|
|
4339
4355
|
},
|
|
4340
4356
|
formatOutput(output, format) {
|
|
4341
4357
|
if (format === "compact") return output.folderId;
|
|
@@ -4420,7 +4436,8 @@ import { z as z56 } from "zod";
|
|
|
4420
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;
|
|
4421
4437
|
var inputSchema54 = z56.object({
|
|
4422
4438
|
folderId: z56.string().uuid().describe("Folder ID to move"),
|
|
4423
|
-
parentId: z56.string().min(1).describe("Target parent folder ID, or 'root' to move to
|
|
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")
|
|
4424
4441
|
});
|
|
4425
4442
|
var foldersMove = {
|
|
4426
4443
|
name: "folders.move",
|
|
@@ -4429,24 +4446,21 @@ var foldersMove = {
|
|
|
4429
4446
|
inputSchema: inputSchema54,
|
|
4430
4447
|
outputSchema: z56.any(),
|
|
4431
4448
|
async execute(input, ctx) {
|
|
4432
|
-
|
|
4433
|
-
if (input.parentId
|
|
4434
|
-
parentValue = null;
|
|
4435
|
-
} else if (UUID_RE.test(input.parentId)) {
|
|
4436
|
-
parentValue = input.parentId;
|
|
4437
|
-
} else {
|
|
4449
|
+
const isRoot = input.parentId === "root";
|
|
4450
|
+
if (!isRoot && !UUID_RE.test(input.parentId)) {
|
|
4438
4451
|
throw new ValidationError(
|
|
4439
4452
|
"parent must be a valid UUID or 'root'.",
|
|
4440
4453
|
"Provide a folder UUID or the literal string 'root'."
|
|
4441
4454
|
);
|
|
4442
4455
|
}
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
{
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
}
|
|
4449
|
-
|
|
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);
|
|
4450
4464
|
},
|
|
4451
4465
|
formatOutput(output, format) {
|
|
4452
4466
|
if (format === "compact") return output.id ?? JSON.stringify(output);
|
|
@@ -4458,7 +4472,8 @@ var foldersMove = {
|
|
|
4458
4472
|
import { z as z57 } from "zod";
|
|
4459
4473
|
var inputSchema55 = z57.object({
|
|
4460
4474
|
folderId: z57.string().uuid().describe("Folder ID"),
|
|
4461
|
-
name: z57.string().min(1).describe("New folder name")
|
|
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")
|
|
4462
4477
|
});
|
|
4463
4478
|
var foldersRename = {
|
|
4464
4479
|
name: "folders.rename",
|
|
@@ -4468,13 +4483,9 @@ var foldersRename = {
|
|
|
4468
4483
|
outputSchema: z57.any(),
|
|
4469
4484
|
annotations: { idempotentHint: true },
|
|
4470
4485
|
async execute(input, ctx) {
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
{
|
|
4475
|
-
pathParams: { id: input.folderId }
|
|
4476
|
-
}
|
|
4477
|
-
);
|
|
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);
|
|
4478
4489
|
},
|
|
4479
4490
|
formatOutput(output, format) {
|
|
4480
4491
|
if (format === "compact") return output.id ?? JSON.stringify(output);
|
|
@@ -5153,17 +5164,39 @@ var orgsResendInvite = {
|
|
|
5153
5164
|
}
|
|
5154
5165
|
};
|
|
5155
5166
|
|
|
5156
|
-
// src/commands/orgs/set-
|
|
5167
|
+
// src/commands/orgs/set-autotidy.ts
|
|
5157
5168
|
import { z as z84 } from "zod";
|
|
5158
5169
|
var inputSchema81 = z84.object({
|
|
5159
|
-
orgId: z84.string().uuid().describe("Organization ID
|
|
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(),
|
|
5179
|
+
annotations: { idempotentHint: true },
|
|
5180
|
+
async execute(input, ctx) {
|
|
5181
|
+
return ctx.client.patch("org_kb_autotidy", { enabled: input.enabled }, { pathParams: { orgId: input.orgId } });
|
|
5182
|
+
},
|
|
5183
|
+
formatOutput(output, format) {
|
|
5184
|
+
if (format === "compact") return JSON.stringify(output);
|
|
5185
|
+
return JSON.stringify(output, null, 2);
|
|
5186
|
+
}
|
|
5187
|
+
};
|
|
5188
|
+
|
|
5189
|
+
// src/commands/orgs/set-default.ts
|
|
5190
|
+
import { z as z85 } from "zod";
|
|
5191
|
+
var inputSchema82 = z85.object({
|
|
5192
|
+
orgId: z85.string().uuid().describe("Organization ID to set as default")
|
|
5160
5193
|
});
|
|
5161
5194
|
var orgsSetDefault = {
|
|
5162
5195
|
name: "orgs.setDefault",
|
|
5163
5196
|
group: "orgs",
|
|
5164
5197
|
description: "Set an organization as the default",
|
|
5165
|
-
inputSchema:
|
|
5166
|
-
outputSchema:
|
|
5198
|
+
inputSchema: inputSchema82,
|
|
5199
|
+
outputSchema: z85.any(),
|
|
5167
5200
|
annotations: { idempotentHint: true },
|
|
5168
5201
|
async execute(input, ctx) {
|
|
5169
5202
|
return ctx.client.put("organization_set_default", void 0, {
|
|
@@ -5177,17 +5210,17 @@ var orgsSetDefault = {
|
|
|
5177
5210
|
};
|
|
5178
5211
|
|
|
5179
5212
|
// src/commands/orgs/set-stripe.ts
|
|
5180
|
-
import { z as
|
|
5181
|
-
var
|
|
5182
|
-
orgId:
|
|
5183
|
-
stripeCustomerId:
|
|
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)")
|
|
5184
5217
|
});
|
|
5185
5218
|
var orgsSetStripe = {
|
|
5186
5219
|
name: "orgs.setStripe",
|
|
5187
5220
|
group: "orgs",
|
|
5188
5221
|
description: "Set the Stripe customer ID for an organization",
|
|
5189
|
-
inputSchema:
|
|
5190
|
-
outputSchema:
|
|
5222
|
+
inputSchema: inputSchema83,
|
|
5223
|
+
outputSchema: z86.any(),
|
|
5191
5224
|
annotations: { idempotentHint: true },
|
|
5192
5225
|
async execute(input, ctx) {
|
|
5193
5226
|
return ctx.client.put(
|
|
@@ -5204,18 +5237,18 @@ var orgsSetStripe = {
|
|
|
5204
5237
|
|
|
5205
5238
|
// src/commands/orgs/update.ts
|
|
5206
5239
|
init_errors();
|
|
5207
|
-
import { z as
|
|
5208
|
-
var
|
|
5209
|
-
orgId:
|
|
5210
|
-
name:
|
|
5211
|
-
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")
|
|
5212
5245
|
});
|
|
5213
5246
|
var orgsUpdate = {
|
|
5214
5247
|
name: "orgs.update",
|
|
5215
5248
|
group: "orgs",
|
|
5216
5249
|
description: "Update an existing organization",
|
|
5217
|
-
inputSchema:
|
|
5218
|
-
outputSchema:
|
|
5250
|
+
inputSchema: inputSchema84,
|
|
5251
|
+
outputSchema: z87.any(),
|
|
5219
5252
|
annotations: { idempotentHint: true },
|
|
5220
5253
|
async execute(input, ctx) {
|
|
5221
5254
|
const { orgId, ...fields } = input;
|
|
@@ -5236,18 +5269,18 @@ var orgsUpdate = {
|
|
|
5236
5269
|
};
|
|
5237
5270
|
|
|
5238
5271
|
// src/commands/orgs/update-role.ts
|
|
5239
|
-
import { z as
|
|
5240
|
-
var
|
|
5241
|
-
orgId:
|
|
5242
|
-
membershipId:
|
|
5243
|
-
role:
|
|
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")
|
|
5244
5277
|
});
|
|
5245
5278
|
var orgsUpdateRole = {
|
|
5246
5279
|
name: "orgs.updateRole",
|
|
5247
5280
|
group: "orgs",
|
|
5248
5281
|
description: "Update an organization member's role",
|
|
5249
|
-
inputSchema:
|
|
5250
|
-
outputSchema:
|
|
5282
|
+
inputSchema: inputSchema85,
|
|
5283
|
+
outputSchema: z88.any(),
|
|
5251
5284
|
annotations: { idempotentHint: true },
|
|
5252
5285
|
async execute(input, ctx) {
|
|
5253
5286
|
return ctx.client.put(
|
|
@@ -5284,23 +5317,24 @@ function registerOrgCommands() {
|
|
|
5284
5317
|
orgsAcceptInvite,
|
|
5285
5318
|
orgsFiles,
|
|
5286
5319
|
orgsListAll,
|
|
5287
|
-
orgsDirectory
|
|
5320
|
+
orgsDirectory,
|
|
5321
|
+
orgsSetAutotidy
|
|
5288
5322
|
];
|
|
5289
5323
|
}
|
|
5290
5324
|
|
|
5291
5325
|
// src/commands/projects/add-member.ts
|
|
5292
|
-
import { z as
|
|
5293
|
-
var
|
|
5294
|
-
projectId:
|
|
5295
|
-
userId:
|
|
5296
|
-
role:
|
|
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)")
|
|
5297
5331
|
});
|
|
5298
5332
|
var projectsAddMember = {
|
|
5299
5333
|
name: "projects.addMember",
|
|
5300
5334
|
group: "projects",
|
|
5301
5335
|
description: "Add a member to a project",
|
|
5302
|
-
inputSchema:
|
|
5303
|
-
outputSchema:
|
|
5336
|
+
inputSchema: inputSchema86,
|
|
5337
|
+
outputSchema: z89.any(),
|
|
5304
5338
|
async execute(input, ctx) {
|
|
5305
5339
|
return ctx.client.post(
|
|
5306
5340
|
"project_members",
|
|
@@ -5315,16 +5349,16 @@ var projectsAddMember = {
|
|
|
5315
5349
|
};
|
|
5316
5350
|
|
|
5317
5351
|
// src/commands/projects/archive.ts
|
|
5318
|
-
import { z as
|
|
5319
|
-
var
|
|
5320
|
-
projectId:
|
|
5352
|
+
import { z as z90 } from "zod";
|
|
5353
|
+
var inputSchema87 = z90.object({
|
|
5354
|
+
projectId: z90.string().uuid().describe("Project ID to archive")
|
|
5321
5355
|
});
|
|
5322
5356
|
var projectsArchive = {
|
|
5323
5357
|
name: "projects.archive",
|
|
5324
5358
|
group: "projects",
|
|
5325
5359
|
description: "Archive (delete) a project",
|
|
5326
|
-
inputSchema:
|
|
5327
|
-
outputSchema:
|
|
5360
|
+
inputSchema: inputSchema87,
|
|
5361
|
+
outputSchema: z90.any(),
|
|
5328
5362
|
annotations: { destructiveHint: true },
|
|
5329
5363
|
async execute(input, ctx) {
|
|
5330
5364
|
await ctx.client.del("project", {
|
|
@@ -5339,18 +5373,18 @@ var projectsArchive = {
|
|
|
5339
5373
|
};
|
|
5340
5374
|
|
|
5341
5375
|
// src/commands/projects/create.ts
|
|
5342
|
-
import { z as
|
|
5343
|
-
var
|
|
5344
|
-
name:
|
|
5345
|
-
description:
|
|
5346
|
-
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")
|
|
5347
5381
|
});
|
|
5348
5382
|
var projectsCreate = {
|
|
5349
5383
|
name: "projects.create",
|
|
5350
5384
|
group: "projects",
|
|
5351
5385
|
description: "Create a new project",
|
|
5352
|
-
inputSchema:
|
|
5353
|
-
outputSchema:
|
|
5386
|
+
inputSchema: inputSchema88,
|
|
5387
|
+
outputSchema: z91.any(),
|
|
5354
5388
|
async execute(input, ctx) {
|
|
5355
5389
|
return ctx.client.post("projects", input);
|
|
5356
5390
|
},
|
|
@@ -5361,16 +5395,16 @@ var projectsCreate = {
|
|
|
5361
5395
|
};
|
|
5362
5396
|
|
|
5363
5397
|
// src/commands/projects/get.ts
|
|
5364
|
-
import { z as
|
|
5365
|
-
var
|
|
5366
|
-
projectId:
|
|
5398
|
+
import { z as z92 } from "zod";
|
|
5399
|
+
var inputSchema89 = z92.object({
|
|
5400
|
+
projectId: z92.string().uuid().describe("Project ID")
|
|
5367
5401
|
});
|
|
5368
5402
|
var projectsGet = {
|
|
5369
5403
|
name: "projects.get",
|
|
5370
5404
|
group: "projects",
|
|
5371
5405
|
description: "Get details of a specific project",
|
|
5372
|
-
inputSchema:
|
|
5373
|
-
outputSchema:
|
|
5406
|
+
inputSchema: inputSchema89,
|
|
5407
|
+
outputSchema: z92.any(),
|
|
5374
5408
|
annotations: { readOnlyHint: true },
|
|
5375
5409
|
async execute(input, ctx) {
|
|
5376
5410
|
return ctx.client.get("project", {
|
|
@@ -5384,16 +5418,16 @@ var projectsGet = {
|
|
|
5384
5418
|
};
|
|
5385
5419
|
|
|
5386
5420
|
// src/commands/projects/leave.ts
|
|
5387
|
-
import { z as
|
|
5388
|
-
var
|
|
5389
|
-
projectId:
|
|
5421
|
+
import { z as z93 } from "zod";
|
|
5422
|
+
var inputSchema90 = z93.object({
|
|
5423
|
+
projectId: z93.string().uuid().describe("Project ID to leave")
|
|
5390
5424
|
});
|
|
5391
5425
|
var projectsLeave = {
|
|
5392
5426
|
name: "projects.leave",
|
|
5393
5427
|
group: "projects",
|
|
5394
5428
|
description: "Leave a project",
|
|
5395
|
-
inputSchema:
|
|
5396
|
-
outputSchema:
|
|
5429
|
+
inputSchema: inputSchema90,
|
|
5430
|
+
outputSchema: z93.any(),
|
|
5397
5431
|
annotations: { destructiveHint: true },
|
|
5398
5432
|
async execute(input, ctx) {
|
|
5399
5433
|
return ctx.client.post("project_leave", void 0, {
|
|
@@ -5407,16 +5441,16 @@ var projectsLeave = {
|
|
|
5407
5441
|
};
|
|
5408
5442
|
|
|
5409
5443
|
// src/commands/projects/list.ts
|
|
5410
|
-
import { z as
|
|
5411
|
-
var
|
|
5444
|
+
import { z as z94 } from "zod";
|
|
5445
|
+
var inputSchema91 = z94.object({
|
|
5412
5446
|
...paginationInput
|
|
5413
5447
|
});
|
|
5414
5448
|
var projectsList = {
|
|
5415
5449
|
name: "projects.list",
|
|
5416
5450
|
group: "projects",
|
|
5417
5451
|
description: "List all projects accessible to the current user",
|
|
5418
|
-
inputSchema:
|
|
5419
|
-
outputSchema:
|
|
5452
|
+
inputSchema: inputSchema91,
|
|
5453
|
+
outputSchema: z94.any(),
|
|
5420
5454
|
annotations: { readOnlyHint: true },
|
|
5421
5455
|
async execute(input, ctx) {
|
|
5422
5456
|
return ctx.client.get("projects", {
|
|
@@ -5430,16 +5464,16 @@ var projectsList = {
|
|
|
5430
5464
|
};
|
|
5431
5465
|
|
|
5432
5466
|
// src/commands/projects/members.ts
|
|
5433
|
-
import { z as
|
|
5434
|
-
var
|
|
5435
|
-
projectId:
|
|
5467
|
+
import { z as z95 } from "zod";
|
|
5468
|
+
var inputSchema92 = z95.object({
|
|
5469
|
+
projectId: z95.string().uuid().describe("Project ID")
|
|
5436
5470
|
});
|
|
5437
5471
|
var projectsMembers = {
|
|
5438
5472
|
name: "projects.members",
|
|
5439
5473
|
group: "projects",
|
|
5440
5474
|
description: "List members of a project",
|
|
5441
|
-
inputSchema:
|
|
5442
|
-
outputSchema:
|
|
5475
|
+
inputSchema: inputSchema92,
|
|
5476
|
+
outputSchema: z95.any(),
|
|
5443
5477
|
annotations: { readOnlyHint: true },
|
|
5444
5478
|
async execute(input, ctx) {
|
|
5445
5479
|
return ctx.client.get("project_members", {
|
|
@@ -5453,17 +5487,17 @@ var projectsMembers = {
|
|
|
5453
5487
|
};
|
|
5454
5488
|
|
|
5455
5489
|
// src/commands/projects/remove-member.ts
|
|
5456
|
-
import { z as
|
|
5457
|
-
var
|
|
5458
|
-
projectId:
|
|
5459
|
-
userId:
|
|
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")
|
|
5460
5494
|
});
|
|
5461
5495
|
var projectsRemoveMember = {
|
|
5462
5496
|
name: "projects.removeMember",
|
|
5463
5497
|
group: "projects",
|
|
5464
5498
|
description: "Remove a member from a project",
|
|
5465
|
-
inputSchema:
|
|
5466
|
-
outputSchema:
|
|
5499
|
+
inputSchema: inputSchema93,
|
|
5500
|
+
outputSchema: z96.any(),
|
|
5467
5501
|
annotations: { destructiveHint: true },
|
|
5468
5502
|
async execute(input, ctx) {
|
|
5469
5503
|
await ctx.client.del("project_member", {
|
|
@@ -5479,19 +5513,19 @@ var projectsRemoveMember = {
|
|
|
5479
5513
|
|
|
5480
5514
|
// src/commands/projects/update.ts
|
|
5481
5515
|
init_errors();
|
|
5482
|
-
import { z as
|
|
5483
|
-
var
|
|
5484
|
-
projectId:
|
|
5485
|
-
name:
|
|
5486
|
-
description:
|
|
5487
|
-
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")
|
|
5488
5522
|
});
|
|
5489
5523
|
var projectsUpdate = {
|
|
5490
5524
|
name: "projects.update",
|
|
5491
5525
|
group: "projects",
|
|
5492
5526
|
description: "Update an existing project",
|
|
5493
|
-
inputSchema:
|
|
5494
|
-
outputSchema:
|
|
5527
|
+
inputSchema: inputSchema94,
|
|
5528
|
+
outputSchema: z97.any(),
|
|
5495
5529
|
annotations: { idempotentHint: true },
|
|
5496
5530
|
async execute(input, ctx) {
|
|
5497
5531
|
const { projectId, ...fields } = input;
|
|
@@ -5512,18 +5546,18 @@ var projectsUpdate = {
|
|
|
5512
5546
|
};
|
|
5513
5547
|
|
|
5514
5548
|
// src/commands/projects/update-role.ts
|
|
5515
|
-
import { z as
|
|
5516
|
-
var
|
|
5517
|
-
projectId:
|
|
5518
|
-
userId:
|
|
5519
|
-
role:
|
|
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")
|
|
5520
5554
|
});
|
|
5521
5555
|
var projectsUpdateRole = {
|
|
5522
5556
|
name: "projects.updateRole",
|
|
5523
5557
|
group: "projects",
|
|
5524
5558
|
description: "Update a project member's role",
|
|
5525
|
-
inputSchema:
|
|
5526
|
-
outputSchema:
|
|
5559
|
+
inputSchema: inputSchema95,
|
|
5560
|
+
outputSchema: z98.any(),
|
|
5527
5561
|
annotations: { idempotentHint: true },
|
|
5528
5562
|
async execute(input, ctx) {
|
|
5529
5563
|
return ctx.client.put(
|
|
@@ -5555,19 +5589,19 @@ function registerProjectCommands() {
|
|
|
5555
5589
|
}
|
|
5556
5590
|
|
|
5557
5591
|
// src/commands/protocols/generate.ts
|
|
5558
|
-
import { z as
|
|
5559
|
-
var
|
|
5560
|
-
description:
|
|
5561
|
-
title:
|
|
5562
|
-
project:
|
|
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")
|
|
5563
5597
|
});
|
|
5564
5598
|
var protocolsGenerate = {
|
|
5565
5599
|
name: "protocols.generate",
|
|
5566
5600
|
group: "protocols",
|
|
5567
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.",
|
|
5568
5602
|
stdinField: "description",
|
|
5569
|
-
inputSchema:
|
|
5570
|
-
outputSchema:
|
|
5603
|
+
inputSchema: inputSchema96,
|
|
5604
|
+
outputSchema: z99.any(),
|
|
5571
5605
|
annotations: { mcpScopes: ["tasks:write", "messages:write"] },
|
|
5572
5606
|
async execute(input, ctx) {
|
|
5573
5607
|
const body = { title: input.title || input.description.slice(0, 100) };
|
|
@@ -5600,10 +5634,77 @@ function registerProtocolCommands() {
|
|
|
5600
5634
|
return [protocolsGenerate];
|
|
5601
5635
|
}
|
|
5602
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
|
+
|
|
5603
5704
|
// src/commands/search/all.ts
|
|
5604
|
-
import { z as
|
|
5605
|
-
var
|
|
5606
|
-
query:
|
|
5705
|
+
import { z as z103 } from "zod";
|
|
5706
|
+
var inputSchema100 = z103.object({
|
|
5707
|
+
query: z103.string().min(1).describe("Search query"),
|
|
5607
5708
|
...paginationInput
|
|
5608
5709
|
});
|
|
5609
5710
|
var searchAll = {
|
|
@@ -5611,8 +5712,8 @@ var searchAll = {
|
|
|
5611
5712
|
group: "search",
|
|
5612
5713
|
description: "Search across all entities",
|
|
5613
5714
|
stdinField: "query",
|
|
5614
|
-
inputSchema:
|
|
5615
|
-
outputSchema:
|
|
5715
|
+
inputSchema: inputSchema100,
|
|
5716
|
+
outputSchema: z103.any(),
|
|
5616
5717
|
annotations: { readOnlyHint: true },
|
|
5617
5718
|
async execute(input, ctx) {
|
|
5618
5719
|
return ctx.client.get("search_all", {
|
|
@@ -5626,10 +5727,10 @@ var searchAll = {
|
|
|
5626
5727
|
};
|
|
5627
5728
|
|
|
5628
5729
|
// src/commands/search/file-content.ts
|
|
5629
|
-
import { z as
|
|
5630
|
-
var
|
|
5631
|
-
query:
|
|
5632
|
-
projectId:
|
|
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"),
|
|
5633
5734
|
...paginationInput
|
|
5634
5735
|
});
|
|
5635
5736
|
var searchFileContent = {
|
|
@@ -5637,8 +5738,8 @@ var searchFileContent = {
|
|
|
5637
5738
|
group: "search",
|
|
5638
5739
|
description: "Search within file contents",
|
|
5639
5740
|
stdinField: "query",
|
|
5640
|
-
inputSchema:
|
|
5641
|
-
outputSchema:
|
|
5741
|
+
inputSchema: inputSchema101,
|
|
5742
|
+
outputSchema: z104.any(),
|
|
5642
5743
|
annotations: { readOnlyHint: true },
|
|
5643
5744
|
async execute(input, ctx) {
|
|
5644
5745
|
const queryParams = {
|
|
@@ -5656,9 +5757,9 @@ var searchFileContent = {
|
|
|
5656
5757
|
};
|
|
5657
5758
|
|
|
5658
5759
|
// src/commands/search/files.ts
|
|
5659
|
-
import { z as
|
|
5660
|
-
var
|
|
5661
|
-
query:
|
|
5760
|
+
import { z as z105 } from "zod";
|
|
5761
|
+
var inputSchema102 = z105.object({
|
|
5762
|
+
query: z105.string().min(1).describe("Search query"),
|
|
5662
5763
|
...paginationInput
|
|
5663
5764
|
});
|
|
5664
5765
|
var searchFiles = {
|
|
@@ -5666,8 +5767,8 @@ var searchFiles = {
|
|
|
5666
5767
|
group: "search",
|
|
5667
5768
|
description: "Search files by query",
|
|
5668
5769
|
stdinField: "query",
|
|
5669
|
-
inputSchema:
|
|
5670
|
-
outputSchema:
|
|
5770
|
+
inputSchema: inputSchema102,
|
|
5771
|
+
outputSchema: z105.any(),
|
|
5671
5772
|
annotations: { readOnlyHint: true },
|
|
5672
5773
|
async execute(input, ctx) {
|
|
5673
5774
|
return ctx.client.get("search_files", {
|
|
@@ -5681,9 +5782,9 @@ var searchFiles = {
|
|
|
5681
5782
|
};
|
|
5682
5783
|
|
|
5683
5784
|
// src/commands/search/tasks.ts
|
|
5684
|
-
import { z as
|
|
5685
|
-
var
|
|
5686
|
-
query:
|
|
5785
|
+
import { z as z106 } from "zod";
|
|
5786
|
+
var inputSchema103 = z106.object({
|
|
5787
|
+
query: z106.string().min(1).describe("Search query"),
|
|
5687
5788
|
...paginationInput
|
|
5688
5789
|
});
|
|
5689
5790
|
var searchTasks = {
|
|
@@ -5691,8 +5792,8 @@ var searchTasks = {
|
|
|
5691
5792
|
group: "search",
|
|
5692
5793
|
description: "Search tasks by query",
|
|
5693
5794
|
stdinField: "query",
|
|
5694
|
-
inputSchema:
|
|
5695
|
-
outputSchema:
|
|
5795
|
+
inputSchema: inputSchema103,
|
|
5796
|
+
outputSchema: z106.any(),
|
|
5696
5797
|
annotations: { readOnlyHint: true },
|
|
5697
5798
|
async execute(input, ctx) {
|
|
5698
5799
|
return ctx.client.get("search_tasks", {
|
|
@@ -5711,16 +5812,16 @@ function registerSearchCommands() {
|
|
|
5711
5812
|
}
|
|
5712
5813
|
|
|
5713
5814
|
// src/commands/tasks/archive.ts
|
|
5714
|
-
import { z as
|
|
5715
|
-
var
|
|
5716
|
-
taskId:
|
|
5815
|
+
import { z as z107 } from "zod";
|
|
5816
|
+
var inputSchema104 = z107.object({
|
|
5817
|
+
taskId: z107.string().uuid().describe("Task ID to archive")
|
|
5717
5818
|
});
|
|
5718
5819
|
var tasksArchive = {
|
|
5719
5820
|
name: "tasks.archive",
|
|
5720
5821
|
group: "tasks",
|
|
5721
5822
|
description: "Archive (delete) a task",
|
|
5722
|
-
inputSchema:
|
|
5723
|
-
outputSchema:
|
|
5823
|
+
inputSchema: inputSchema104,
|
|
5824
|
+
outputSchema: z107.any(),
|
|
5724
5825
|
annotations: { destructiveHint: true },
|
|
5725
5826
|
async execute(input, ctx) {
|
|
5726
5827
|
await ctx.client.del("task", {
|
|
@@ -5734,8 +5835,53 @@ var tasksArchive = {
|
|
|
5734
5835
|
}
|
|
5735
5836
|
};
|
|
5736
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
|
+
|
|
5737
5883
|
// src/commands/tasks/create.ts
|
|
5738
|
-
import { z as
|
|
5884
|
+
import { z as z110 } from "zod";
|
|
5739
5885
|
|
|
5740
5886
|
// src/lib/poll.ts
|
|
5741
5887
|
init_errors();
|
|
@@ -5941,20 +6087,20 @@ ${this.useColor ? pc5.yellow("Stream timed out.") : "Stream timed out."}
|
|
|
5941
6087
|
};
|
|
5942
6088
|
|
|
5943
6089
|
// src/commands/tasks/create.ts
|
|
5944
|
-
var
|
|
5945
|
-
project:
|
|
5946
|
-
title:
|
|
5947
|
-
message:
|
|
5948
|
-
wait:
|
|
5949
|
-
stream:
|
|
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)")
|
|
5950
6096
|
});
|
|
5951
6097
|
var tasksCreate = {
|
|
5952
6098
|
name: "tasks.create",
|
|
5953
6099
|
group: "tasks",
|
|
5954
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.",
|
|
5955
6101
|
stdinField: "message",
|
|
5956
|
-
inputSchema:
|
|
5957
|
-
outputSchema:
|
|
6102
|
+
inputSchema: inputSchema107,
|
|
6103
|
+
outputSchema: z110.any(),
|
|
5958
6104
|
async execute(input, ctx) {
|
|
5959
6105
|
const result = await ctx.client.post("tasks", {
|
|
5960
6106
|
// projectId is optional (ELN-880 Phase C): when omitted the backend creates the
|
|
@@ -6006,16 +6152,16 @@ var tasksCreate = {
|
|
|
6006
6152
|
};
|
|
6007
6153
|
|
|
6008
6154
|
// src/commands/tasks/get.ts
|
|
6009
|
-
import { z as
|
|
6010
|
-
var
|
|
6011
|
-
taskId:
|
|
6155
|
+
import { z as z111 } from "zod";
|
|
6156
|
+
var inputSchema108 = z111.object({
|
|
6157
|
+
taskId: z111.string().uuid().describe("Task ID")
|
|
6012
6158
|
});
|
|
6013
6159
|
var tasksGet = {
|
|
6014
6160
|
name: "tasks.get",
|
|
6015
6161
|
group: "tasks",
|
|
6016
6162
|
description: "Get details of a specific task",
|
|
6017
|
-
inputSchema:
|
|
6018
|
-
outputSchema:
|
|
6163
|
+
inputSchema: inputSchema108,
|
|
6164
|
+
outputSchema: z111.any(),
|
|
6019
6165
|
annotations: { readOnlyHint: true },
|
|
6020
6166
|
async execute(input, ctx) {
|
|
6021
6167
|
return ctx.client.get("task", {
|
|
@@ -6029,28 +6175,26 @@ var tasksGet = {
|
|
|
6029
6175
|
};
|
|
6030
6176
|
|
|
6031
6177
|
// src/commands/tasks/list.ts
|
|
6032
|
-
import { z as
|
|
6033
|
-
var
|
|
6034
|
-
project:
|
|
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"),
|
|
6035
6182
|
...paginationInput
|
|
6036
6183
|
});
|
|
6037
6184
|
var tasksList = {
|
|
6038
6185
|
name: "tasks.list",
|
|
6039
6186
|
group: "tasks",
|
|
6040
|
-
description: "List tasks, optionally filtered by project",
|
|
6041
|
-
inputSchema:
|
|
6042
|
-
outputSchema:
|
|
6187
|
+
description: "List tasks, optionally filtered by project or lifecycle status",
|
|
6188
|
+
inputSchema: inputSchema109,
|
|
6189
|
+
outputSchema: z112.any(),
|
|
6043
6190
|
annotations: { readOnlyHint: true },
|
|
6044
6191
|
async execute(input, ctx) {
|
|
6192
|
+
const queryParams = { page: input.page, pageSize: input.pageSize };
|
|
6193
|
+
if (input.status) queryParams.status = input.status;
|
|
6045
6194
|
if (input.project) {
|
|
6046
|
-
return ctx.client.get("project_tasks", {
|
|
6047
|
-
pathParams: { id: input.project },
|
|
6048
|
-
queryParams: { page: input.page, pageSize: input.pageSize }
|
|
6049
|
-
});
|
|
6195
|
+
return ctx.client.get("project_tasks", { pathParams: { id: input.project }, queryParams });
|
|
6050
6196
|
}
|
|
6051
|
-
return ctx.client.get("tasks", {
|
|
6052
|
-
queryParams: { page: input.page, pageSize: input.pageSize }
|
|
6053
|
-
});
|
|
6197
|
+
return ctx.client.get("tasks", { queryParams });
|
|
6054
6198
|
},
|
|
6055
6199
|
formatOutput(output, format) {
|
|
6056
6200
|
if (format === "compact") return output.id ?? JSON.stringify(output);
|
|
@@ -6059,18 +6203,18 @@ var tasksList = {
|
|
|
6059
6203
|
};
|
|
6060
6204
|
|
|
6061
6205
|
// src/commands/tasks/messages.ts
|
|
6062
|
-
import { z as
|
|
6063
|
-
var
|
|
6064
|
-
taskId:
|
|
6065
|
-
cursor:
|
|
6066
|
-
limit:
|
|
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")
|
|
6067
6211
|
});
|
|
6068
6212
|
var tasksMessages = {
|
|
6069
6213
|
name: "tasks.messages",
|
|
6070
6214
|
group: "tasks",
|
|
6071
6215
|
description: "List messages for a task",
|
|
6072
|
-
inputSchema:
|
|
6073
|
-
outputSchema:
|
|
6216
|
+
inputSchema: inputSchema110,
|
|
6217
|
+
outputSchema: z113.any(),
|
|
6074
6218
|
annotations: { readOnlyHint: true },
|
|
6075
6219
|
async execute(input, ctx) {
|
|
6076
6220
|
const queryParams = { limit: input.limit };
|
|
@@ -6089,23 +6233,23 @@ var tasksMessages = {
|
|
|
6089
6233
|
};
|
|
6090
6234
|
|
|
6091
6235
|
// src/commands/tasks/send.ts
|
|
6092
|
-
import { z as
|
|
6236
|
+
import { z as z114 } from "zod";
|
|
6093
6237
|
init_profiles();
|
|
6094
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;
|
|
6095
|
-
var
|
|
6096
|
-
taskId:
|
|
6097
|
-
message:
|
|
6098
|
-
fileRefs:
|
|
6099
|
-
wait:
|
|
6100
|
-
stream:
|
|
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)")
|
|
6101
6245
|
});
|
|
6102
6246
|
var tasksSend = {
|
|
6103
6247
|
name: "tasks.send",
|
|
6104
6248
|
group: "tasks",
|
|
6105
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.",
|
|
6106
6250
|
stdinField: "message",
|
|
6107
|
-
inputSchema:
|
|
6108
|
-
outputSchema:
|
|
6251
|
+
inputSchema: inputSchema111,
|
|
6252
|
+
outputSchema: z114.any(),
|
|
6109
6253
|
async execute(input, ctx) {
|
|
6110
6254
|
let referencedFileIds;
|
|
6111
6255
|
if (input.fileRefs) {
|
|
@@ -6160,20 +6304,42 @@ var tasksSend = {
|
|
|
6160
6304
|
}
|
|
6161
6305
|
};
|
|
6162
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
|
+
|
|
6163
6329
|
// src/commands/tasks/update.ts
|
|
6164
6330
|
init_errors();
|
|
6165
|
-
import { z as
|
|
6166
|
-
var
|
|
6167
|
-
taskId:
|
|
6168
|
-
title:
|
|
6169
|
-
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")
|
|
6170
6336
|
});
|
|
6171
6337
|
var tasksUpdate = {
|
|
6172
6338
|
name: "tasks.update",
|
|
6173
6339
|
group: "tasks",
|
|
6174
6340
|
description: "Update an existing task",
|
|
6175
|
-
inputSchema:
|
|
6176
|
-
outputSchema:
|
|
6341
|
+
inputSchema: inputSchema113,
|
|
6342
|
+
outputSchema: z116.any(),
|
|
6177
6343
|
annotations: { idempotentHint: true },
|
|
6178
6344
|
async execute(input, ctx) {
|
|
6179
6345
|
const { taskId, ...fields } = input;
|
|
@@ -6195,7 +6361,18 @@ var tasksUpdate = {
|
|
|
6195
6361
|
|
|
6196
6362
|
// src/commands/tasks/index.ts
|
|
6197
6363
|
function registerTaskCommands() {
|
|
6198
|
-
return [
|
|
6364
|
+
return [
|
|
6365
|
+
tasksList,
|
|
6366
|
+
tasksGet,
|
|
6367
|
+
tasksCreate,
|
|
6368
|
+
tasksSend,
|
|
6369
|
+
tasksMessages,
|
|
6370
|
+
tasksUpdate,
|
|
6371
|
+
tasksArchive,
|
|
6372
|
+
tasksUnarchive,
|
|
6373
|
+
tasksAttachments,
|
|
6374
|
+
tasksAttachmentContent
|
|
6375
|
+
];
|
|
6199
6376
|
}
|
|
6200
6377
|
|
|
6201
6378
|
// src/core/registry.ts
|
|
@@ -6236,6 +6413,7 @@ function buildRegistry() {
|
|
|
6236
6413
|
registerFileCommands(),
|
|
6237
6414
|
registerOrgCommands(),
|
|
6238
6415
|
registerFolderCommands(),
|
|
6416
|
+
registerReviewCommands(),
|
|
6239
6417
|
registerSearchCommands(),
|
|
6240
6418
|
registerProtocolCommands(),
|
|
6241
6419
|
registerLibraryCommands(),
|