@toolplex/client 0.1.1 → 0.1.2
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/dist/mcp-server/clientContext.d.ts +7 -4
- package/dist/mcp-server/clientContext.js +21 -10
- package/dist/mcp-server/index.js +9 -7
- package/dist/mcp-server/logging/telemetryLogger.d.ts +2 -2
- package/dist/mcp-server/logging/telemetryLogger.js +2 -2
- package/dist/mcp-server/policy/callToolObserver.js +4 -2
- package/dist/mcp-server/policy/feedbackPolicy.d.ts +4 -4
- package/dist/mcp-server/policy/feedbackPolicy.js +1 -1
- package/dist/mcp-server/policy/installObserver.js +4 -4
- package/dist/mcp-server/policy/playbookPolicy.d.ts +3 -3
- package/dist/mcp-server/policy/playbookPolicy.js +5 -5
- package/dist/mcp-server/policy/policyEnforcer.d.ts +4 -4
- package/dist/mcp-server/policy/policyEnforcer.js +13 -13
- package/dist/mcp-server/policy/serverPolicy.d.ts +1 -1
- package/dist/mcp-server/policy/serverPolicy.js +4 -2
- package/dist/mcp-server/promptsCache.js +2 -2
- package/dist/mcp-server/registry.d.ts +8 -8
- package/dist/mcp-server/registry.js +19 -17
- package/dist/mcp-server/serversCache.d.ts +1 -1
- package/dist/mcp-server/serversCache.js +6 -6
- package/dist/mcp-server/staticPrompts.js +2 -2
- package/dist/mcp-server/toolDefinitionsCache.d.ts +3 -3
- package/dist/mcp-server/toolDefinitionsCache.js +3 -3
- package/dist/mcp-server/toolHandlers/callToolHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/callToolHandler.js +22 -20
- package/dist/mcp-server/toolHandlers/getServerConfigHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/getServerConfigHandler.js +24 -18
- package/dist/mcp-server/toolHandlers/initHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/initHandler.js +41 -39
- package/dist/mcp-server/toolHandlers/installServerHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/installServerHandler.js +36 -32
- package/dist/mcp-server/toolHandlers/listServersHandler.d.ts +1 -1
- package/dist/mcp-server/toolHandlers/listServersHandler.js +21 -17
- package/dist/mcp-server/toolHandlers/listToolsHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/listToolsHandler.js +32 -26
- package/dist/mcp-server/toolHandlers/logPlaybookUsageHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/logPlaybookUsageHandler.js +14 -14
- package/dist/mcp-server/toolHandlers/lookupEntityHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/lookupEntityHandler.js +30 -28
- package/dist/mcp-server/toolHandlers/savePlaybookHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/savePlaybookHandler.js +17 -15
- package/dist/mcp-server/toolHandlers/searchHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/searchHandler.js +33 -28
- package/dist/mcp-server/toolHandlers/serverManagerUtils.d.ts +1 -1
- package/dist/mcp-server/toolHandlers/serverManagerUtils.js +2 -2
- package/dist/mcp-server/toolHandlers/submitFeedbackHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/submitFeedbackHandler.js +17 -15
- package/dist/mcp-server/toolHandlers/uninstallServerHandler.d.ts +2 -2
- package/dist/mcp-server/toolHandlers/uninstallServerHandler.js +21 -19
- package/dist/mcp-server/toolplexApi/service.d.ts +8 -8
- package/dist/mcp-server/toolplexApi/service.js +24 -28
- package/dist/mcp-server/toolplexApi/types.d.ts +3 -3
- package/dist/mcp-server/toolplexServer.d.ts +1 -1
- package/dist/mcp-server/toolplexServer.js +78 -77
- package/dist/mcp-server/tools.d.ts +1 -1
- package/dist/mcp-server/tools.js +3 -3
- package/dist/mcp-server/utils/initServerManagers.d.ts +4 -4
- package/dist/mcp-server/utils/initServerManagers.js +5 -5
- package/dist/mcp-server/utils/resultAnnotators.js +3 -7
- package/dist/mcp-server/utils/runtimeCheck.js +8 -8
- package/dist/server-manager/index.js +4 -4
- package/dist/server-manager/serverManager.d.ts +6 -6
- package/dist/server-manager/serverManager.js +34 -36
- package/dist/server-manager/stdioServer.js +37 -35
- package/dist/server-manager/stdioTransportProtocol.d.ts +2 -2
- package/dist/server-manager/stdioTransportProtocol.js +7 -7
- package/dist/shared/enhancedPath.js +13 -13
- package/dist/shared/fileLogger.js +19 -19
- package/dist/shared/mcpServerTypes.d.ts +4 -3
- package/dist/shared/mcpServerTypes.js +17 -10
- package/dist/shared/serverManagerTypes.d.ts +1 -1
- package/dist/shared/serverManagerTypes.js +1 -1
- package/dist/shared/stdioServerManagerClient.js +20 -18
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { FileLogger } from
|
|
2
|
-
import Registry from
|
|
1
|
+
import { FileLogger } from "../../shared/fileLogger.js";
|
|
2
|
+
import Registry from "../registry.js";
|
|
3
3
|
const logger = FileLogger;
|
|
4
4
|
export async function handleSubmitFeedback(params) {
|
|
5
5
|
const startTime = Date.now();
|
|
6
|
-
await logger.info(
|
|
6
|
+
await logger.info("Handling submit feedback request");
|
|
7
7
|
await logger.debug(`Feedback params: ${JSON.stringify(params)}`);
|
|
8
8
|
const { target_type, target_id, vote, message, security_assessment } = params;
|
|
9
9
|
const apiService = Registry.getToolplexApiService();
|
|
@@ -13,18 +13,18 @@ export async function handleSubmitFeedback(params) {
|
|
|
13
13
|
const clientContext = Registry.getClientContext();
|
|
14
14
|
try {
|
|
15
15
|
// Check if the client is in restricted mode
|
|
16
|
-
if (clientContext.clientMode ===
|
|
17
|
-
throw new Error(
|
|
16
|
+
if (clientContext.clientMode === "restricted") {
|
|
17
|
+
throw new Error("Feedback functionality is disabled in restricted mode.");
|
|
18
18
|
}
|
|
19
19
|
// Check if read-only mode is enabled
|
|
20
20
|
if (clientContext.permissions.enable_read_only_mode) {
|
|
21
|
-
throw new Error(
|
|
21
|
+
throw new Error("Saving playbooks is disabled in read-only mode");
|
|
22
22
|
}
|
|
23
23
|
// Enforce feedback policy before submitting
|
|
24
24
|
policyEnforcer.enforceFeedbackPolicy(params);
|
|
25
25
|
const response = await apiService.submitFeedback(target_type, target_id, vote, message, security_assessment);
|
|
26
26
|
await logger.info(`Feedback submitted successfully for ${target_type} ${target_id}`);
|
|
27
|
-
await telemetryLogger.log(
|
|
27
|
+
await telemetryLogger.log("client_submit_feedback", {
|
|
28
28
|
success: true,
|
|
29
29
|
log_context: {
|
|
30
30
|
target_type,
|
|
@@ -34,13 +34,13 @@ export async function handleSubmitFeedback(params) {
|
|
|
34
34
|
latency_ms: Date.now() - startTime,
|
|
35
35
|
});
|
|
36
36
|
return {
|
|
37
|
-
role:
|
|
37
|
+
role: "system",
|
|
38
38
|
content: [
|
|
39
39
|
{
|
|
40
|
-
type:
|
|
40
|
+
type: "text",
|
|
41
41
|
text: promptsCache
|
|
42
|
-
.getPrompt(
|
|
43
|
-
.replace(
|
|
42
|
+
.getPrompt("submit_feedback_success")
|
|
43
|
+
.replace("{FEEDBACK_ID}", response.id),
|
|
44
44
|
},
|
|
45
45
|
],
|
|
46
46
|
};
|
|
@@ -48,7 +48,7 @@ export async function handleSubmitFeedback(params) {
|
|
|
48
48
|
catch (error) {
|
|
49
49
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
50
50
|
await logger.error(`Failed to submit feedback: ${errorMessage}`);
|
|
51
|
-
await telemetryLogger.log(
|
|
51
|
+
await telemetryLogger.log("client_submit_feedback", {
|
|
52
52
|
success: false,
|
|
53
53
|
log_context: {
|
|
54
54
|
target_type,
|
|
@@ -58,11 +58,13 @@ export async function handleSubmitFeedback(params) {
|
|
|
58
58
|
latency_ms: Date.now() - startTime,
|
|
59
59
|
});
|
|
60
60
|
return {
|
|
61
|
-
role:
|
|
61
|
+
role: "system",
|
|
62
62
|
content: [
|
|
63
63
|
{
|
|
64
|
-
type:
|
|
65
|
-
text: promptsCache
|
|
64
|
+
type: "text",
|
|
65
|
+
text: promptsCache
|
|
66
|
+
.getPrompt("unexpected_error")
|
|
67
|
+
.replace("{ERROR}", errorMessage),
|
|
66
68
|
},
|
|
67
69
|
],
|
|
68
70
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { CallToolResult } from
|
|
2
|
-
import { UninstallParams } from
|
|
1
|
+
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { UninstallParams } from "../../shared/mcpServerTypes.js";
|
|
3
3
|
export declare function handleUninstallServer(params: UninstallParams): Promise<CallToolResult>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { findServerManagerClient } from
|
|
2
|
-
import { ServerUninstallResultSchema } from
|
|
3
|
-
import { FileLogger } from
|
|
4
|
-
import Registry from
|
|
1
|
+
import { findServerManagerClient } from "./serverManagerUtils.js";
|
|
2
|
+
import { ServerUninstallResultSchema } from "../../shared/serverManagerTypes.js";
|
|
3
|
+
import { FileLogger } from "../../shared/fileLogger.js";
|
|
4
|
+
import Registry from "../registry.js";
|
|
5
5
|
const logger = FileLogger;
|
|
6
6
|
export async function handleUninstallServer(params) {
|
|
7
7
|
const startTime = Date.now();
|
|
@@ -15,14 +15,14 @@ export async function handleUninstallServer(params) {
|
|
|
15
15
|
let errorMessage;
|
|
16
16
|
try {
|
|
17
17
|
// Check if the client is in restricted mode
|
|
18
|
-
if (clientContext.clientMode ===
|
|
19
|
-
throw new Error(
|
|
18
|
+
if (clientContext.clientMode === "restricted") {
|
|
19
|
+
throw new Error("Uninstall functionality is disabled in restricted mode.");
|
|
20
20
|
}
|
|
21
21
|
const server_id = params.server_id;
|
|
22
22
|
await logger.info(`Handling uninstall request for server ${server_id}`);
|
|
23
23
|
const client = await findServerManagerClient(server_id, serverManagerClients);
|
|
24
|
-
const response = await client.sendRequest(
|
|
25
|
-
if (
|
|
24
|
+
const response = await client.sendRequest("uninstall", { server_id });
|
|
25
|
+
if ("error" in response) {
|
|
26
26
|
errorMessage = `Failed to uninstall server_id: ${server_id}, error message: ${response.error.message}`;
|
|
27
27
|
throw new Error(errorMessage);
|
|
28
28
|
}
|
|
@@ -33,7 +33,7 @@ export async function handleUninstallServer(params) {
|
|
|
33
33
|
// Refresh the servers cache after successful uninstall
|
|
34
34
|
await serversCache.refreshCache(serverManagerClients);
|
|
35
35
|
await logger.info(`Successfully uninstalled server ${server_id}`);
|
|
36
|
-
await telemetryLogger.log(
|
|
36
|
+
await telemetryLogger.log("client_uninstall", {
|
|
37
37
|
success: true,
|
|
38
38
|
log_context: {
|
|
39
39
|
server_id: parsed.data.server_id,
|
|
@@ -41,14 +41,14 @@ export async function handleUninstallServer(params) {
|
|
|
41
41
|
latency_ms: Date.now() - startTime,
|
|
42
42
|
});
|
|
43
43
|
return {
|
|
44
|
-
role:
|
|
44
|
+
role: "system",
|
|
45
45
|
content: [
|
|
46
46
|
{
|
|
47
|
-
type:
|
|
47
|
+
type: "text",
|
|
48
48
|
text: promptsCache
|
|
49
|
-
.getPrompt(
|
|
50
|
-
.replace(
|
|
51
|
-
.replace(
|
|
49
|
+
.getPrompt("uninstall_success")
|
|
50
|
+
.replace("{SERVER_ID}", parsed.data.server_id)
|
|
51
|
+
.replace("{SERVER_NAME}", parsed.data.server_name),
|
|
52
52
|
},
|
|
53
53
|
],
|
|
54
54
|
};
|
|
@@ -58,20 +58,22 @@ export async function handleUninstallServer(params) {
|
|
|
58
58
|
errorMessage = error.message;
|
|
59
59
|
}
|
|
60
60
|
else {
|
|
61
|
-
errorMessage = promptsCache.getPrompt(
|
|
61
|
+
errorMessage = promptsCache.getPrompt("unexpected_error");
|
|
62
62
|
}
|
|
63
63
|
await logger.error(`Failed to uninstall server: ${errorMessage}`);
|
|
64
|
-
await telemetryLogger.log(
|
|
64
|
+
await telemetryLogger.log("client_uninstall", {
|
|
65
65
|
success: false,
|
|
66
66
|
pii_sanitized_error_message: errorMessage,
|
|
67
67
|
latency_ms: Date.now() - startTime,
|
|
68
68
|
});
|
|
69
69
|
return {
|
|
70
|
-
role:
|
|
70
|
+
role: "system",
|
|
71
71
|
content: [
|
|
72
72
|
{
|
|
73
|
-
type:
|
|
74
|
-
text: promptsCache
|
|
73
|
+
type: "text",
|
|
74
|
+
text: promptsCache
|
|
75
|
+
.getPrompt("uninstall_failure")
|
|
76
|
+
.replace("{ERROR}", errorMessage),
|
|
75
77
|
},
|
|
76
78
|
],
|
|
77
79
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { CreatePlaybookResponse, LogPlaybookUsageResponse, SubmitFeedbackResponse, SecurityAssessment, FeedbackSummaryResponse, LogTelemetryRequest, LogTelemetryBatchResponse, InitResponse } from
|
|
2
|
-
import { ClientContext } from
|
|
3
|
-
import { Tool } from
|
|
4
|
-
import { PlaybookAction } from
|
|
1
|
+
import { CreatePlaybookResponse, LogPlaybookUsageResponse, SubmitFeedbackResponse, SecurityAssessment, FeedbackSummaryResponse, LogTelemetryRequest, LogTelemetryBatchResponse, InitResponse } from "./types.js";
|
|
2
|
+
import { ClientContext } from "../clientContext.js";
|
|
3
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
+
import { PlaybookAction } from "../../shared/mcpServerTypes.js";
|
|
5
5
|
export declare class ToolplexApiService {
|
|
6
6
|
private readonly baseUrl;
|
|
7
7
|
private readonly clientContext;
|
|
@@ -17,16 +17,16 @@ export declare class ToolplexApiService {
|
|
|
17
17
|
tools: Tool[];
|
|
18
18
|
}>;
|
|
19
19
|
logTelemetryEvents(events: Array<{
|
|
20
|
-
eventType: LogTelemetryRequest[
|
|
21
|
-
data: Partial<Omit<LogTelemetryRequest,
|
|
20
|
+
eventType: LogTelemetryRequest["event_type"];
|
|
21
|
+
data: Partial<Omit<LogTelemetryRequest, "event_type">>;
|
|
22
22
|
}>): Promise<LogTelemetryBatchResponse>;
|
|
23
|
-
lookupEntity(entityType:
|
|
23
|
+
lookupEntity(entityType: "server" | "playbook" | "feedback", entityId: string): Promise<any>;
|
|
24
24
|
search(query: string, expandedKeywords?: string[], filter?: string, size?: number): Promise<{
|
|
25
25
|
mcp_servers?: any[];
|
|
26
26
|
playbooks?: any[];
|
|
27
27
|
}>;
|
|
28
28
|
createPlaybook(description: string, actions: Array<PlaybookAction>, domain?: string, keywords?: string[], requirements?: string[], sourcePlaybookId?: string, forkReason?: string): Promise<CreatePlaybookResponse>;
|
|
29
29
|
logPlaybookUsage(playbookId: string, success: boolean, errorMessage?: string): Promise<LogPlaybookUsageResponse>;
|
|
30
|
-
submitFeedback(targetType:
|
|
30
|
+
submitFeedback(targetType: "server" | "playbook", targetId: string, vote: "up" | "down", message?: string, securityAssessment?: SecurityAssessment): Promise<SubmitFeedbackResponse>;
|
|
31
31
|
getFeedbackSummary(): Promise<FeedbackSummaryResponse>;
|
|
32
32
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import fetch from
|
|
2
|
-
import { FileLogger } from
|
|
3
|
-
import os from
|
|
1
|
+
import fetch from "node-fetch";
|
|
2
|
+
import { FileLogger } from "../../shared/fileLogger.js";
|
|
3
|
+
import os from "os";
|
|
4
4
|
const logger = FileLogger;
|
|
5
5
|
export class ToolplexApiService {
|
|
6
6
|
constructor(clientContext) {
|
|
7
7
|
if (!clientContext.apiKey) {
|
|
8
|
-
throw new Error(
|
|
8
|
+
throw new Error("API key not set in client context");
|
|
9
9
|
}
|
|
10
10
|
if (!clientContext.clientVersion) {
|
|
11
|
-
throw new Error(
|
|
11
|
+
throw new Error("Client version not set in client context");
|
|
12
12
|
}
|
|
13
13
|
this.clientContext = clientContext;
|
|
14
14
|
this.baseUrl = this.getBaseUrl(clientContext.dev);
|
|
@@ -20,7 +20,7 @@ export class ToolplexApiService {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
getBaseUrl(dev) {
|
|
23
|
-
return dev ?
|
|
23
|
+
return dev ? "http://localhost:8080" : "https://api.toolplex.ai";
|
|
24
24
|
}
|
|
25
25
|
async handleFetchResponse(response) {
|
|
26
26
|
if (!response.ok) {
|
|
@@ -31,17 +31,18 @@ export class ToolplexApiService {
|
|
|
31
31
|
}
|
|
32
32
|
getBaseHeaders() {
|
|
33
33
|
return {
|
|
34
|
-
|
|
35
|
-
Accept:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
Accept: "application/json",
|
|
36
|
+
"x-api-key": this.clientContext.apiKey,
|
|
37
|
+
"x-client-mode": this.clientContext.clientMode,
|
|
38
|
+
"x-client-name": this.clientContext.clientName,
|
|
39
|
+
"x-client-version": this.clientContext.clientVersion,
|
|
39
40
|
};
|
|
40
41
|
}
|
|
41
42
|
getHeadersWithSession() {
|
|
42
43
|
return {
|
|
43
44
|
...this.getBaseHeaders(),
|
|
44
|
-
|
|
45
|
+
"x-session-id": this.clientContext.sessionId,
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
48
|
async init() {
|
|
@@ -50,7 +51,7 @@ export class ToolplexApiService {
|
|
|
50
51
|
llm_context: this.clientContext.llmContext,
|
|
51
52
|
};
|
|
52
53
|
const response = await fetch(`${this.baseUrl}/init`, {
|
|
53
|
-
method:
|
|
54
|
+
method: "POST",
|
|
54
55
|
headers: this.getBaseHeaders(),
|
|
55
56
|
body: JSON.stringify(initRequest),
|
|
56
57
|
});
|
|
@@ -64,7 +65,7 @@ export class ToolplexApiService {
|
|
|
64
65
|
async getTools() {
|
|
65
66
|
try {
|
|
66
67
|
const response = await fetch(`${this.baseUrl}/tools`, {
|
|
67
|
-
method:
|
|
68
|
+
method: "POST",
|
|
68
69
|
headers: this.getBaseHeaders(),
|
|
69
70
|
body: JSON.stringify({}),
|
|
70
71
|
});
|
|
@@ -78,7 +79,7 @@ export class ToolplexApiService {
|
|
|
78
79
|
async logTelemetryEvents(events) {
|
|
79
80
|
try {
|
|
80
81
|
const response = await fetch(`${this.baseUrl}/telemetry/log/batch`, {
|
|
81
|
-
method:
|
|
82
|
+
method: "POST",
|
|
82
83
|
headers: this.getHeadersWithSession(),
|
|
83
84
|
body: JSON.stringify(events.map((event) => ({
|
|
84
85
|
event_type: event.eventType,
|
|
@@ -92,12 +93,10 @@ export class ToolplexApiService {
|
|
|
92
93
|
return { success: false };
|
|
93
94
|
}
|
|
94
95
|
}
|
|
95
|
-
async lookupEntity(entityType, entityId
|
|
96
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
|
-
) {
|
|
96
|
+
async lookupEntity(entityType, entityId) {
|
|
98
97
|
try {
|
|
99
98
|
const response = await fetch(`${this.baseUrl}/lookup-entity`, {
|
|
100
|
-
method:
|
|
99
|
+
method: "POST",
|
|
101
100
|
headers: this.getHeadersWithSession(),
|
|
102
101
|
body: JSON.stringify({
|
|
103
102
|
entity_type: entityType,
|
|
@@ -111,9 +110,7 @@ export class ToolplexApiService {
|
|
|
111
110
|
throw err;
|
|
112
111
|
}
|
|
113
112
|
}
|
|
114
|
-
async search(query, expandedKeywords = [], filter =
|
|
115
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
|
-
) {
|
|
113
|
+
async search(query, expandedKeywords = [], filter = "all", size = 10) {
|
|
117
114
|
const requestBody = {
|
|
118
115
|
query,
|
|
119
116
|
expanded_keywords: expandedKeywords,
|
|
@@ -123,7 +120,7 @@ export class ToolplexApiService {
|
|
|
123
120
|
await logger.debug(`Searching API at ${this.baseUrl} with query: ${query}`);
|
|
124
121
|
try {
|
|
125
122
|
const response = await fetch(`${this.baseUrl}/search`, {
|
|
126
|
-
method:
|
|
123
|
+
method: "POST",
|
|
127
124
|
headers: this.getHeadersWithSession(),
|
|
128
125
|
body: JSON.stringify(requestBody),
|
|
129
126
|
});
|
|
@@ -131,7 +128,6 @@ export class ToolplexApiService {
|
|
|
131
128
|
const errorText = await response.text();
|
|
132
129
|
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
133
130
|
}
|
|
134
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
135
131
|
return (await response.json());
|
|
136
132
|
}
|
|
137
133
|
catch (err) {
|
|
@@ -152,7 +148,7 @@ export class ToolplexApiService {
|
|
|
152
148
|
};
|
|
153
149
|
try {
|
|
154
150
|
const response = await fetch(`${this.baseUrl}/playbooks/create`, {
|
|
155
|
-
method:
|
|
151
|
+
method: "POST",
|
|
156
152
|
headers: this.getHeadersWithSession(),
|
|
157
153
|
body: JSON.stringify(requestBody),
|
|
158
154
|
});
|
|
@@ -172,7 +168,7 @@ export class ToolplexApiService {
|
|
|
172
168
|
};
|
|
173
169
|
try {
|
|
174
170
|
const response = await fetch(`${this.baseUrl}/playbooks/log-usage`, {
|
|
175
|
-
method:
|
|
171
|
+
method: "POST",
|
|
176
172
|
headers: this.getHeadersWithSession(),
|
|
177
173
|
body: JSON.stringify(requestBody),
|
|
178
174
|
});
|
|
@@ -195,7 +191,7 @@ export class ToolplexApiService {
|
|
|
195
191
|
};
|
|
196
192
|
try {
|
|
197
193
|
const response = await fetch(`${this.baseUrl}/feedback/submit`, {
|
|
198
|
-
method:
|
|
194
|
+
method: "POST",
|
|
199
195
|
headers: this.getHeadersWithSession(),
|
|
200
196
|
body: JSON.stringify(requestBody),
|
|
201
197
|
});
|
|
@@ -209,7 +205,7 @@ export class ToolplexApiService {
|
|
|
209
205
|
async getFeedbackSummary() {
|
|
210
206
|
try {
|
|
211
207
|
const response = await fetch(`${this.baseUrl}/feedback/summarize`, {
|
|
212
|
-
method:
|
|
208
|
+
method: "GET",
|
|
213
209
|
headers: this.getHeadersWithSession(),
|
|
214
210
|
});
|
|
215
211
|
return this.handleFetchResponse(response);
|
|
@@ -68,9 +68,9 @@ export interface LogPlaybookUsageResponse {
|
|
|
68
68
|
success: boolean;
|
|
69
69
|
}
|
|
70
70
|
export interface SubmitFeedbackRequest {
|
|
71
|
-
target_type:
|
|
71
|
+
target_type: "server" | "playbook";
|
|
72
72
|
target_id: string;
|
|
73
|
-
vote:
|
|
73
|
+
vote: "up" | "down";
|
|
74
74
|
message?: string;
|
|
75
75
|
llm_context: LlmContext;
|
|
76
76
|
machine_context: {
|
|
@@ -103,7 +103,7 @@ export interface LogTelemetryRequest {
|
|
|
103
103
|
event_type: string;
|
|
104
104
|
session_id?: string;
|
|
105
105
|
agent_id?: string;
|
|
106
|
-
agent_type?:
|
|
106
|
+
agent_type?: "user" | "system" | "external";
|
|
107
107
|
success?: boolean;
|
|
108
108
|
pii_sanitized_error_message?: string;
|
|
109
109
|
log_context?: {
|