@nex-ai/nex 0.1.34 → 0.1.35

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 (69) hide show
  1. package/dist/index.js +5 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/mcp/channel.d.ts +28 -0
  4. package/dist/mcp/channel.js +135 -0
  5. package/dist/mcp/channel.js.map +1 -0
  6. package/dist/mcp/client.d.ts +20 -0
  7. package/dist/mcp/client.js +130 -0
  8. package/dist/mcp/client.js.map +1 -0
  9. package/dist/mcp/config.d.ts +14 -0
  10. package/dist/mcp/config.js +33 -0
  11. package/dist/mcp/config.js.map +1 -0
  12. package/dist/mcp/context-files.d.ts +9 -0
  13. package/dist/mcp/context-files.js +90 -0
  14. package/dist/mcp/context-files.js.map +1 -0
  15. package/dist/mcp/file-manifest.d.ts +27 -0
  16. package/dist/mcp/file-manifest.js +64 -0
  17. package/dist/mcp/file-manifest.js.map +1 -0
  18. package/dist/mcp/file-scanner.d.ts +17 -0
  19. package/dist/mcp/file-scanner.js +77 -0
  20. package/dist/mcp/file-scanner.js.map +1 -0
  21. package/dist/mcp/index.d.ts +2 -0
  22. package/dist/mcp/index.js +51 -0
  23. package/dist/mcp/index.js.map +1 -0
  24. package/dist/mcp/rate-limiter.d.ts +14 -0
  25. package/dist/mcp/rate-limiter.js +60 -0
  26. package/dist/mcp/rate-limiter.js.map +1 -0
  27. package/dist/mcp/server.d.ts +6 -0
  28. package/dist/mcp/server.js +42 -0
  29. package/dist/mcp/server.js.map +1 -0
  30. package/dist/mcp/session-store.d.ts +16 -0
  31. package/dist/mcp/session-store.js +70 -0
  32. package/dist/mcp/session-store.js.map +1 -0
  33. package/dist/mcp/tools/context.d.ts +3 -0
  34. package/dist/mcp/tools/context.js +65 -0
  35. package/dist/mcp/tools/context.js.map +1 -0
  36. package/dist/mcp/tools/insights.d.ts +3 -0
  37. package/dist/mcp/tools/insights.js +24 -0
  38. package/dist/mcp/tools/insights.js.map +1 -0
  39. package/dist/mcp/tools/integrations.d.ts +3 -0
  40. package/dist/mcp/tools/integrations.js +27 -0
  41. package/dist/mcp/tools/integrations.js.map +1 -0
  42. package/dist/mcp/tools/lists.d.ts +3 -0
  43. package/dist/mcp/tools/lists.js +101 -0
  44. package/dist/mcp/tools/lists.js.map +1 -0
  45. package/dist/mcp/tools/notes.d.ts +3 -0
  46. package/dist/mcp/tools/notes.js +52 -0
  47. package/dist/mcp/tools/notes.js.map +1 -0
  48. package/dist/mcp/tools/records.d.ts +3 -0
  49. package/dist/mcp/tools/records.js +74 -0
  50. package/dist/mcp/tools/records.js.map +1 -0
  51. package/dist/mcp/tools/register.d.ts +3 -0
  52. package/dist/mcp/tools/register.js +30 -0
  53. package/dist/mcp/tools/register.js.map +1 -0
  54. package/dist/mcp/tools/relationships.d.ts +3 -0
  55. package/dist/mcp/tools/relationships.js +47 -0
  56. package/dist/mcp/tools/relationships.js.map +1 -0
  57. package/dist/mcp/tools/scan.d.ts +3 -0
  58. package/dist/mcp/tools/scan.js +37 -0
  59. package/dist/mcp/tools/scan.js.map +1 -0
  60. package/dist/mcp/tools/schema.d.ts +3 -0
  61. package/dist/mcp/tools/schema.js +108 -0
  62. package/dist/mcp/tools/schema.js.map +1 -0
  63. package/dist/mcp/tools/search.d.ts +3 -0
  64. package/dist/mcp/tools/search.js +8 -0
  65. package/dist/mcp/tools/search.js.map +1 -0
  66. package/dist/mcp/tools/tasks.d.ts +3 -0
  67. package/dist/mcp/tools/tasks.js +88 -0
  68. package/dist/mcp/tools/tasks.js.map +1 -0
  69. package/package.json +6 -3
