@grackle-ai/mcp 0.19.0 → 0.21.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.
- package/dist/error-handler.d.ts +7 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +40 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +29 -7
- package/dist/mcp-server.js.map +1 -1
- package/dist/result-helpers.d.ts +7 -0
- package/dist/result-helpers.d.ts.map +1 -0
- package/dist/result-helpers.js +15 -0
- package/dist/result-helpers.js.map +1 -0
- package/dist/tool-registry.d.ts +12 -9
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +6 -0
- package/dist/tool-registry.js.map +1 -1
- package/dist/tools/env.d.ts +4 -0
- package/dist/tools/env.d.ts.map +1 -0
- package/dist/tools/env.js +267 -0
- package/dist/tools/env.js.map +1 -0
- package/dist/tools/finding.d.ts +4 -0
- package/dist/tools/finding.d.ts.map +1 -0
- package/dist/tools/finding.js +95 -0
- package/dist/tools/finding.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +14 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/logs.d.ts +4 -0
- package/dist/tools/logs.d.ts.map +1 -0
- package/dist/tools/logs.js +149 -0
- package/dist/tools/logs.js.map +1 -0
- package/dist/tools/persona.d.ts +4 -0
- package/dist/tools/persona.d.ts.map +1 -0
- package/dist/tools/persona.js +172 -0
- package/dist/tools/persona.js.map +1 -0
- package/dist/tools/project.d.ts +4 -0
- package/dist/tools/project.d.ts.map +1 -0
- package/dist/tools/project.js +208 -0
- package/dist/tools/project.js.map +1 -0
- package/dist/tools/session.d.ts +4 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +239 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/task.d.ts +4 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +398 -0
- package/dist/tools/task.js.map +1 -0
- package/package.json +4 -2
- package/dist/tools/list-environments.d.ts +0 -4
- package/dist/tools/list-environments.d.ts.map +0 -1
- package/dist/tools/list-environments.js +0 -28
- package/dist/tools/list-environments.js.map +0 -1
- package/dist/tools/list-projects.d.ts +0 -4
- package/dist/tools/list-projects.d.ts.map +0 -1
- package/dist/tools/list-projects.js +0 -28
- package/dist/tools/list-projects.js.map +0 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { projectStatusToString } from "@grackle-ai/common";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { jsonResult } from "../result-helpers.js";
|
|
4
|
+
import { grpcErrorToToolResult } from "../error-handler.js";
|
|
5
|
+
/** MCP tools for managing Grackle projects (CRUD + archive). */
|
|
6
|
+
export const projectTools = [
|
|
7
|
+
{
|
|
8
|
+
name: "project_list",
|
|
9
|
+
group: "project",
|
|
10
|
+
description: "List all Grackle projects with their names, descriptions, repositories, and status.",
|
|
11
|
+
inputSchema: z.object({}),
|
|
12
|
+
rpcMethod: "listProjects",
|
|
13
|
+
mutating: false,
|
|
14
|
+
annotations: {
|
|
15
|
+
readOnlyHint: true,
|
|
16
|
+
destructiveHint: false,
|
|
17
|
+
idempotentHint: true,
|
|
18
|
+
openWorldHint: false,
|
|
19
|
+
},
|
|
20
|
+
async handler(_args, client) {
|
|
21
|
+
try {
|
|
22
|
+
const response = await client.listProjects({});
|
|
23
|
+
return jsonResult(response.projects.map((p) => ({
|
|
24
|
+
id: p.id,
|
|
25
|
+
name: p.name,
|
|
26
|
+
description: p.description,
|
|
27
|
+
repoUrl: p.repoUrl,
|
|
28
|
+
defaultEnvironmentId: p.defaultEnvironmentId,
|
|
29
|
+
status: projectStatusToString(p.status) || "unspecified",
|
|
30
|
+
})));
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
return grpcErrorToToolResult(error);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "project_create",
|
|
39
|
+
group: "project",
|
|
40
|
+
description: "Create a new Grackle project with a name, optional description, repository URL, and default environment.",
|
|
41
|
+
inputSchema: z.object({
|
|
42
|
+
name: z.string().describe("Display name for the new project"),
|
|
43
|
+
description: z
|
|
44
|
+
.string()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe("Optional description of the project"),
|
|
47
|
+
repoUrl: z
|
|
48
|
+
.string()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Optional repository URL associated with the project"),
|
|
51
|
+
defaultEnvironmentId: z
|
|
52
|
+
.string()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Optional ID of the default environment to use for this project"),
|
|
55
|
+
}),
|
|
56
|
+
rpcMethod: "createProject",
|
|
57
|
+
mutating: true,
|
|
58
|
+
annotations: {
|
|
59
|
+
readOnlyHint: false,
|
|
60
|
+
destructiveHint: false,
|
|
61
|
+
idempotentHint: false,
|
|
62
|
+
openWorldHint: false,
|
|
63
|
+
},
|
|
64
|
+
async handler(args, client) {
|
|
65
|
+
try {
|
|
66
|
+
const project = await client.createProject({
|
|
67
|
+
name: args.name,
|
|
68
|
+
description: args.description ?? "",
|
|
69
|
+
repoUrl: args.repoUrl ?? "",
|
|
70
|
+
defaultEnvironmentId: args.defaultEnvironmentId ?? "",
|
|
71
|
+
});
|
|
72
|
+
return jsonResult({
|
|
73
|
+
id: project.id,
|
|
74
|
+
name: project.name,
|
|
75
|
+
description: project.description,
|
|
76
|
+
repoUrl: project.repoUrl,
|
|
77
|
+
defaultEnvironmentId: project.defaultEnvironmentId,
|
|
78
|
+
status: projectStatusToString(project.status) || "unspecified",
|
|
79
|
+
createdAt: project.createdAt,
|
|
80
|
+
updatedAt: project.updatedAt,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return grpcErrorToToolResult(error);
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "project_get",
|
|
90
|
+
group: "project",
|
|
91
|
+
description: "Get full details of a specific Grackle project by its unique identifier.",
|
|
92
|
+
inputSchema: z.object({
|
|
93
|
+
projectId: z.string().describe("Unique identifier of the project to retrieve"),
|
|
94
|
+
}),
|
|
95
|
+
rpcMethod: "getProject",
|
|
96
|
+
mutating: false,
|
|
97
|
+
annotations: {
|
|
98
|
+
readOnlyHint: true,
|
|
99
|
+
destructiveHint: false,
|
|
100
|
+
idempotentHint: true,
|
|
101
|
+
openWorldHint: false,
|
|
102
|
+
},
|
|
103
|
+
async handler(args, client) {
|
|
104
|
+
try {
|
|
105
|
+
const project = await client.getProject({
|
|
106
|
+
id: args.projectId,
|
|
107
|
+
});
|
|
108
|
+
return jsonResult({
|
|
109
|
+
id: project.id,
|
|
110
|
+
name: project.name,
|
|
111
|
+
description: project.description,
|
|
112
|
+
repoUrl: project.repoUrl,
|
|
113
|
+
defaultEnvironmentId: project.defaultEnvironmentId,
|
|
114
|
+
status: projectStatusToString(project.status) || "unspecified",
|
|
115
|
+
createdAt: project.createdAt,
|
|
116
|
+
updatedAt: project.updatedAt,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
return grpcErrorToToolResult(error);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "project_update",
|
|
126
|
+
group: "project",
|
|
127
|
+
description: "Update an existing Grackle project's name, description, repository URL, or default environment.",
|
|
128
|
+
inputSchema: z.object({
|
|
129
|
+
projectId: z.string().describe("Unique identifier of the project to update"),
|
|
130
|
+
name: z
|
|
131
|
+
.string()
|
|
132
|
+
.optional()
|
|
133
|
+
.describe("New display name for the project"),
|
|
134
|
+
description: z
|
|
135
|
+
.string()
|
|
136
|
+
.optional()
|
|
137
|
+
.describe("New description for the project"),
|
|
138
|
+
repoUrl: z
|
|
139
|
+
.string()
|
|
140
|
+
.optional()
|
|
141
|
+
.describe("New repository URL for the project"),
|
|
142
|
+
defaultEnvironmentId: z
|
|
143
|
+
.string()
|
|
144
|
+
.optional()
|
|
145
|
+
.describe("New default environment ID for the project"),
|
|
146
|
+
}),
|
|
147
|
+
rpcMethod: "updateProject",
|
|
148
|
+
mutating: true,
|
|
149
|
+
annotations: {
|
|
150
|
+
readOnlyHint: false,
|
|
151
|
+
destructiveHint: false,
|
|
152
|
+
idempotentHint: true,
|
|
153
|
+
openWorldHint: false,
|
|
154
|
+
},
|
|
155
|
+
async handler(args, client) {
|
|
156
|
+
try {
|
|
157
|
+
const project = await client.updateProject({
|
|
158
|
+
id: args.projectId,
|
|
159
|
+
name: args.name,
|
|
160
|
+
description: args.description,
|
|
161
|
+
repoUrl: args.repoUrl,
|
|
162
|
+
defaultEnvironmentId: args.defaultEnvironmentId,
|
|
163
|
+
});
|
|
164
|
+
return jsonResult({
|
|
165
|
+
id: project.id,
|
|
166
|
+
name: project.name,
|
|
167
|
+
description: project.description,
|
|
168
|
+
repoUrl: project.repoUrl,
|
|
169
|
+
defaultEnvironmentId: project.defaultEnvironmentId,
|
|
170
|
+
status: projectStatusToString(project.status) || "unspecified",
|
|
171
|
+
createdAt: project.createdAt,
|
|
172
|
+
updatedAt: project.updatedAt,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
return grpcErrorToToolResult(error);
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: "project_archive",
|
|
182
|
+
group: "project",
|
|
183
|
+
description: "Archive a Grackle project, marking it as inactive. This is a destructive operation.",
|
|
184
|
+
inputSchema: z.object({
|
|
185
|
+
projectId: z.string().describe("Unique identifier of the project to archive"),
|
|
186
|
+
}),
|
|
187
|
+
rpcMethod: "archiveProject",
|
|
188
|
+
mutating: true,
|
|
189
|
+
annotations: {
|
|
190
|
+
readOnlyHint: false,
|
|
191
|
+
destructiveHint: true,
|
|
192
|
+
idempotentHint: true,
|
|
193
|
+
openWorldHint: false,
|
|
194
|
+
},
|
|
195
|
+
async handler(args, client) {
|
|
196
|
+
try {
|
|
197
|
+
await client.archiveProject({
|
|
198
|
+
id: args.projectId,
|
|
199
|
+
});
|
|
200
|
+
return jsonResult({ success: true });
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
return grpcErrorToToolResult(error);
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/tools/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgB1D,qDAAqD;AACrD,eAAO,MAAM,YAAY,EAAE,cAAc,EAsOxC,CAAC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { grackle, eventTypeToString } from "@grackle-ai/common";
|
|
3
|
+
import { jsonResult } from "../result-helpers.js";
|
|
4
|
+
import { grpcErrorToToolResult } from "../error-handler.js";
|
|
5
|
+
/** Default timeout in seconds for session_attach streaming. */
|
|
6
|
+
const DEFAULT_TIMEOUT_SECONDS = 30;
|
|
7
|
+
/** Maximum allowed timeout in seconds for session_attach streaming. */
|
|
8
|
+
const MAX_TIMEOUT_SECONDS = 300;
|
|
9
|
+
/** Session statuses considered "active" for filtering purposes. */
|
|
10
|
+
const ACTIVE_STATUSES = ["pending", "running", "waiting_input", "suspended"];
|
|
11
|
+
/** Session statuses that indicate no further events will arrive. */
|
|
12
|
+
const TERMINAL_STATUSES = ["completed", "failed", "killed"];
|
|
13
|
+
/** MCP tools for managing Grackle agent sessions. */
|
|
14
|
+
export const sessionTools = [
|
|
15
|
+
{
|
|
16
|
+
name: "session_spawn",
|
|
17
|
+
group: "session",
|
|
18
|
+
description: "Spawn a new AI agent session in a Grackle environment with a given prompt and optional model configuration.",
|
|
19
|
+
inputSchema: z.object({
|
|
20
|
+
environmentId: z.string().describe("The environment ID to spawn the agent in"),
|
|
21
|
+
prompt: z.string().describe("The prompt or task description for the agent"),
|
|
22
|
+
model: z.string().optional().describe("The AI model to use (e.g. claude-sonnet-4-20250514)"),
|
|
23
|
+
maxTurns: z.number().int().positive().optional().describe("Maximum number of turns the agent may take"),
|
|
24
|
+
runtime: z.string().optional().describe("The runtime to use (e.g. claude-code)"),
|
|
25
|
+
personaId: z.string().optional().describe("Persona ID to configure agent behavior"),
|
|
26
|
+
}),
|
|
27
|
+
rpcMethod: "spawnAgent",
|
|
28
|
+
mutating: true,
|
|
29
|
+
annotations: {
|
|
30
|
+
readOnlyHint: false,
|
|
31
|
+
destructiveHint: false,
|
|
32
|
+
idempotentHint: false,
|
|
33
|
+
openWorldHint: false,
|
|
34
|
+
},
|
|
35
|
+
async handler(args, client) {
|
|
36
|
+
try {
|
|
37
|
+
const session = await client.spawnAgent({
|
|
38
|
+
environmentId: args.environmentId,
|
|
39
|
+
prompt: args.prompt,
|
|
40
|
+
model: args.model,
|
|
41
|
+
maxTurns: args.maxTurns,
|
|
42
|
+
runtime: args.runtime,
|
|
43
|
+
personaId: args.personaId,
|
|
44
|
+
});
|
|
45
|
+
return jsonResult(session);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return grpcErrorToToolResult(error);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "session_resume",
|
|
54
|
+
group: "session",
|
|
55
|
+
description: "Resume a previously suspended agent session, continuing from where it left off.",
|
|
56
|
+
inputSchema: z.object({
|
|
57
|
+
sessionId: z.string().describe("The ID of the session to resume"),
|
|
58
|
+
}),
|
|
59
|
+
rpcMethod: "resumeAgent",
|
|
60
|
+
mutating: true,
|
|
61
|
+
annotations: {
|
|
62
|
+
readOnlyHint: false,
|
|
63
|
+
destructiveHint: false,
|
|
64
|
+
idempotentHint: false,
|
|
65
|
+
openWorldHint: false,
|
|
66
|
+
},
|
|
67
|
+
async handler(args, client) {
|
|
68
|
+
try {
|
|
69
|
+
const session = await client.resumeAgent({
|
|
70
|
+
sessionId: args.sessionId,
|
|
71
|
+
});
|
|
72
|
+
return jsonResult(session);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
return grpcErrorToToolResult(error);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "session_status",
|
|
81
|
+
group: "session",
|
|
82
|
+
description: "List agent sessions with optional filtering by environment and status. By default shows only active sessions.",
|
|
83
|
+
inputSchema: z.object({
|
|
84
|
+
environmentId: z.string().optional().describe("Filter sessions by environment ID"),
|
|
85
|
+
all: z.boolean().default(false).describe("When true, include sessions in all statuses; when false, show only active sessions"),
|
|
86
|
+
}),
|
|
87
|
+
rpcMethod: "listSessions",
|
|
88
|
+
mutating: false,
|
|
89
|
+
annotations: {
|
|
90
|
+
readOnlyHint: true,
|
|
91
|
+
destructiveHint: false,
|
|
92
|
+
idempotentHint: true,
|
|
93
|
+
openWorldHint: false,
|
|
94
|
+
},
|
|
95
|
+
async handler(args, client) {
|
|
96
|
+
try {
|
|
97
|
+
const response = await client.listSessions({
|
|
98
|
+
environmentId: args.environmentId,
|
|
99
|
+
status: "",
|
|
100
|
+
});
|
|
101
|
+
let sessions = response.sessions;
|
|
102
|
+
if (!args.all) {
|
|
103
|
+
sessions = sessions.filter((session) => ACTIVE_STATUSES.includes(session.status));
|
|
104
|
+
}
|
|
105
|
+
const summaries = sessions.map((session) => ({
|
|
106
|
+
id: session.id,
|
|
107
|
+
environmentId: session.environmentId,
|
|
108
|
+
runtime: session.runtime,
|
|
109
|
+
status: session.status,
|
|
110
|
+
prompt: session.prompt,
|
|
111
|
+
model: session.model,
|
|
112
|
+
turns: session.turns,
|
|
113
|
+
startedAt: session.startedAt,
|
|
114
|
+
taskId: session.taskId,
|
|
115
|
+
}));
|
|
116
|
+
return jsonResult(summaries);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
return grpcErrorToToolResult(error);
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: "session_kill",
|
|
125
|
+
group: "session",
|
|
126
|
+
description: "Terminate a running agent session immediately, stopping any in-progress work.",
|
|
127
|
+
inputSchema: z.object({
|
|
128
|
+
sessionId: z.string().describe("The ID of the session to kill"),
|
|
129
|
+
}),
|
|
130
|
+
rpcMethod: "killAgent",
|
|
131
|
+
mutating: true,
|
|
132
|
+
annotations: {
|
|
133
|
+
readOnlyHint: false,
|
|
134
|
+
destructiveHint: true,
|
|
135
|
+
idempotentHint: true,
|
|
136
|
+
openWorldHint: false,
|
|
137
|
+
},
|
|
138
|
+
async handler(args, client) {
|
|
139
|
+
try {
|
|
140
|
+
await client.killAgent({
|
|
141
|
+
id: args.sessionId,
|
|
142
|
+
});
|
|
143
|
+
return jsonResult({ success: true });
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return grpcErrorToToolResult(error);
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: "session_attach",
|
|
152
|
+
group: "session",
|
|
153
|
+
description: "Attach to a running session and stream events for a limited duration. Returns collected events and whether the stream timed out.",
|
|
154
|
+
inputSchema: z.object({
|
|
155
|
+
sessionId: z.string().describe("The ID of the session to stream events from"),
|
|
156
|
+
timeoutSeconds: z.number().int().positive().max(MAX_TIMEOUT_SECONDS).default(DEFAULT_TIMEOUT_SECONDS)
|
|
157
|
+
.describe("Maximum seconds to wait for events before returning (default 30, max 300)"),
|
|
158
|
+
maxEvents: z.number().int().positive().optional().describe("Maximum number of events to collect before returning"),
|
|
159
|
+
}),
|
|
160
|
+
rpcMethod: "streamSession",
|
|
161
|
+
mutating: false,
|
|
162
|
+
annotations: {
|
|
163
|
+
readOnlyHint: true,
|
|
164
|
+
destructiveHint: false,
|
|
165
|
+
idempotentHint: true,
|
|
166
|
+
openWorldHint: false,
|
|
167
|
+
},
|
|
168
|
+
async handler(args, client) {
|
|
169
|
+
try {
|
|
170
|
+
const timeout = Math.min(args.timeoutSeconds ?? DEFAULT_TIMEOUT_SECONDS, MAX_TIMEOUT_SECONDS);
|
|
171
|
+
const maxEvents = args.maxEvents;
|
|
172
|
+
const controller = new AbortController();
|
|
173
|
+
const timer = setTimeout(() => controller.abort(), timeout * 1000);
|
|
174
|
+
const events = [];
|
|
175
|
+
let timedOut = false;
|
|
176
|
+
try {
|
|
177
|
+
for await (const event of client.streamSession({ id: args.sessionId }, { signal: controller.signal })) {
|
|
178
|
+
events.push({
|
|
179
|
+
type: eventTypeToString(event.type) || String(event.type),
|
|
180
|
+
timestamp: event.timestamp,
|
|
181
|
+
content: event.content,
|
|
182
|
+
});
|
|
183
|
+
if (maxEvents && events.length >= maxEvents) {
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
if (event.type === grackle.EventType.STATUS && TERMINAL_STATUSES.includes(event.content)) {
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
if (controller.signal.aborted) {
|
|
193
|
+
timedOut = true;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
throw err;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
clearTimeout(timer);
|
|
201
|
+
}
|
|
202
|
+
return jsonResult({ events, timedOut });
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
return grpcErrorToToolResult(error);
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
name: "session_send_input",
|
|
211
|
+
group: "session",
|
|
212
|
+
description: "Send a text message as input to a session that is waiting for user interaction.",
|
|
213
|
+
inputSchema: z.object({
|
|
214
|
+
sessionId: z.string().describe("The ID of the session to send input to"),
|
|
215
|
+
text: z.string().describe("The text message to send to the agent"),
|
|
216
|
+
}),
|
|
217
|
+
rpcMethod: "sendInput",
|
|
218
|
+
mutating: true,
|
|
219
|
+
annotations: {
|
|
220
|
+
readOnlyHint: false,
|
|
221
|
+
destructiveHint: false,
|
|
222
|
+
idempotentHint: false,
|
|
223
|
+
openWorldHint: false,
|
|
224
|
+
},
|
|
225
|
+
async handler(args, client) {
|
|
226
|
+
try {
|
|
227
|
+
await client.sendInput({
|
|
228
|
+
sessionId: args.sessionId,
|
|
229
|
+
text: args.text,
|
|
230
|
+
});
|
|
231
|
+
return jsonResult({ success: true });
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
return grpcErrorToToolResult(error);
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
];
|
|
239
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/tools/task.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAY1D,kHAAkH;AAClH,eAAO,MAAM,SAAS,EAAE,cAAc,EA0YrC,CAAC"}
|