@besales/mcp 0.46.0 → 0.47.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 (182) hide show
  1. package/README.md +96 -55
  2. package/dist/auth/connection-store.d.ts +21 -1
  3. package/dist/auth/connection-store.js +46 -2
  4. package/dist/auth/connection-store.js.map +1 -1
  5. package/dist/auth/oauth-client.d.ts +5 -1
  6. package/dist/auth/oauth-client.js +22 -12
  7. package/dist/auth/oauth-client.js.map +1 -1
  8. package/dist/cli.js +14 -5
  9. package/dist/cli.js.map +1 -1
  10. package/dist/http/api-client.d.ts +16 -1
  11. package/dist/http/api-client.js +50 -2
  12. package/dist/http/api-client.js.map +1 -1
  13. package/dist/instructions/server-instructions.d.ts +4 -13
  14. package/dist/instructions/server-instructions.js +68 -274
  15. package/dist/instructions/server-instructions.js.map +1 -1
  16. package/dist/prompts/registry.d.ts +15 -0
  17. package/dist/prompts/registry.js +83 -0
  18. package/dist/prompts/registry.js.map +1 -0
  19. package/dist/resources/concepts/feedback-sheets.md +7 -4
  20. package/dist/resources/concepts/handoff.md +4 -1
  21. package/dist/resources/concepts/sandbox.md +14 -5
  22. package/dist/resources/concepts/triggers.md +6 -2
  23. package/dist/resources/concepts/workbook-classification.md +26 -21
  24. package/dist/resources/docs/campaigns.md +20 -0
  25. package/dist/resources/docs/follow-up.md +19 -0
  26. package/dist/resources/docs/platforms.md +2 -2
  27. package/dist/resources/docs/routing.md +18 -0
  28. package/dist/resources/docs/task-state.md +30 -0
  29. package/dist/resources/docs/trigger-actions.md +28 -0
  30. package/dist/resources/docs/variables.md +18 -0
  31. package/dist/resources/registry.js +51 -2
  32. package/dist/resources/registry.js.map +1 -1
  33. package/dist/resources/workflows/extract-from-document.md +8 -1
  34. package/dist/resources/workflows/iterate-with-sandbox.md +5 -2
  35. package/dist/resources/workflows/platform-setup-from-scratch.md +90 -2
  36. package/dist/resources/workflows/production-readiness-check.md +22 -18
  37. package/dist/schemas/mcp-tools.json +1058 -99
  38. package/dist/server.d.ts +2 -0
  39. package/dist/server.js +8 -2
  40. package/dist/server.js.map +1 -1
  41. package/dist/tasks/task-state-store.d.ts +68 -0
  42. package/dist/tasks/task-state-store.js +278 -0
  43. package/dist/tasks/task-state-store.js.map +1 -0
  44. package/dist/tools/annotations.d.ts +7 -0
  45. package/dist/tools/annotations.js +16 -0
  46. package/dist/tools/annotations.js.map +1 -0
  47. package/dist/tools/contracts.js +7 -1
  48. package/dist/tools/contracts.js.map +1 -1
  49. package/dist/tools/definitions/agent-design.d.ts +41 -20
  50. package/dist/tools/definitions/agent-design.js +189 -19
  51. package/dist/tools/definitions/agent-design.js.map +1 -1
  52. package/dist/tools/definitions/analytics.d.ts +40 -0
  53. package/dist/tools/definitions/analytics.js +233 -0
  54. package/dist/tools/definitions/analytics.js.map +1 -0
  55. package/dist/tools/definitions/broadcast-analytics.js +12 -0
  56. package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
  57. package/dist/tools/definitions/broadcast-mailing-variants.d.ts +2 -0
  58. package/dist/tools/definitions/broadcast-mailing-variants.js +10 -0
  59. package/dist/tools/definitions/broadcast-mailing-variants.js.map +1 -1
  60. package/dist/tools/definitions/broadcast-scheduler.d.ts +7 -1
  61. package/dist/tools/definitions/broadcast-scheduler.js +71 -4
  62. package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
  63. package/dist/tools/definitions/contacts.d.ts +15 -0
  64. package/dist/tools/definitions/contacts.js +84 -0
  65. package/dist/tools/definitions/contacts.js.map +1 -0
  66. package/dist/tools/definitions/crm-platform.d.ts +2 -0
  67. package/dist/tools/definitions/crm-platform.js +75 -5
  68. package/dist/tools/definitions/crm-platform.js.map +1 -1
  69. package/dist/tools/definitions/datasource.d.ts +1 -0
  70. package/dist/tools/definitions/datasource.js +16 -1
  71. package/dist/tools/definitions/datasource.js.map +1 -1
  72. package/dist/tools/definitions/dialogue-audit.d.ts +2 -2
  73. package/dist/tools/definitions/dialogue-audit.js +54 -16
  74. package/dist/tools/definitions/dialogue-audit.js.map +1 -1
  75. package/dist/tools/definitions/dialogue-export.d.ts +1 -1
  76. package/dist/tools/definitions/dialogue-export.js +12 -0
  77. package/dist/tools/definitions/dialogue-export.js.map +1 -1
  78. package/dist/tools/definitions/external-api-channels.js +39 -12
  79. package/dist/tools/definitions/external-api-channels.js.map +1 -1
  80. package/dist/tools/definitions/follow-up-funnel-test.js +4 -0
  81. package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
  82. package/dist/tools/definitions/follow-up-setup.js +3 -0
  83. package/dist/tools/definitions/follow-up-setup.js.map +1 -1
  84. package/dist/tools/definitions/follow-up.d.ts +1 -1
  85. package/dist/tools/definitions/follow-up.js +4 -0
  86. package/dist/tools/definitions/follow-up.js.map +1 -1
  87. package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +3 -0
  88. package/dist/tools/definitions/getcourse-anchor-refresh.js +29 -2
  89. package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
  90. package/dist/tools/definitions/getcourse-cold-welcome.d.ts +12 -2
  91. package/dist/tools/definitions/getcourse-cold-welcome.js +79 -4
  92. package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
  93. package/dist/tools/definitions/getcourse-wave.js +14 -0
  94. package/dist/tools/definitions/getcourse-wave.js.map +1 -1
  95. package/dist/tools/definitions/help.d.ts +8 -0
  96. package/dist/tools/definitions/help.js +219 -0
  97. package/dist/tools/definitions/help.js.map +1 -0
  98. package/dist/tools/definitions/knowledge.d.ts +27 -5
  99. package/dist/tools/definitions/knowledge.js +200 -33
  100. package/dist/tools/definitions/knowledge.js.map +1 -1
  101. package/dist/tools/definitions/link-tracking.js +9 -0
  102. package/dist/tools/definitions/link-tracking.js.map +1 -1
  103. package/dist/tools/definitions/model-comparison.js +6 -0
  104. package/dist/tools/definitions/model-comparison.js.map +1 -1
  105. package/dist/tools/definitions/operational-overview.d.ts +3 -0
  106. package/dist/tools/definitions/operational-overview.js +23 -0
  107. package/dist/tools/definitions/operational-overview.js.map +1 -0
  108. package/dist/tools/definitions/operator-workflow.d.ts +20 -0
  109. package/dist/tools/definitions/operator-workflow.js +114 -0
  110. package/dist/tools/definitions/operator-workflow.js.map +1 -0
  111. package/dist/tools/definitions/platform-setup.d.ts +25 -3
  112. package/dist/tools/definitions/platform-setup.js +198 -5
  113. package/dist/tools/definitions/platform-setup.js.map +1 -1
  114. package/dist/tools/definitions/scheduled-tasks.js +2 -0
  115. package/dist/tools/definitions/scheduled-tasks.js.map +1 -1
  116. package/dist/tools/definitions/session.js +103 -5
  117. package/dist/tools/definitions/session.js.map +1 -1
  118. package/dist/tools/definitions/shared.d.ts +153 -11
  119. package/dist/tools/definitions/shared.js +59 -9
  120. package/dist/tools/definitions/shared.js.map +1 -1
  121. package/dist/tools/definitions/task-state.d.ts +76 -0
  122. package/dist/tools/definitions/task-state.js +301 -0
  123. package/dist/tools/definitions/task-state.js.map +1 -0
  124. package/dist/tools/definitions/trigger-contact-claims.js +2 -0
  125. package/dist/tools/definitions/trigger-contact-claims.js.map +1 -1
  126. package/dist/tools/definitions.d.ts +265 -31
  127. package/dist/tools/definitions.js +12 -0
  128. package/dist/tools/definitions.js.map +1 -1
  129. package/dist/tools/description-localization.d.ts +2 -0
  130. package/dist/tools/description-localization.js +46 -0
  131. package/dist/tools/description-localization.js.map +1 -0
  132. package/dist/tools/incomplete-list.d.ts +23 -0
  133. package/dist/tools/incomplete-list.js +39 -0
  134. package/dist/tools/incomplete-list.js.map +1 -0
  135. package/dist/tools/inventory.d.ts +10 -0
  136. package/dist/tools/inventory.js +49 -0
  137. package/dist/tools/inventory.js.map +1 -0
  138. package/dist/tools/registry-mapping-cases-core.js +111 -2
  139. package/dist/tools/registry-mapping-cases-core.js.map +1 -1
  140. package/dist/tools/registry-mapping-cases-platform.js +69 -0
  141. package/dist/tools/registry-mapping-cases-platform.js.map +1 -1
  142. package/dist/tools/registry.d.ts +2 -0
  143. package/dist/tools/registry.js +60 -8
  144. package/dist/tools/registry.js.map +1 -1
  145. package/dist/tools/result-envelope.d.ts +46 -0
  146. package/dist/tools/result-envelope.js +184 -0
  147. package/dist/tools/result-envelope.js.map +1 -0
  148. package/dist/tools/result.d.ts +41 -3
  149. package/dist/tools/result.js +229 -27
  150. package/dist/tools/result.js.map +1 -1
  151. package/dist/tools/tool-title.d.ts +2 -0
  152. package/dist/tools/tool-title.js +12 -0
  153. package/dist/tools/tool-title.js.map +1 -0
  154. package/dist/tools/toolsets.d.ts +37 -0
  155. package/dist/tools/toolsets.js +64 -0
  156. package/dist/tools/toolsets.js.map +1 -0
  157. package/dist/tools/verify-with.d.ts +5 -0
  158. package/dist/tools/verify-with.js +36 -0
  159. package/dist/tools/verify-with.js.map +1 -0
  160. package/dist/types/api-contract.gen.d.ts +1421 -80
  161. package/dist/utils/logger.d.ts +11 -0
  162. package/dist/utils/logger.js +64 -8
  163. package/dist/utils/logger.js.map +1 -1
  164. package/docs/agent-usage-guide.full.ru.md +20 -15
  165. package/docs/agent-usage-guide.ru.md +24 -16
  166. package/docs/async-operation-lifecycle.md +46 -0
  167. package/docs/connect.ru.md +120 -0
  168. package/docs/evals/model-behavior-scorecard.md +80 -0
  169. package/docs/failure-semantics.md +56 -0
  170. package/docs/help-navigation.md +48 -0
  171. package/docs/host-compatibility-matrix.md +153 -0
  172. package/docs/host-setup.md +22 -6
  173. package/docs/operation-coverage.md +114 -0
  174. package/docs/pii-policy.md +46 -0
  175. package/docs/response-size-budget.md +150 -0
  176. package/docs/task-state.md +58 -0
  177. package/docs/tool-effects.md +46 -0
  178. package/docs/tool-surface.md +91 -0
  179. package/package.json +6 -2
  180. package/scripts/model-eval-server.js +213 -0
  181. package/scripts/probe-mcp-protocol.js +134 -0
  182. package/scripts/run-model-eval.js +447 -0