@@ -0,0 +1,88 @@
1
+ import { z } from "zod";
2
+ export function registerTaskTools(server, client) {
3
+ server.tool("create_task", "Create a new task, optionally linked to records and assigned to users.", {
4
+ title: z.string().min(1).describe("Task title"),
5
+ description: z.string().optional().describe("Task description"),
6
+ priority: z.enum(["low", "medium", "high", "urgent"]).optional().describe("Task priority (default: unspecified)"),
7
+ due_date: z.string().optional().describe("Due date in RFC3339 format"),
8
+ entity_ids: z.array(z.string()).optional().describe("Associated record IDs"),
9
+ assignee_ids: z.array(z.string()).optional().describe("Assigned user IDs"),
10
+ }, { readOnlyHint: false }, async ({ title, description, priority, due_date, entity_ids, assignee_ids }) => {
11
+ const body = { title };
12
+ if (description !== undefined)
13
+ body.description = description;
14
+ if (priority !== undefined)
15
+ body.priority = priority;
16
+ if (due_date !== undefined)
17
+ body.due_date = due_date;
18
+ if (entity_ids)
19
+ body.entity_ids = entity_ids;
20
+ if (assignee_ids)
21
+ body.assignee_ids = assignee_ids;
22
+ const result = await client.post("/v1/tasks", body);
23
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
24
+ });
25
+ server.tool("list_tasks", "List tasks with optional filtering by record, assignee, completion status, or search query.", {
26
+ entity_id: z.string().optional().describe("Filter by associated record ID"),
27
+ assignee_id: z.string().optional().describe("Filter by assignee user ID"),
28
+ search: z.string().optional().describe("Search task titles"),
29
+ is_completed: z.boolean().optional().describe("Filter by completion status"),
30
+ limit: z.number().optional().describe("Max results (1-500, default: 100)"),
31
+ offset: z.number().optional().describe("Pagination offset"),
32
+ }, { readOnlyHint: true }, async ({ entity_id, assignee_id, search, is_completed, limit, offset }) => {
33
+ const params = new URLSearchParams();
34
+ if (entity_id)
35
+ params.set("entity_id", entity_id);
36
+ if (assignee_id)
37
+ params.set("assignee_id", assignee_id);
38
+ if (search)
39
+ params.set("search", search);
40
+ if (is_completed !== undefined)
41
+ params.set("is_completed", String(is_completed));
42
+ if (limit !== undefined)
43
+ params.set("limit", String(limit));
44
+ if (offset !== undefined)
45
+ params.set("offset", String(offset));
46
+ const qs = params.toString();
47
+ const path = `/v1/tasks${qs ? `?${qs}` : ""}`;
48
+ const result = await client.get(path);
49
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
50
+ });
51
+ server.tool("get_task", "Get a single task by ID.", { task_id: z.string().describe("Task ID") }, { readOnlyHint: true }, async ({ task_id }) => {
52
+ const result = await client.get(`/v1/tasks/${encodeURIComponent(task_id)}`);
53
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
54
+ });
55
+ server.tool("update_task", "Update a task's fields. All fields are optional — only provided fields are changed.", {
56
+ task_id: z.string().describe("Task ID to update"),
57
+ title: z.string().optional().describe("New title"),
58
+ description: z.string().optional().describe("New description (empty string clears it)"),
59
+ priority: z.string().optional().describe("New priority (empty string clears it)"),
60
+ due_date: z.string().optional().describe("New due date in RFC3339 format"),
61
+ is_completed: z.boolean().optional().describe("Mark complete/incomplete"),
62
+ entity_ids: z.array(z.string()).optional().describe("Replace associated record IDs"),
63
+ assignee_ids: z.array(z.string()).optional().describe("Replace assignee user IDs"),
64
+ }, { readOnlyHint: false }, async ({ task_id, title, description, priority, due_date, is_completed, entity_ids, assignee_ids }) => {
65
+ const body = {};
66
+ if (title !== undefined)
67
+ body.title = title;
68
+ if (description !== undefined)
69
+ body.description = description;
70
+ if (priority !== undefined)
71
+ body.priority = priority;
72
+ if (due_date !== undefined)
73
+ body.due_date = due_date;
74
+ if (is_completed !== undefined)
75
+ body.is_completed = is_completed;
76
+ if (entity_ids !== undefined)
77
+ body.entity_ids = entity_ids;
78
+ if (assignee_ids !== undefined)
79
+ body.assignee_ids = assignee_ids;
80
+ const result = await client.patch(`/v1/tasks/${encodeURIComponent(task_id)}`, body);
81
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
82
+ });
83
+ server.tool("delete_task", "Archive a task (soft delete). Cannot be undone via API.", { task_id: z.string().describe("Task ID to delete") }, { readOnlyHint: false, destructiveHint: true }, async ({ task_id }) => {
84
+ const result = await client.delete(`/v1/tasks/${encodeURIComponent(task_id)}`);
85
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
86
+ });
87
+ }
88
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/mcp/tools/tasks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@nex-ai/nex",
3
- "version": "0.1.34",
3
+ "version": "0.1.35",
4
4
  "description": "Nex CLI provides organizational context & memory to AI agents",
5
5
  "type": "module",
6
6
  "bin": {
7
- "nex": "dist/index.js"
7
+ "nex": "dist/index.js",
8
+ "nex-mcp": "dist/mcp/index.js"
8
9
  },
9
10
  "files": [
10
11
  "dist",
@@ -43,8 +44,10 @@
43
44
  "license": "MIT",
44
45
  "dependencies": {
45
46
  "@inkjs/ui": "^2.0.0",
47
+ "@modelcontextprotocol/sdk": "^1.12.0",
46
48
  "commander": "^14.0.3",
47
49
  "ink": "^5.2.1",
48
- "react": "^18.3.1"
50
+ "react": "^18.3.1",
51
+ "zod": "^3.25.0"
49
52
  }
50
53
  }