@besales/mcp 0.46.0 → 0.47.1
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 +96 -55
- package/dist/auth/connection-store.d.ts +21 -1
- package/dist/auth/connection-store.js +46 -2
- package/dist/auth/connection-store.js.map +1 -1
- package/dist/auth/oauth-client.d.ts +5 -1
- package/dist/auth/oauth-client.js +22 -12
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/http/api-client.d.ts +16 -1
- package/dist/http/api-client.js +50 -2
- package/dist/http/api-client.js.map +1 -1
- package/dist/instructions/server-instructions.d.ts +4 -13
- package/dist/instructions/server-instructions.js +76 -274
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/prompts/registry.d.ts +15 -0
- package/dist/prompts/registry.js +83 -0
- package/dist/prompts/registry.js.map +1 -0
- package/dist/resources/concepts/feedback-sheets.md +7 -4
- package/dist/resources/concepts/handoff.md +4 -1
- package/dist/resources/concepts/sandbox.md +14 -5
- package/dist/resources/concepts/triggers.md +6 -2
- package/dist/resources/concepts/workbook-classification.md +26 -21
- package/dist/resources/docs/campaigns.md +20 -0
- package/dist/resources/docs/follow-up.md +19 -0
- package/dist/resources/docs/platforms.md +2 -2
- package/dist/resources/docs/routing.md +18 -0
- package/dist/resources/docs/task-state.md +30 -0
- package/dist/resources/docs/trigger-actions.md +28 -0
- package/dist/resources/docs/variables.md +18 -0
- package/dist/resources/registry.js +51 -2
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/extract-from-document.md +8 -1
- package/dist/resources/workflows/iterate-with-sandbox.md +5 -2
- package/dist/resources/workflows/platform-setup-from-scratch.md +90 -2
- package/dist/resources/workflows/production-readiness-check.md +22 -18
- package/dist/schemas/mcp-tools.json +1139 -96
- package/dist/server.d.ts +2 -0
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/dist/tasks/task-state-store.d.ts +68 -0
- package/dist/tasks/task-state-store.js +278 -0
- package/dist/tasks/task-state-store.js.map +1 -0
- package/dist/tools/annotations.d.ts +7 -0
- package/dist/tools/annotations.js +16 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/contracts.js +7 -1
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/definitions/agent-design.d.ts +41 -20
- package/dist/tools/definitions/agent-design.js +189 -19
- package/dist/tools/definitions/agent-design.js.map +1 -1
- package/dist/tools/definitions/analytics.d.ts +40 -0
- package/dist/tools/definitions/analytics.js +233 -0
- package/dist/tools/definitions/analytics.js.map +1 -0
- package/dist/tools/definitions/broadcast-analytics.js +12 -0
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
- package/dist/tools/definitions/broadcast-mailing-variants.d.ts +2 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js +10 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js.map +1 -1
- package/dist/tools/definitions/broadcast-scheduler.d.ts +14 -1
- package/dist/tools/definitions/broadcast-scheduler.js +148 -12
- package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
- package/dist/tools/definitions/contacts.d.ts +15 -0
- package/dist/tools/definitions/contacts.js +84 -0
- package/dist/tools/definitions/contacts.js.map +1 -0
- package/dist/tools/definitions/crm-platform.d.ts +2 -0
- package/dist/tools/definitions/crm-platform.js +75 -5
- package/dist/tools/definitions/crm-platform.js.map +1 -1
- package/dist/tools/definitions/datasource.d.ts +1 -0
- package/dist/tools/definitions/datasource.js +16 -1
- package/dist/tools/definitions/datasource.js.map +1 -1
- package/dist/tools/definitions/dialogue-audit.d.ts +2 -2
- package/dist/tools/definitions/dialogue-audit.js +54 -16
- package/dist/tools/definitions/dialogue-audit.js.map +1 -1
- package/dist/tools/definitions/dialogue-export.d.ts +1 -1
- package/dist/tools/definitions/dialogue-export.js +12 -0
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/external-api-channels.js +39 -12
- package/dist/tools/definitions/external-api-channels.js.map +1 -1
- package/dist/tools/definitions/follow-up-funnel-test.js +4 -0
- package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
- package/dist/tools/definitions/follow-up-setup.js +3 -0
- package/dist/tools/definitions/follow-up-setup.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +2 -1
- package/dist/tools/definitions/follow-up.js +11 -0
- package/dist/tools/definitions/follow-up.js.map +1 -1
- package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +3 -0
- package/dist/tools/definitions/getcourse-anchor-refresh.js +29 -2
- package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
- package/dist/tools/definitions/getcourse-cold-welcome.d.ts +12 -2
- package/dist/tools/definitions/getcourse-cold-welcome.js +79 -4
- package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
- package/dist/tools/definitions/getcourse-wave.js +14 -0
- package/dist/tools/definitions/getcourse-wave.js.map +1 -1
- package/dist/tools/definitions/help.d.ts +8 -0
- package/dist/tools/definitions/help.js +219 -0
- package/dist/tools/definitions/help.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +27 -5
- package/dist/tools/definitions/knowledge.js +200 -33
- package/dist/tools/definitions/knowledge.js.map +1 -1
- package/dist/tools/definitions/link-tracking.js +9 -0
- package/dist/tools/definitions/link-tracking.js.map +1 -1
- package/dist/tools/definitions/model-comparison.js +6 -0
- package/dist/tools/definitions/model-comparison.js.map +1 -1
- package/dist/tools/definitions/operational-overview.d.ts +3 -0
- package/dist/tools/definitions/operational-overview.js +23 -0
- package/dist/tools/definitions/operational-overview.js.map +1 -0
- package/dist/tools/definitions/operator-workflow.d.ts +20 -0
- package/dist/tools/definitions/operator-workflow.js +114 -0
- package/dist/tools/definitions/operator-workflow.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +26 -3
- package/dist/tools/definitions/platform-setup.js +209 -7
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/scheduled-tasks.js +2 -0
- package/dist/tools/definitions/scheduled-tasks.js.map +1 -1
- package/dist/tools/definitions/session.js +103 -5
- package/dist/tools/definitions/session.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +154 -11
- package/dist/tools/definitions/shared.js +67 -9
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions/task-state.d.ts +76 -0
- package/dist/tools/definitions/task-state.js +301 -0
- package/dist/tools/definitions/task-state.js.map +1 -0
- package/dist/tools/definitions/trigger-contact-claims.js +2 -0
- package/dist/tools/definitions/trigger-contact-claims.js.map +1 -1
- package/dist/tools/definitions.d.ts +273 -31
- package/dist/tools/definitions.js +12 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/description-localization.d.ts +2 -0
- package/dist/tools/description-localization.js +46 -0
- package/dist/tools/description-localization.js.map +1 -0
- package/dist/tools/incomplete-list.d.ts +23 -0
- package/dist/tools/incomplete-list.js +39 -0
- package/dist/tools/incomplete-list.js.map +1 -0
- package/dist/tools/inventory.d.ts +10 -0
- package/dist/tools/inventory.js +49 -0
- package/dist/tools/inventory.js.map +1 -0
- package/dist/tools/registry-mapping-cases-core.js +197 -2
- package/dist/tools/registry-mapping-cases-core.js.map +1 -1
- package/dist/tools/registry-mapping-cases-platform.js +69 -0
- package/dist/tools/registry-mapping-cases-platform.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +60 -8
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/result-envelope.d.ts +46 -0
- package/dist/tools/result-envelope.js +184 -0
- package/dist/tools/result-envelope.js.map +1 -0
- package/dist/tools/result.d.ts +41 -3
- package/dist/tools/result.js +229 -27
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/tool-title.d.ts +2 -0
- package/dist/tools/tool-title.js +12 -0
- package/dist/tools/tool-title.js.map +1 -0
- package/dist/tools/toolsets.d.ts +37 -0
- package/dist/tools/toolsets.js +64 -0
- package/dist/tools/toolsets.js.map +1 -0
- package/dist/tools/verify-with.d.ts +5 -0
- package/dist/tools/verify-with.js +36 -0
- package/dist/tools/verify-with.js.map +1 -0
- package/dist/types/api-contract.gen.d.ts +1433 -74
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +64 -8
- package/dist/utils/logger.js.map +1 -1
- package/docs/agent-usage-guide.full.ru.md +20 -15
- package/docs/agent-usage-guide.ru.md +29 -16
- package/docs/async-operation-lifecycle.md +46 -0
- package/docs/connect.ru.md +120 -0
- package/docs/evals/model-behavior-scorecard.md +80 -0
- package/docs/failure-semantics.md +56 -0
- package/docs/help-navigation.md +48 -0
- package/docs/host-compatibility-matrix.md +153 -0
- package/docs/host-setup.md +22 -6
- package/docs/operation-coverage.md +114 -0
- package/docs/pii-policy.md +46 -0
- package/docs/response-size-budget.md +150 -0
- package/docs/task-state.md +58 -0
- package/docs/tool-effects.md +46 -0
- package/docs/tool-surface.md +91 -0
- package/package.json +6 -2
- package/scripts/model-eval-server.js +213 -0
- package/scripts/probe-mcp-protocol.js +134 -0
- 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 = {}) {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,0BAA0B,EAC1B,sBAAsB,EACtB,QAAQ,EACR,yBAAyB,GAK1B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAA2B,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAuB,MAAM,qBAAqB,CAAC;
|
|
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"}
|
package/dist/tools/contracts.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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" | "
|
|
135
|
-
severity: "
|
|
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: "
|
|
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
|
-
|
|
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
|
-
|
|
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;
|