@mpowr/nexus-mcp 0.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 (119) hide show
  1. package/README.md +59 -0
  2. package/dist/auth.d.ts +39 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +47 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/nexus-api.d.ts +29 -0
  7. package/dist/nexus-api.d.ts.map +1 -0
  8. package/dist/nexus-api.js +76 -0
  9. package/dist/nexus-api.js.map +1 -0
  10. package/dist/server.d.ts +65 -0
  11. package/dist/server.d.ts.map +1 -0
  12. package/dist/server.js +183 -0
  13. package/dist/server.js.map +1 -0
  14. package/dist/tools/add-task-note.d.ts +34 -0
  15. package/dist/tools/add-task-note.d.ts.map +1 -0
  16. package/dist/tools/add-task-note.js +39 -0
  17. package/dist/tools/add-task-note.js.map +1 -0
  18. package/dist/tools/append-session-entry.d.ts +53 -0
  19. package/dist/tools/append-session-entry.d.ts.map +1 -0
  20. package/dist/tools/append-session-entry.js +67 -0
  21. package/dist/tools/append-session-entry.js.map +1 -0
  22. package/dist/tools/create-task.d.ts +52 -0
  23. package/dist/tools/create-task.d.ts.map +1 -0
  24. package/dist/tools/create-task.js +51 -0
  25. package/dist/tools/create-task.js.map +1 -0
  26. package/dist/tools/decision-comments.d.ts +54 -0
  27. package/dist/tools/decision-comments.d.ts.map +1 -0
  28. package/dist/tools/decision-comments.js +80 -0
  29. package/dist/tools/decision-comments.js.map +1 -0
  30. package/dist/tools/get-document.d.ts +47 -0
  31. package/dist/tools/get-document.d.ts.map +1 -0
  32. package/dist/tools/get-document.js +68 -0
  33. package/dist/tools/get-document.js.map +1 -0
  34. package/dist/tools/get-project-memory.d.ts +47 -0
  35. package/dist/tools/get-project-memory.d.ts.map +1 -0
  36. package/dist/tools/get-project-memory.js +53 -0
  37. package/dist/tools/get-project-memory.js.map +1 -0
  38. package/dist/tools/get-related-entities.d.ts +44 -0
  39. package/dist/tools/get-related-entities.d.ts.map +1 -0
  40. package/dist/tools/get-related-entities.js +60 -0
  41. package/dist/tools/get-related-entities.js.map +1 -0
  42. package/dist/tools/governance.d.ts +90 -0
  43. package/dist/tools/governance.d.ts.map +1 -0
  44. package/dist/tools/governance.js +124 -0
  45. package/dist/tools/governance.js.map +1 -0
  46. package/dist/tools/ingest-document.d.ts +40 -0
  47. package/dist/tools/ingest-document.d.ts.map +1 -0
  48. package/dist/tools/ingest-document.js +48 -0
  49. package/dist/tools/ingest-document.js.map +1 -0
  50. package/dist/tools/letter-inbox.d.ts +80 -0
  51. package/dist/tools/letter-inbox.d.ts.map +1 -0
  52. package/dist/tools/letter-inbox.js +118 -0
  53. package/dist/tools/letter-inbox.js.map +1 -0
  54. package/dist/tools/letters.d.ts +91 -0
  55. package/dist/tools/letters.d.ts.map +1 -0
  56. package/dist/tools/letters.js +112 -0
  57. package/dist/tools/letters.js.map +1 -0
  58. package/dist/tools/project-list.d.ts +28 -0
  59. package/dist/tools/project-list.d.ts.map +1 -0
  60. package/dist/tools/project-list.js +43 -0
  61. package/dist/tools/project-list.js.map +1 -0
  62. package/dist/tools/reviews.d.ts +145 -0
  63. package/dist/tools/reviews.d.ts.map +1 -0
  64. package/dist/tools/reviews.js +216 -0
  65. package/dist/tools/reviews.js.map +1 -0
  66. package/dist/tools/search-knowledge.d.ts +48 -0
  67. package/dist/tools/search-knowledge.d.ts.map +1 -0
  68. package/dist/tools/search-knowledge.js +54 -0
  69. package/dist/tools/search-knowledge.js.map +1 -0
  70. package/dist/tools/sessions.d.ts +81 -0
  71. package/dist/tools/sessions.d.ts.map +1 -0
  72. package/dist/tools/sessions.js +120 -0
  73. package/dist/tools/sessions.js.map +1 -0
  74. package/dist/tools/skill-assign.d.ts +77 -0
  75. package/dist/tools/skill-assign.d.ts.map +1 -0
  76. package/dist/tools/skill-assign.js +108 -0
  77. package/dist/tools/skill-assign.js.map +1 -0
  78. package/dist/tools/skills.d.ts +138 -0
  79. package/dist/tools/skills.d.ts.map +1 -0
  80. package/dist/tools/skills.js +192 -0
  81. package/dist/tools/skills.js.map +1 -0
  82. package/dist/tools/update-task-status.d.ts +48 -0
  83. package/dist/tools/update-task-status.d.ts.map +1 -0
  84. package/dist/tools/update-task-status.js +51 -0
  85. package/dist/tools/update-task-status.js.map +1 -0
  86. package/package.json +30 -0
  87. package/src/__tests__/auth.test.ts +162 -0
  88. package/src/__tests__/decision-comments.test.ts +173 -0
  89. package/src/__tests__/helpers.ts +58 -0
  90. package/src/__tests__/layer1-knowledge.test.ts +302 -0
  91. package/src/__tests__/layer2-coordination.test.ts +775 -0
  92. package/src/__tests__/layer3-governance.test.ts +205 -0
  93. package/src/__tests__/project-list-and-skill-assign.test.ts +282 -0
  94. package/src/__tests__/reviews.test.ts +420 -0
  95. package/src/__tests__/server.test.ts +238 -0
  96. package/src/__tests__/setup.ts +15 -0
  97. package/src/auth.ts +81 -0
  98. package/src/nexus-api.ts +110 -0
  99. package/src/server.ts +499 -0
  100. package/src/tools/add-task-note.ts +50 -0
  101. package/src/tools/append-session-entry.ts +83 -0
  102. package/src/tools/create-task.ts +66 -0
  103. package/src/tools/decision-comments.ts +102 -0
  104. package/src/tools/get-document.ts +80 -0
  105. package/src/tools/get-project-memory.ts +65 -0
  106. package/src/tools/get-related-entities.ts +73 -0
  107. package/src/tools/governance.ts +162 -0
  108. package/src/tools/ingest-document.ts +64 -0
  109. package/src/tools/letter-inbox.ts +157 -0
  110. package/src/tools/letters.ts +144 -0
  111. package/src/tools/project-list.ts +52 -0
  112. package/src/tools/reviews.ts +277 -0
  113. package/src/tools/search-knowledge.ts +68 -0
  114. package/src/tools/sessions.ts +154 -0
  115. package/src/tools/skill-assign.ts +142 -0
  116. package/src/tools/skills.ts +252 -0
  117. package/src/tools/update-task-status.ts +64 -0
  118. package/tsconfig.json +20 -0
  119. package/vitest.config.ts +8 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * vl_create + vl_reply -- Layer 2 Coordination