package/dist/server.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
3
  import { type CallToolResult, type ListResourcesResult, type ListToolsResult, type ReadResourceResult } from '@modelcontextprotocol/sdk/types.js';
4
+ import { type RegisteredPrompt } from './prompts/registry.js';
4
5
  import { type RegisteredResource } from './resources/registry.js';
5
6
  import { type RegisteredTool } from './tools/registry.js';
6
7
  export interface StartMcpServerOptions {
7
8
  readonly stdio?: boolean;
8
9
  readonly tools?: readonly RegisteredTool[];
9
10
  readonly resources?: readonly RegisteredResource[];
11
+ readonly prompts?: readonly RegisteredPrompt[];
10
12
  }
11
13
  export interface StartedMcpServer {
12
14
  readonly server: Server;
package/dist/server.js CHANGED
@@ -1,14 +1,16 @@
1
1
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
- import { CallToolRequestSchema, ErrorCode, ListResourcesRequestSchema, ListToolsRequestSchema, McpError, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
3
+ import { CallToolRequestSchema, ErrorCode, GetPromptRequestSchema, ListPromptsRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, McpError, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
4
4
  import { SERVER_INSTRUCTIONS } from './instructions/server-instructions.js';
5
5
  import { readPackageVersion } from './package-metadata.js';
6
+ import { getRegisteredPrompt, listRegisteredPrompts, prompts, } from './prompts/registry.js';
6
7
  import { resources } from './resources/registry.js';
7
8
  import { tools } from './tools/registry.js';
8
9
  export function listRegisteredTools(registeredTools = tools) {
9
10
  return {
10
- tools: registeredTools.map(({ name, description, inputSchema, outputSchema, annotations }) => ({
11
+ tools: registeredTools.map(({ name, title, description, inputSchema, outputSchema, annotations }) => ({
11
12
  name,
13
+ title,
12
14
  description,
13
15
  inputSchema,
14
16
  outputSchema,
@@ -48,6 +50,7 @@ export async function readRegisteredResource(uri, registeredResources = resource
48
50
  export function createMcpServer(options = {}) {
49
51
  const registeredTools = options.tools ?? tools;
50
52
  const registeredResources = options.resources ?? resources;
53
+ const registeredPrompts = options.prompts ?? prompts;
51
54
  const server = new Server({
52
55
  name: '@besales/mcp',
53
56
  version: readPackageVersion(),
@@ -56,12 +59,15 @@ export function createMcpServer(options = {}) {
56
59
  capabilities: {
57
60
  tools: {},
58
61
  resources: {},
62
+ prompts: {},
59
63
  },
60
64
  });
61
65
  server.setRequestHandler(ListToolsRequestSchema, async () => listRegisteredTools(registeredTools));
62
66
  server.setRequestHandler(CallToolRequestSchema, async (request) => callRegisteredTool(request.params.name, request.params.arguments ?? {}, registeredTools));
63
67
  server.setRequestHandler(ListResourcesRequestSchema, async () => listRegisteredResources(registeredResources));
64
68
  server.setRequestHandler(ReadResourceRequestSchema, async (request) => readRegisteredResource(request.params.uri, registeredResources));
69
+ server.setRequestHandler(ListPromptsRequestSchema, async () => listRegisteredPrompts(registeredPrompts));
70
+ server.setRequestHandler(GetPromptRequestSchema, async (request) => getRegisteredPrompt(request.params.name, request.params.arguments ?? {}, registeredPrompts));
65
71
  return server;
66
72
  }
67
73
  export async function startMcpServer(options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ export declare const TASK_STATUSES: readonly ["ACTIVE", "COMPLETED", "CANCELLED", "EXPIRED"];
2
+ export type TaskStatus = (typeof TASK_STATUSES)[number];
3
+ export interface TaskObjectRef {
4
+ readonly type: string;
5
+ readonly id: string;
6
+ readonly label?: string;
7
+ }
8
+ export interface TaskCheckpoint {
9
+ readonly key: string;
10
+ readonly label: string;
11
+ readonly status: 'PENDING' | 'COMPLETED' | 'BLOCKED';
12
+ readonly evidence?: string;
13
+ }
14
+ export interface TaskPendingOperation {
15
+ readonly operation: string;
16
+ readonly objectRef?: TaskObjectRef;
17
+ readonly idempotencyKey?: string;
18
+ readonly verifyWith?: string;
19
+ readonly status: 'PLANNED' | 'AWAITING_USER' | 'OUTCOME_UNKNOWN';
20
+ }
21
+ export interface TaskPayload {
22
+ readonly goal: string;
23
+ readonly context?: string;
24
+ readonly constraints: readonly string[];
25
+ readonly objectRefs: readonly TaskObjectRef[];
26
+ readonly checkpoints: readonly TaskCheckpoint[];
27
+ readonly pendingOperations: readonly TaskPendingOperation[];
28
+ readonly expectedUserAction?: string | null;
29
+ }
30
+ export interface StoredTask extends TaskPayload {
31
+ readonly taskId: string;
32
+ readonly workspaceId: string;
33
+ readonly owner: 'local_os_account';
34
+ readonly status: Exclude<TaskStatus, 'EXPIRED'>;
35
+ readonly version: number;
36
+ readonly createdAt: string;
37
+ readonly updatedAt: string;
38
+ readonly expiresAt: string;
39
+ }
40
+ export interface TaskView extends Omit<StoredTask, 'status'> {
41
+ readonly status: TaskStatus;
42
+ }
43
+ export interface TaskStateStoreOptions {
44
+ readonly filePath?: string;
45
+ readonly now?: () => Date;
46
+ }
47
+ export declare class TaskVersionConflictError extends Error {
48
+ constructor(expected: number, actual: number);
49
+ }
50
+ export declare class TaskStateStore {
51
+ private readonly filePath;
52
+ private readonly lockPath;
53
+ private readonly now;
54
+ constructor(options?: TaskStateStoreOptions);
55
+ create(workspaceId: string, payload: TaskPayload, retentionDays?: number): Promise<TaskView>;
56
+ list(workspaceId: string, status?: TaskStatus): Promise<readonly TaskView[]>;
57
+ get(workspaceId: string, taskId: string): Promise<TaskView>;
58
+ update(workspaceId: string, taskId: string, expectedVersion: number, patch: Partial<TaskPayload>): Promise<TaskView>;
59
+ close(workspaceId: string, taskId: string, expectedVersion: number, status: 'COMPLETED' | 'CANCELLED'): Promise<TaskView>;
60
+ delete(workspaceId: string, taskId: string, expectedVersion: number): Promise<void>;
61
+ private assertMutable;
62
+ private requireIndex;
63
+ private view;
64
+ private readDocument;
65
+ private writeDocument;
66
+ private withLock;
67
+ private isStaleLock;
68
+ }
@@ -0,0 +1,278 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdir, open, readFile, rename, rm, stat } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { dirname, join } from 'node:path';
5
+ const TASK_DOCUMENT_SCHEMA_VERSION = 1;
6
+ const DEFAULT_RETENTION_DAYS = 30;
7
+ const MAX_RETENTION_DAYS = 180;
8
+ const LOCK_RETRY_MS = 25;
9
+ const LOCK_ATTEMPTS = 80;
10
+ const STALE_LOCK_MS = 10_000;
11
+ export const TASK_STATUSES = ['ACTIVE', 'COMPLETED', 'CANCELLED', 'EXPIRED'];
12
+ export class TaskVersionConflictError extends Error {
13
+ constructor(expected, actual) {
14
+ super(`TASK_VERSION_CONFLICT: expected version ${expected}, actual version ${actual}. ` +
15
+ 'Read the task again, reconcile the fresh state, then retry with its version.');
16
+ this.name = 'TaskVersionConflictError';
17
+ }
18
+ }
19
+ export class TaskStateStore {
20
+ filePath;
21
+ lockPath;
22
+ now;
23
+ constructor(options = {}) {
24
+ this.filePath = options.filePath ?? join(homedir(), '.besales-mcp', 'tasks-v1.json');
25
+ this.lockPath = `${this.filePath}.lock`;
26
+ this.now = options.now ?? (() => new Date());
27
+ }
28
+ async create(workspaceId, payload, retentionDays = DEFAULT_RETENTION_DAYS) {
29
+ if (retentionDays < 1 || retentionDays > MAX_RETENTION_DAYS) {
30
+ throw new Error(`retention_days must be between 1 and ${MAX_RETENTION_DAYS}.`);
31
+ }
32
+ return this.withLock(async () => {
33
+ const document = await this.readDocument();
34
+ const now = this.now();
35
+ const task = {
36
+ taskId: randomUUID(),
37
+ workspaceId,
38
+ owner: 'local_os_account',
39
+ status: 'ACTIVE',
40
+ version: 1,
41
+ createdAt: now.toISOString(),
42
+ updatedAt: now.toISOString(),
43
+ expiresAt: new Date(now.getTime() + retentionDays * 24 * 60 * 60 * 1000).toISOString(),
44
+ ...payload,
45
+ };
46
+ await this.writeDocument({ ...document, tasks: [...document.tasks, task] });
47
+ return this.view(task);
48
+ });
49
+ }
50
+ async list(workspaceId, status) {
51
+ const document = await this.readDocument();
52
+ return document.tasks
53
+ .filter((task) => task.workspaceId === workspaceId)
54
+ .map((task) => this.view(task))
55
+ .filter((task) => status === undefined || task.status === status)
56
+ .sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
57
+ }
58
+ async get(workspaceId, taskId) {
59
+ const task = (await this.readDocument()).tasks.find((candidate) => candidate.workspaceId === workspaceId && candidate.taskId === taskId);
60
+ if (!task)
61
+ throw new Error(`Task ${taskId} was not found in the selected workspace.`);
62
+ return this.view(task);
63
+ }
64
+ async update(workspaceId, taskId, expectedVersion, patch) {
65
+ return this.withLock(async () => {
66
+ const document = await this.readDocument();
67
+ const index = this.requireIndex(document, workspaceId, taskId);
68
+ const current = document.tasks[index];
69
+ this.assertMutable(current, expectedVersion);
70
+ const updated = {
71
+ ...current,
72
+ ...patch,
73
+ version: current.version + 1,
74
+ updatedAt: this.now().toISOString(),
75
+ };
76
+ const tasks = [...document.tasks];
77
+ tasks[index] = updated;
78
+ await this.writeDocument({ ...document, tasks });
79
+ return this.view(updated);
80
+ });
81
+ }
82
+ async close(workspaceId, taskId, expectedVersion, status) {
83
+ return this.withLock(async () => {
84
+ const document = await this.readDocument();
85
+ const index = this.requireIndex(document, workspaceId, taskId);
86
+ const current = document.tasks[index];
87
+ this.assertMutable(current, expectedVersion);
88
+ const updated = {
89
+ ...current,
90
+ status,
91
+ version: current.version + 1,
92
+ updatedAt: this.now().toISOString(),
93
+ };
94
+ const tasks = [...document.tasks];
95
+ tasks[index] = updated;
96
+ await this.writeDocument({ ...document, tasks });
97
+ return this.view(updated);
98
+ });
99
+ }
100
+ async delete(workspaceId, taskId, expectedVersion) {
101
+ return this.withLock(async () => {
102
+ const document = await this.readDocument();
103
+ const index = this.requireIndex(document, workspaceId, taskId);
104
+ const current = document.tasks[index];
105
+ if (current.version !== expectedVersion) {
106
+ throw new TaskVersionConflictError(expectedVersion, current.version);
107
+ }
108
+ await this.writeDocument({
109
+ ...document,
110
+ tasks: document.tasks.filter((_, taskIndex) => taskIndex !== index),
111
+ });
112
+ });
113
+ }
114
+ assertMutable(task, expectedVersion) {
115
+ if (task.version !== expectedVersion) {
116
+ throw new TaskVersionConflictError(expectedVersion, task.version);
117
+ }
118
+ const status = this.view(task).status;
119
+ if (status !== 'ACTIVE') {
120
+ throw new Error(`Task ${task.taskId} is ${status} and cannot be changed or resumed.`);
121
+ }
122
+ }
123
+ requireIndex(document, workspaceId, taskId) {
124
+ const index = document.tasks.findIndex((task) => task.workspaceId === workspaceId && task.taskId === taskId);
125
+ if (index < 0)
126
+ throw new Error(`Task ${taskId} was not found in the selected workspace.`);
127
+ return index;
128
+ }
129
+ view(task) {
130
+ return {
131
+ ...task,
132
+ status: Date.parse(task.expiresAt) <= this.now().getTime() ? 'EXPIRED' : task.status,
133
+ };
134
+ }
135
+ async readDocument() {
136
+ let raw;
137
+ try {
138
+ raw = await readFile(this.filePath, 'utf8');
139
+ }
140
+ catch (error) {
141
+ if (isNodeError(error, 'ENOENT')) {
142
+ return { schemaVersion: TASK_DOCUMENT_SCHEMA_VERSION, tasks: [] };
143
+ }
144
+ throw error;
145
+ }
146
+ const parsed = JSON.parse(raw);
147
+ if (!isTaskDocument(parsed)) {
148
+ throw new Error(`Task state at ${this.filePath} is invalid. It was left untouched; restore or remove it explicitly.`);
149
+ }
150
+ return parsed;
151
+ }
152
+ async writeDocument(document) {
153
+ await mkdir(dirname(this.filePath), { recursive: true, mode: 0o700 });
154
+ const temporaryPath = `${this.filePath}.${process.pid}.${randomUUID()}.tmp`;
155
+ try {
156
+ const handle = await open(temporaryPath, 'wx', 0o600);
157
+ try {
158
+ await handle.writeFile(`${JSON.stringify(document, null, 2)}\n`, 'utf8');
159
+ await handle.sync();
160
+ }
161
+ finally {
162
+ await handle.close();
163
+ }
164
+ await rename(temporaryPath, this.filePath);
165
+ }
166
+ catch (error) {
167
+ await rm(temporaryPath, { force: true });
168
+ throw error;
169
+ }
170
+ }
171
+ async withLock(operation) {
172
+ await mkdir(dirname(this.filePath), { recursive: true, mode: 0o700 });
173
+ for (let attempt = 0; attempt < LOCK_ATTEMPTS; attempt += 1) {
174
+ try {
175
+ await mkdir(this.lockPath, { mode: 0o700 });
176
+ try {
177
+ return await operation();
178
+ }
179
+ finally {
180
+ await rm(this.lockPath, { recursive: true, force: true });
181
+ }
182
+ }
183
+ catch (error) {
184
+ if (!isNodeError(error, 'EEXIST'))
185
+ throw error;
186
+ if (await this.isStaleLock()) {
187
+ await rm(this.lockPath, { recursive: true, force: true });
188
+ continue;
189
+ }
190
+ await new Promise((resolve) => setTimeout(resolve, LOCK_RETRY_MS));
191
+ }
192
+ }
193
+ throw new Error('Task state is busy. Retry the read or update after the other MCP session finishes.');
194
+ }
195
+ async isStaleLock() {
196
+ try {
197
+ const lock = await stat(this.lockPath);
198
+ return this.now().getTime() - lock.mtimeMs > STALE_LOCK_MS;
199
+ }
200
+ catch (error) {
201
+ if (isNodeError(error, 'ENOENT'))
202
+ return false;
203
+ throw error;
204
+ }
205
+ }
206
+ }
207
+ function isTaskDocument(value) {
208
+ if (!value || typeof value !== 'object')
209
+ return false;
210
+ const document = value;
211
+ return (document.schemaVersion === TASK_DOCUMENT_SCHEMA_VERSION &&
212
+ Array.isArray(document.tasks) &&
213
+ document.tasks.every(isStoredTask));
214
+ }
215
+ function isStoredTask(value) {
216
+ if (!value || typeof value !== 'object')
217
+ return false;
218
+ const task = value;
219
+ return (typeof task.taskId === 'string' &&
220
+ typeof task.workspaceId === 'string' &&
221
+ task.owner === 'local_os_account' &&
222
+ ['ACTIVE', 'COMPLETED', 'CANCELLED'].includes(String(task.status)) &&
223
+ Number.isInteger(task.version) &&
224
+ Number(task.version) >= 1 &&
225
+ isNonEmptyString(task.goal) &&
226
+ (task.context === undefined || isNonEmptyString(task.context)) &&
227
+ isIsoDate(task.createdAt) &&
228
+ isIsoDate(task.updatedAt) &&
229
+ isIsoDate(task.expiresAt) &&
230
+ Array.isArray(task.constraints) &&
231
+ task.constraints.every(isNonEmptyString) &&
232
+ Array.isArray(task.objectRefs) &&
233
+ task.objectRefs.every(isTaskObjectRef) &&
234
+ Array.isArray(task.checkpoints) &&
235
+ task.checkpoints.every(isTaskCheckpoint) &&
236
+ Array.isArray(task.pendingOperations) &&
237
+ task.pendingOperations.every(isTaskPendingOperation) &&
238
+ (task.expectedUserAction === undefined ||
239
+ task.expectedUserAction === null ||
240
+ isNonEmptyString(task.expectedUserAction)));
241
+ }
242
+ function isTaskObjectRef(value) {
243
+ if (!value || typeof value !== 'object')
244
+ return false;
245
+ const ref = value;
246
+ return (isNonEmptyString(ref.type) &&
247
+ isNonEmptyString(ref.id) &&
248
+ (ref.label === undefined || isNonEmptyString(ref.label)));
249
+ }
250
+ function isTaskCheckpoint(value) {
251
+ if (!value || typeof value !== 'object')
252
+ return false;
253
+ const checkpoint = value;
254
+ return (isNonEmptyString(checkpoint.key) &&
255
+ isNonEmptyString(checkpoint.label) &&
256
+ ['PENDING', 'COMPLETED', 'BLOCKED'].includes(String(checkpoint.status)) &&
257
+ (checkpoint.evidence === undefined || isNonEmptyString(checkpoint.evidence)));
258
+ }
259
+ function isTaskPendingOperation(value) {
260
+ if (!value || typeof value !== 'object')
261
+ return false;
262
+ const operation = value;
263
+ return (isNonEmptyString(operation.operation) &&
264
+ (operation.objectRef === undefined || isTaskObjectRef(operation.objectRef)) &&
265
+ (operation.idempotencyKey === undefined || isNonEmptyString(operation.idempotencyKey)) &&
266
+ (operation.verifyWith === undefined || isNonEmptyString(operation.verifyWith)) &&
267
+ ['PLANNED', 'AWAITING_USER', 'OUTCOME_UNKNOWN'].includes(String(operation.status)));
268
+ }
269
+ function isNonEmptyString(value) {
270
+ return typeof value === 'string' && value.trim().length > 0;
271
+ }
272
+ function isIsoDate(value) {
273
+ return typeof value === 'string' && Number.isFinite(Date.parse(value));
274
+ }
275
+ function isNodeError(error, code) {
276
+ return error instanceof Error && 'code' in error && error.code === code;
277
+ }
278
+ //# sourceMappingURL=task-state-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-state-store.js","sourceRoot":"","sources":["../../src/tasks/task-state-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { ToolDefinition } from './definitions/shared.js';
3
+ /**
4
+ * Умолчания — ХУДШИЙ случай, а не «неизвестно»: ошибочное «только чтение» опаснее пропущенной
5
+ * аннотации, потому что снимает подтверждение там, где оно нужно.
6
+ */
7
+ export declare function toolAnnotations(definition: ToolDefinition<unknown>): ToolAnnotations;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Умолчания — ХУДШИЙ случай, а не «неизвестно»: ошибочное «только чтение» опаснее пропущенной
3
+ * аннотации, потому что снимает подтверждение там, где оно нужно.
4
+ */
5
+ export function toolAnnotations(definition) {
6
+ const readOnly = definition.sideEffect === 'none';
7
+ return {
8
+ readOnlyHint: readOnly,
9
+ // У читающего разрушительность бессмысленна; у пишущего она подразумевается истинной
10
+ // спецификацией MCP, и снять её можно только доказанной обратимостью.
11
+ destructiveHint: readOnly ? false : definition.reversible !== true,
12
+ idempotentHint: definition.idempotent === true,
13
+ openWorldHint: definition.closedWorld !== true,
14
+ };
15
+ }
16
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/tools/annotations.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmC;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,KAAK,MAAM,CAAC;IAElD,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,qFAAqF;QACrF,sEAAsE;QACtE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,KAAK,IAAI;QAClE,cAAc,EAAE,UAAU,CAAC,UAAU,KAAK,IAAI;QAC9C,aAAa,EAAE,UAAU,CAAC,WAAW,KAAK,IAAI;KAC/C,CAAC;AACJ,CAAC"}
@@ -1,11 +1,17 @@
1
1
  import { readFileSync } from 'node:fs';
2
+ import { localizeToolContract } from './description-localization.js';
2
3
  let cachedContract = null;
3
4
  export function getMcpToolsContract() {
4
5
  if (cachedContract) {
5
6
  return cachedContract;
6
7
  }
7
8
  const contractUrl = new URL('../schemas/mcp-tools.json', import.meta.url);
8
- cachedContract = JSON.parse(readFileSync(contractUrl, 'utf-8'));
9
+ const parsed = JSON.parse(readFileSync(contractUrl, 'utf-8'));
10
+ cachedContract = {
11
+ ...parsed,
12
+ tools: parsed.tools.map(localizeToolContract),
13
+ deferred_phase4_setup_tools: parsed.deferred_phase4_setup_tools?.map(localizeToolContract),
14
+ };
9
15
  return cachedContract;
10
16
  }
11
17
  export function getActiveToolContracts() {
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/tools/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuBvC,IAAI,cAAc,GAA4B,IAAI,CAAC;AAEnD,MAAM,UAAU,mBAAmB;IACjC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAqB,CAAC;IACpF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,mBAAmB,EAAE,CAAC,KAAK,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,mBAAmB,EAAE,CAAC,SAAS,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAE7E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/tools/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAqBrE,IAAI,cAAc,GAA4B,IAAI,CAAC;AAEnD,MAAM,UAAU,mBAAmB;IACjC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAqB,CAAC;IAClF,cAAc,GAAG;QACf,GAAG,MAAM;QACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC7C,2BAA2B,EAAE,MAAM,CAAC,2BAA2B,EAAE,GAAG,CAAC,oBAAoB,CAAC;KAC3F,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,mBAAmB,EAAE,CAAC,KAAK,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,mBAAmB,EAAE,CAAC,SAAS,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAE7E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -28,6 +28,9 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
28
28
  operation_id: string;
29
29
  icp_profile_id: string;
30
30
  segments: {
31
+ language_style: {
32
+ [x: string]: unknown;
33
+ } | undefined;
31
34
  name: string;
32
35
  id?: string | undefined;
33
36
  description?: string | undefined;
@@ -36,22 +39,19 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
36
39
  } | undefined;
37
40
  pains?: unknown[] | undefined;
38
41
  motivations?: unknown[] | undefined;
39
- language_style?: {
40
- [x: string]: unknown;
41
- } | undefined;
42
42
  }[];
43
43
  personas: {
44
+ segment_id: string | undefined;
45
+ pain_points: unknown[] | undefined;
46
+ messaging_hints: {
47
+ [x: string]: unknown;
48
+ } | undefined;
44
49
  name: string;
45
- segment_id: string;
46
50
  description?: string | undefined;
47
- pain_points?: unknown[] | undefined;
48
51
  goals?: unknown[] | undefined;
49
52
  objections?: {
50
53
  [x: string]: unknown;
51
54
  } | undefined;
52
- messaging_hints?: {
53
- [x: string]: unknown;
54
- } | undefined;
55
55
  }[];
56
56
  workspace_id?: string | undefined;
57
57
  }> | import("./shared.js").ToolDefinition<{
@@ -75,6 +75,7 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
75
75
  message_direction?: "INBOUND" | "OUTBOUND" | undefined;
76
76
  } | undefined;
77
77
  }> | import("./shared.js").ToolDefinition<{
78
+ final_content: string | undefined;
78
79
  agent_id: string;
79
80
  operation_id: string;
80
81
  stages: {
@@ -83,7 +84,6 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
83
84
  [x: string]: unknown;
84
85
  };
85
86
  }[];
86
- final_content: string;
87
87
  metadata?: {
88
88
  total_tokens?: number | undefined;
89
89
  models?: Record<string, string> | undefined;
@@ -93,6 +93,9 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
93
93
  version_id: string;
94
94
  modes: ("grammar" | "industry" | "structure" | "completeness" | "contradictions")[];
95
95
  }> | import("./shared.js").ToolDefinition<{
96
+ aggregated_issues: {
97
+ [x: string]: unknown;
98
+ }[] | undefined;
96
99
  agent_id: string;
97
100
  operation_id: string;
98
101
  stages: {
@@ -101,15 +104,13 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
101
104
  [x: string]: unknown;
102
105
  };
103
106
  }[];
104
- aggregated_issues: {
105
- [x: string]: unknown;
106
- }[];
107
107
  }> | import("./shared.js").ToolDefinition<{
108
108
  agent_id: string;
109
109
  draft_version_id: string;
110
110
  changelog_note?: string | undefined;
111
111
  }> | import("./shared.js").ToolDefinition<{
112
112
  agent_id: string;
113
+ candidate_prompt?: string | undefined;
113
114
  scenario_ids?: string[] | undefined;
114
115
  options?: {
115
116
  mode: "single_agent" | "workflow";
@@ -123,6 +124,19 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
123
124
  max_turns?: number | undefined;
124
125
  } | undefined;
125
126
  } | undefined;
127
+ }> | import("./shared.js").ToolDefinition<{
128
+ agent_id: string;
129
+ limit?: number | undefined;
130
+ cursor?: string | undefined;
131
+ }> | import("./shared.js").ToolDefinition<{
132
+ run_id: string;
133
+ reviewed_issues: {
134
+ scenario_id?: string | undefined;
135
+ turn_index?: number | undefined;
136
+ category?: "other" | "hallucination" | "wrong_action" | "bad_tone" | "missed_context" | undefined;
137
+ description?: string | undefined;
138
+ }[];
139
+ general_comments?: string | undefined;
126
140
  }> | import("./shared.js").ToolDefinition<{
127
141
  agent_id: string;
128
142
  run_id: string;
@@ -131,12 +145,17 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
131
145
  run_id: string;
132
146
  operation_id: string;
133
147
  findings: {
134
- category: "other" | "hallucination" | "wrong_action" | "bad_tone" | "wrong_routing" | "missed_trigger" | "wrong_pipeline_transition" | "rag_miss";
135
- severity: "low" | "medium" | "critical";
136
- message: string;
148
+ category: "other" | "hallucination" | "wrong_action" | "bad_tone" | "missed_context" | "wrong_routing" | "rag_miss";
149
+ severity: "critical" | "low" | "medium";
137
150
  scenario_id?: string | undefined;
151
+ scenarioId?: string | undefined;
152
+ description?: string | undefined;
153
+ message?: string | undefined;
154
+ evidence?: string | undefined;
155
+ recommendation?: string | undefined;
138
156
  suggestion?: string | undefined;
139
157
  turn_index?: number | undefined;
158
+ turnIndex?: number | undefined;
140
159
  }[];
141
160
  }> | import("./shared.js").ToolDefinition<{
142
161
  agent_id: string;
@@ -146,11 +165,13 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
146
165
  operation_id: string;
147
166
  findings: {
148
167
  category: "other" | "hallucination" | "wrong_action" | "bad_tone" | "missed_context" | "contradiction" | "off_topic";
149
- severity: "low" | "medium" | "critical";
168
+ severity: "critical" | "low" | "medium";
150
169
  message: string;
151
170
  dialogue_id?: string | undefined;
171
+ dialogueId?: string | undefined;
152
172
  suggestion?: string | undefined;
153
173
  reference_message_index?: number | undefined;
174
+ referenceMessageIndex?: number | undefined;
154
175
  }[];
155
176
  simulation_id?: string | undefined;
156
177
  }> | import("./shared.js").ToolDefinition<{
@@ -160,14 +181,14 @@ export declare const agentDesignTools: (import("./shared.js").ToolDefinition<{
160
181
  company_context?: string | undefined;
161
182
  icp_profile_id?: string | undefined;
162
183
  }> | import("./shared.js").ToolDefinition<{
163
- agent_id: string;
164
- operation_id: string;
184
+ knowledge_space_id: string | undefined;
165
185
  qa_pairs: {
166
186
  question: string;
167
187
  answer: string;
168
188
  tags?: string[] | undefined;
169
- }[];
170
- knowledge_space_id?: string | undefined;
189
+ }[] | undefined;
190
+ agent_id: string;
191
+ operation_id: string;
171
192
  }> | import("./shared.js").ToolDefinition<{
172
193
  icp_profile_id: string;
173
194
  count: number;