3
+ *
4
+ * Vault letter management for agent coordination.
5
+ * Delegates to POST /api/mcp/letters (actions: vl_create, vl_reply).
6
+ */
7
+ import { z } from 'zod';
8
+ export declare const createLetterSchema: {
9
+ project_id: z.ZodString;
10
+ from_actor: z.ZodString;
11
+ to_actor: z.ZodString;
12
+ subject: z.ZodString;
13
+ body: z.ZodString;
14
+ priority: z.ZodDefault<z.ZodEnum<{
15
+ low: "low";
16
+ normal: "normal";
17
+ high: "high";
18
+ urgent: "urgent";
19
+ }>>;
20
+ blocking: z.ZodDefault<z.ZodBoolean>;
21
+ thread_id: z.ZodOptional<z.ZodString>;
22
+ agent_id: z.ZodOptional<z.ZodString>;
23
+ };
24
+ type CreateLetterArgs = {
25
+ project_id: string;
26
+ from_actor: string;
27
+ to_actor: string;
28
+ subject: string;
29
+ body: string;
30
+ priority?: string;
31
+ blocking?: boolean;
32
+ thread_id?: string;
33
+ user_id: string;
34
+ agent_id?: string;
35
+ };
36
+ export declare function createLetter(args: CreateLetterArgs): Promise<{
37
+ content: {
38
+ type: "text";
39
+ text: string;
40
+ }[];
41
+ isError: boolean;
42
+ } | {
43
+ content: {
44
+ type: "text";
45
+ text: string;
46
+ }[];
47
+ isError?: undefined;
48
+ }>;
49
+ export declare const replyLetterSchema: {
50
+ letter_id: z.ZodString;
51
+ body: z.ZodString;
52
+ message_type: z.ZodDefault<z.ZodEnum<{
53
+ response: "response";
54
+ clarification: "clarification";
55
+ review_note: "review_note";
56
+ follow_up: "follow_up";
57
+ context: "context";
58
+ }>>;
59
+ agent_id: z.ZodOptional<z.ZodString>;
60
+ new_status: z.ZodOptional<z.ZodEnum<{
61
+ in_progress: "in_progress";
62
+ blocked: "blocked";
63
+ acknowledged: "acknowledged";
64
+ answered: "answered";
65
+ needs_review: "needs_review";
66
+ closed: "closed";
67
+ }>>;
68
+ };
69
+ type ReplyLetterArgs = {
70
+ letter_id: string;
71
+ body: string;
72
+ message_type?: string;
73
+ user_id: string;
74
+ agent_id?: string;
75
+ new_status?: string;
76
+ };
77
+ export declare function replyLetter(args: ReplyLetterArgs): Promise<{
78
+ content: {
79
+ type: "text";
80
+ text: string;
81
+ }[];
82
+ isError: boolean;
83
+ } | {
84
+ content: {
85
+ type: "text";
86
+ text: string;
87
+ }[];
88
+ isError?: undefined;
89
+ }>;
90
+ export {};
91
+ //# sourceMappingURL=letters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"letters.d.ts","sourceRoot":"","sources":["../../src/tools/letters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;CAoB9B,CAAA;AAED,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB;;;;;;;;;;;;GA+BxD;AAMD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;CAmB7B,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;;;GA2BtD"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * vl_create + vl_reply -- Layer 2 Coordination
3
+ *
4
+ * Vault letter management for agent coordination.
5
+ * Delegates to POST /api/mcp/letters (actions: vl_create, vl_reply).
6
+ */
7
+ import { z } from 'zod';
8
+ import { nexusPost } from '../nexus-api.js';
9
+ // ---------------------------------------------------------------------------
10
+ // create_letter
11
+ // ---------------------------------------------------------------------------
12
+ export const createLetterSchema = {
13
+ project_id: z.string().uuid().describe('Project UUID'),
14
+ from_actor: z.string().describe('Sender identifier (agent name or user)'),
15
+ to_actor: z.string().describe('Recipient identifier (agent name or user)'),
16
+ subject: z.string().describe('Letter subject'),
17
+ body: z.string().describe('Initial message body'),
18
+ priority: z
19
+ .enum(['low', 'normal', 'high', 'urgent'])
20
+ .default('normal')
21
+ .describe('Letter priority'),
22
+ blocking: z
23
+ .boolean()
24
+ .default(false)
25
+ .describe('Whether this letter blocks the sender'),
26
+ thread_id: z
27
+ .string()
28
+ .uuid()
29
+ .optional()
30
+ .describe('Optional thread UUID to group related letters'),
31
+ agent_id: z.string().optional().describe('Agent identifier if applicable'),
32
+ };
33
+ export async function createLetter(args) {
34
+ const result = await nexusPost('/api/mcp/letters', {
35
+ action: 'vl_create',
36
+ project_id: args.project_id,
37
+ from_actor: args.from_actor,
38
+ to_actor: args.to_actor,
39
+ subject: args.subject,
40
+ body: args.body,
41
+ priority: args.priority ?? 'normal',
42
+ blocking: args.blocking ?? false,
43
+ thread_id: args.thread_id,
44
+ agent_id: args.agent_id,
45
+ });
46
+ if (!result.ok) {
47
+ return {
48
+ content: [
49
+ {
50
+ type: 'text',
51
+ text: JSON.stringify({ error: result.error }, null, 2),
52
+ },
53
+ ],
54
+ isError: true,
55
+ };
56
+ }
57
+ return {
58
+ content: [
59
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
60
+ ],
61
+ };
62
+ }
63
+ // ---------------------------------------------------------------------------
64
+ // reply_letter
65
+ // ---------------------------------------------------------------------------
66
+ export const replyLetterSchema = {
67
+ letter_id: z.string().uuid().describe('Letter UUID to reply to'),
68
+ body: z.string().describe('Reply message body'),
69
+ message_type: z
70
+ .enum(['response', 'clarification', 'review_note', 'follow_up', 'context'])
71
+ .default('response')
72
+ .describe('Type of reply message'),
73
+ agent_id: z.string().optional().describe('Agent identifier if applicable'),
74
+ new_status: z
75
+ .enum([
76
+ 'acknowledged',
77
+ 'in_progress',
78
+ 'answered',
79
+ 'blocked',
80
+ 'needs_review',
81
+ 'closed',
82
+ ])
83
+ .optional()
84
+ .describe('Optionally update the letter status'),
85
+ };
86
+ export async function replyLetter(args) {
87
+ const result = await nexusPost('/api/mcp/letters', {
88
+ action: 'vl_reply',
89
+ letter_id: args.letter_id,
90
+ body: args.body,
91
+ message_type: args.message_type ?? 'response',
92
+ agent_id: args.agent_id,
93
+ new_status: args.new_status,
94
+ });
95
+ if (!result.ok) {
96
+ return {
97
+ content: [
98
+ {
99
+ type: 'text',
100
+ text: JSON.stringify({ error: result.error }, null, 2),
101
+ },
102
+ ],
103
+ isError: true,
104
+ };
105
+ }
106
+ return {
107
+ content: [
108
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
109
+ ],
110
+ };
111
+ }
112
+ //# sourceMappingURL=letters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"letters.js","sourceRoot":"","sources":["../../src/tools/letters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * project_list -- Layer 1 Knowledge Access
3
+ *
4
+ * List accessible projects for the authenticated user/agent.
5
+ * Delegates to GET /api/mcp/projects.
6
+ */
7
+ import { z } from 'zod';
8
+ export declare const projectListSchema: {
9
+ limit: z.ZodOptional<z.ZodNumber>;
10
+ };
11
+ type ProjectListArgs = {
12
+ limit?: number;
13
+ };
14
+ export declare function projectList(args: ProjectListArgs): Promise<{
15
+ content: {
16
+ type: "text";
17
+ text: string;
18
+ }[];
19
+ isError: boolean;
20
+ } | {
21
+ content: {
22
+ type: "text";
23
+ text: string;
24
+ }[];
25
+ isError?: undefined;
26
+ }>;
27
+ export {};
28
+ //# sourceMappingURL=project-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-list.d.ts","sourceRoot":"","sources":["../../src/tools/project-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,iBAAiB;;CAQ7B,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;;;GA2BtD"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * project_list -- Layer 1 Knowledge Access
3
+ *
4
+ * List accessible projects for the authenticated user/agent.
5
+ * Delegates to GET /api/mcp/projects.
6
+ */
7
+ import { z } from 'zod';
8
+ import { nexusGet } from '../nexus-api.js';
9
+ export const projectListSchema = {
10
+ limit: z
11
+ .number()
12
+ .int()
13
+ .min(1)
14
+ .max(100)
15
+ .optional()
16
+ .describe('Maximum number of projects to return'),
17
+ };
18
+ export async function projectList(args) {
19
+ const params = new URLSearchParams();
20
+ if (args.limit !== undefined) {
21
+ params.set('limit', String(args.limit));
22
+ }
23
+ const qs = params.toString();
24
+ const path = `/api/mcp/projects${qs ? `?${qs}` : ''}`;
25
+ const result = await nexusGet(path);
26
+ if (!result.ok) {
27
+ return {
28
+ content: [
29
+ {
30
+ type: 'text',
31
+ text: JSON.stringify({ error: result.error }, null, 2),
32
+ },
33
+ ],
34
+ isError: true,
35
+ };
36
+ }
37
+ return {
38
+ content: [
39
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
40
+ ],
41
+ };
42
+ }
43
+ //# sourceMappingURL=project-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-list.js","sourceRoot":"","sources":["../../src/tools/project-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sCAAsC,CAAC;CACpD,CAAA;AAMD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACrD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IACpC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC5B,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAErD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SACtE;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * rv_list + rv_get + rv_create + rv_decide + rv_comment -- Layer 4 Reviews
3
+ *
4
+ * Review lifecycle management tools for the Nexus platform.
5
+ * Reviews cover skills, agents, and other governed entities.
6
+ * Delegates to POST /api/mcp/reviews.
7
+ */
8
+ import { z } from 'zod';
9
+ export declare const rvListSchema: {
10
+ entity_type: z.ZodOptional<z.ZodEnum<{
11
+ skill: "skill";
12
+ agent: "agent";
13
+ }>>;
14
+ status: z.ZodOptional<z.ZodString>;
15
+ limit: z.ZodOptional<z.ZodNumber>;
16
+ };
17
+ type RvListArgs = {
18
+ entity_type?: string;
19
+ status?: string;
20
+ limit?: number;
21
+ user_id: string;
22
+ };
23
+ export declare function rvList(args: RvListArgs): Promise<{
24
+ content: {
25
+ type: "text";
26
+ text: string;
27
+ }[];
28
+ isError: boolean;
29
+ } | {
30
+ content: {
31
+ type: "text";
32
+ text: string;
33
+ }[];
34
+ isError?: undefined;
35
+ }>;
36
+ export declare const rvGetSchema: {
37
+ review_id: z.ZodOptional<z.ZodString>;
38
+ entity_type: z.ZodOptional<z.ZodString>;
39
+ entity_id: z.ZodOptional<z.ZodString>;
40
+ };
41
+ type RvGetArgs = {
42
+ review_id?: string;
43
+ entity_type?: string;
44
+ entity_id?: string;
45
+ user_id: string;
46
+ };
47
+ export declare function rvGet(args: RvGetArgs): Promise<{
48
+ content: {
49
+ type: "text";
50
+ text: string;
51
+ }[];
52
+ isError: boolean;
53
+ } | {
54
+ content: {
55
+ type: "text";
56
+ text: string;
57
+ }[];
58
+ isError?: undefined;
59
+ }>;
60
+ export declare const rvCreateSchema: {
61
+ entity_type: z.ZodEnum<{
62
+ skill: "skill";
63
+ agent: "agent";
64
+ }>;
65
+ entity_id: z.ZodString;
66
+ };
67
+ type RvCreateArgs = {
68
+ entity_type: string;
69
+ entity_id: string;
70
+ user_id: string;
71
+ };
72
+ export declare function rvCreate(args: RvCreateArgs): Promise<{
73
+ content: {
74
+ type: "text";
75
+ text: string;
76
+ }[];
77
+ isError: boolean;
78
+ } | {
79
+ content: {
80
+ type: "text";
81
+ text: string;
82
+ }[];
83
+ isError?: undefined;
84
+ }>;
85
+ export declare const rvDecideSchema: {
86
+ review_id: z.ZodString;
87
+ transition: z.ZodEnum<{
88
+ accept: "accept";
89
+ submit: "submit";
90
+ reject: "reject";
91
+ request_revision: "request_revision";
92
+ resubmit: "resubmit";
93
+ archive: "archive";
94
+ }>;
95
+ rationale: z.ZodOptional<z.ZodString>;
96
+ };
97
+ type RvDecideArgs = {
98
+ review_id: string;
99
+ transition: string;
100
+ rationale?: string;
101
+ user_id: string;
102
+ };
103
+ export declare function rvDecide(args: RvDecideArgs): Promise<{
104
+ content: {
105
+ type: "text";
106
+ text: string;
107
+ }[];
108
+ isError: boolean;
109
+ } | {
110
+ content: {
111
+ type: "text";
112
+ text: string;
113
+ }[];
114
+ isError?: undefined;
115
+ }>;
116
+ export declare const rvCommentSchema: {
117
+ review_id: z.ZodString;
118
+ body: z.ZodString;
119
+ agent_id: z.ZodOptional<z.ZodString>;
120
+ line_start: z.ZodOptional<z.ZodNumber>;
121
+ line_end: z.ZodOptional<z.ZodNumber>;
122
+ };
123
+ type RvCommentArgs = {
124
+ review_id: string;
125
+ body: string;
126
+ agent_id?: string;
127
+ line_start?: number;
128
+ line_end?: number;
129
+ user_id: string;
130
+ };
131
+ export declare function rvComment(args: RvCommentArgs): Promise<{
132
+ content: {
133
+ type: "text";
134
+ text: string;
135
+ }[];
136
+ isError: boolean;
137
+ } | {
138
+ content: {
139
+ type: "text";
140
+ text: string;
141
+ }[];
142
+ isError?: undefined;
143
+ }>;
144
+ export {};
145
+ //# sourceMappingURL=reviews.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviews.d.ts","sourceRoot":"","sources":["../../src/tools/reviews.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,YAAY;;;;;;;CAgBxB,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU;;;;;;;;;;;;GAyB5C;AAMD,eAAO,MAAM,WAAW;;;;CAevB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,SAAS;;;;;;;;;;;;GAyB1C;AAMD,eAAO,MAAM,cAAc;;;;;;CAQ1B,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY;;;;;;;;;;;;GAwBhD;AAMD,eAAO,MAAM,cAAc;;;;;;;;;;;CAS1B,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY;;;;;;;;;;;;GAyBhD;AAMD,eAAO,MAAM,eAAe;;;;;;CAiB3B,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa;;;;;;;;;;;;GA2BlD"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * rv_list + rv_get + rv_create + rv_decide + rv_comment -- Layer 4 Reviews
3
+ *
4
+ * Review lifecycle management tools for the Nexus platform.
5
+ * Reviews cover skills, agents, and other governed entities.
6
+ * Delegates to POST /api/mcp/reviews.
7
+ */
8
+ import { z } from 'zod';
9
+ import { nexusPost } from '../nexus-api.js';
10
+ // ---------------------------------------------------------------------------
11
+ // rv_list
12
+ // ---------------------------------------------------------------------------
13
+ export const rvListSchema = {
14
+ entity_type: z
15
+ .enum(['skill', 'agent'])
16
+ .optional()
17
+ .describe('Filter by entity type (skill or agent)'),
18
+ status: z
19
+ .string()
20
+ .optional()
21
+ .describe('Filter by review status'),
22
+ limit: z
23
+ .number()
24
+ .int()
25
+ .min(1)
26
+ .max(100)
27
+ .optional()
28
+ .describe('Maximum number of reviews to return'),
29
+ };
30
+ export async function rvList(args) {
31
+ const result = await nexusPost('/api/mcp/reviews', {
32
+ action: 'rv_list',
33
+ entity_type: args.entity_type,
34
+ status: args.status,
35
+ limit: args.limit,
36
+ });
37
+ if (!result.ok) {
38
+ return {
39
+ content: [
40
+ {
41
+ type: 'text',
42
+ text: JSON.stringify({ error: result.error }, null, 2),
43
+ },
44
+ ],
45
+ isError: true,
46
+ };
47
+ }
48
+ return {
49
+ content: [
50
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
51
+ ],
52
+ };
53
+ }
54
+ // ---------------------------------------------------------------------------
55
+ // rv_get
56
+ // ---------------------------------------------------------------------------
57
+ export const rvGetSchema = {
58
+ review_id: z
59
+ .string()
60
+ .uuid()
61
+ .optional()
62
+ .describe('Review UUID (look up by review ID)'),
63
+ entity_type: z
64
+ .string()
65
+ .optional()
66
+ .describe('Entity type (used with entity_id for lookup by entity)'),
67
+ entity_id: z
68
+ .string()
69
+ .uuid()
70
+ .optional()
71
+ .describe('Entity UUID (used with entity_type for lookup by entity)'),
72
+ };
73
+ export async function rvGet(args) {
74
+ const result = await nexusPost('/api/mcp/reviews', {
75
+ action: 'rv_get',
76
+ review_id: args.review_id,
77
+ entity_type: args.entity_type,
78
+ entity_id: args.entity_id,
79
+ });
80
+ if (!result.ok) {
81
+ return {
82
+ content: [
83
+ {
84
+ type: 'text',
85
+ text: JSON.stringify({ error: result.error }, null, 2),
86
+ },
87
+ ],
88
+ isError: true,
89
+ };
90
+ }
91
+ return {
92
+ content: [
93
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
94
+ ],
95
+ };
96
+ }
97
+ // ---------------------------------------------------------------------------
98
+ // rv_create
99
+ // ---------------------------------------------------------------------------
100
+ export const rvCreateSchema = {
101
+ entity_type: z
102
+ .enum(['skill', 'agent'])
103
+ .describe('Type of entity to create a review for'),
104
+ entity_id: z
105
+ .string()
106
+ .uuid()
107
+ .describe('UUID of the entity to review'),
108
+ };
109
+ export async function rvCreate(args) {
110
+ const result = await nexusPost('/api/mcp/reviews', {
111
+ action: 'rv_create',
112
+ entity_type: args.entity_type,
113
+ entity_id: args.entity_id,
114
+ });
115
+ if (!result.ok) {
116
+ return {
117
+ content: [
118
+ {
119
+ type: 'text',
120
+ text: JSON.stringify({ error: result.error }, null, 2),
121
+ },
122
+ ],
123
+ isError: true,
124
+ };
125
+ }
126
+ return {
127
+ content: [
128
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
129
+ ],
130
+ };
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // rv_decide
134
+ // ---------------------------------------------------------------------------
135
+ export const rvDecideSchema = {
136
+ review_id: z.string().uuid().describe('Review UUID'),
137
+ transition: z
138
+ .enum(['submit', 'accept', 'reject', 'request_revision', 'resubmit', 'archive'])
139
+ .describe('State transition to apply'),
140
+ rationale: z
141
+ .string()
142
+ .optional()
143
+ .describe('Optional rationale for the decision'),
144
+ };
145
+ export async function rvDecide(args) {
146
+ const result = await nexusPost('/api/mcp/reviews', {
147
+ action: 'rv_decide',
148
+ review_id: args.review_id,
149
+ transition: args.transition,
150
+ rationale: args.rationale,
151
+ });
152
+ if (!result.ok) {
153
+ return {
154
+ content: [
155
+ {
156
+ type: 'text',
157
+ text: JSON.stringify({ error: result.error }, null, 2),
158
+ },
159
+ ],
160
+ isError: true,
161
+ };
162
+ }
163
+ return {
164
+ content: [
165
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
166
+ ],
167
+ };
168
+ }
169
+ // ---------------------------------------------------------------------------
170
+ // rv_comment
171
+ // ---------------------------------------------------------------------------
172
+ export const rvCommentSchema = {
173
+ review_id: z.string().uuid().describe('Review UUID'),
174
+ body: z.string().describe('Comment body (markdown supported)'),
175
+ agent_id: z
176
+ .string()
177
+ .optional()
178
+ .describe('Agent identifier if comment is posted by an agent'),
179
+ line_start: z
180
+ .number()
181
+ .int()
182
+ .optional()
183
+ .describe('Start line number for inline comments'),
184
+ line_end: z
185
+ .number()
186
+ .int()
187
+ .optional()
188
+ .describe('End line number for inline comments'),
189
+ };
190
+ export async function rvComment(args) {
191
+ const result = await nexusPost('/api/mcp/reviews', {
192
+ action: 'rv_comment',
193
+ review_id: args.review_id,
194
+ body: args.body,
195
+ agent_id: args.agent_id,
196
+ line_start: args.line_start,
197
+ line_end: args.line_end,
198
+ });
199
+ if (!result.ok) {
200
+ return {
201
+ content: [
202
+ {
203
+ type: 'text',
204
+ text: JSON.stringify({ error: result.error }, null, 2),
205
+ },
206
+ ],
207
+ isError: true,
208
+ };
209
+ }
210
+ return {
211
+ content: [
212
+ { type: 'text', text: JSON.stringify(result.data, null, 2) },
213
+ ],
214
+ };
215
+ }
216
+ //# sourceMappingURL=reviews.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../src/tools/reviews.ts"],"names":[],"mappings":"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"}