@wiro-ai/wiro-mcp 1.3.4 → 1.4.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 +183 -16
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +126 -24
- package/dist/client.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +2 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +29 -0
- package/dist/instructions.js.map +1 -0
- package/dist/playbooks.d.ts +8 -0
- package/dist/playbooks.d.ts.map +1 -0
- package/dist/playbooks.js +667 -0
- package/dist/playbooks.js.map +1 -0
- package/dist/prompts.d.ts +4 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +133 -0
- package/dist/prompts.js.map +1 -0
- package/dist/server.d.ts +15 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -7
- package/dist/server.js.map +1 -1
- package/dist/tools/apply-agent-skills.d.ts +4 -0
- package/dist/tools/apply-agent-skills.d.ts.map +1 -0
- package/dist/tools/apply-agent-skills.js +601 -0
- package/dist/tools/apply-agent-skills.js.map +1 -0
- package/dist/tools/cancel-agent-message.d.ts +4 -0
- package/dist/tools/cancel-agent-message.d.ts.map +1 -0
- package/dist/tools/cancel-agent-message.js +126 -0
- package/dist/tools/cancel-agent-message.js.map +1 -0
- package/dist/tools/cancel-task.js +3 -3
- package/dist/tools/cancel-task.js.map +1 -1
- package/dist/tools/clone-workflow.d.ts +4 -0
- package/dist/tools/clone-workflow.d.ts.map +1 -0
- package/dist/tools/clone-workflow.js +83 -0
- package/dist/tools/clone-workflow.js.map +1 -0
- package/dist/tools/connect-agent-oauth.d.ts +4 -0
- package/dist/tools/connect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/connect-agent-oauth.js +508 -0
- package/dist/tools/connect-agent-oauth.js.map +1 -0
- package/dist/tools/control-agent.d.ts +4 -0
- package/dist/tools/control-agent.d.ts.map +1 -0
- package/dist/tools/control-agent.js +289 -0
- package/dist/tools/control-agent.js.map +1 -0
- package/dist/tools/create-workflow.d.ts +100 -0
- package/dist/tools/create-workflow.d.ts.map +1 -0
- package/dist/tools/create-workflow.js +102 -0
- package/dist/tools/create-workflow.js.map +1 -0
- package/dist/tools/delete-agent-session.d.ts +6 -0
- package/dist/tools/delete-agent-session.d.ts.map +1 -0
- package/dist/tools/delete-agent-session.js +134 -0
- package/dist/tools/delete-agent-session.js.map +1 -0
- package/dist/tools/delete-agent.d.ts +4 -0
- package/dist/tools/delete-agent.d.ts.map +1 -0
- package/dist/tools/delete-agent.js +145 -0
- package/dist/tools/delete-agent.js.map +1 -0
- package/dist/tools/delete-workflow.d.ts +4 -0
- package/dist/tools/delete-workflow.d.ts.map +1 -0
- package/dist/tools/delete-workflow.js +77 -0
- package/dist/tools/delete-workflow.js.map +1 -0
- package/dist/tools/deploy-agent.d.ts +4 -0
- package/dist/tools/deploy-agent.d.ts.map +1 -0
- package/dist/tools/deploy-agent.js +463 -0
- package/dist/tools/deploy-agent.js.map +1 -0
- package/dist/tools/disconnect-agent-oauth.d.ts +4 -0
- package/dist/tools/disconnect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/disconnect-agent-oauth.js +118 -0
- package/dist/tools/disconnect-agent-oauth.js.map +1 -0
- package/dist/tools/get-account.d.ts +4 -0
- package/dist/tools/get-account.d.ts.map +1 -0
- package/dist/tools/get-account.js +112 -0
- package/dist/tools/get-account.js.map +1 -0
- package/dist/tools/get-agent-activity.d.ts +4 -0
- package/dist/tools/get-agent-activity.d.ts.map +1 -0
- package/dist/tools/get-agent-activity.js +383 -0
- package/dist/tools/get-agent-activity.js.map +1 -0
- package/dist/tools/get-agent-conversation.d.ts +4 -0
- package/dist/tools/get-agent-conversation.d.ts.map +1 -0
- package/dist/tools/get-agent-conversation.js +228 -0
- package/dist/tools/get-agent-conversation.js.map +1 -0
- package/dist/tools/get-agent-message.d.ts +4 -0
- package/dist/tools/get-agent-message.d.ts.map +1 -0
- package/dist/tools/get-agent-message.js +68 -0
- package/dist/tools/get-agent-message.js.map +1 -0
- package/dist/tools/get-agent-template.d.ts +4 -0
- package/dist/tools/get-agent-template.d.ts.map +1 -0
- package/dist/tools/get-agent-template.js +128 -0
- package/dist/tools/get-agent-template.js.map +1 -0
- package/dist/tools/get-model-schema.d.ts +5 -1
- package/dist/tools/get-model-schema.d.ts.map +1 -1
- package/dist/tools/get-model-schema.js +138 -8
- package/dist/tools/get-model-schema.js.map +1 -1
- package/dist/tools/get-my-agent.d.ts +4 -0
- package/dist/tools/get-my-agent.d.ts.map +1 -0
- package/dist/tools/get-my-agent.js +117 -0
- package/dist/tools/get-my-agent.js.map +1 -0
- package/dist/tools/get-playbook.d.ts +3 -0
- package/dist/tools/get-playbook.d.ts.map +1 -0
- package/dist/tools/get-playbook.js +50 -0
- package/dist/tools/get-playbook.js.map +1 -0
- package/dist/tools/get-task-price.d.ts +1 -1
- package/dist/tools/get-task-price.d.ts.map +1 -1
- package/dist/tools/get-task-price.js +64 -16
- package/dist/tools/get-task-price.js.map +1 -1
- package/dist/tools/get-task.d.ts.map +1 -1
- package/dist/tools/get-task.js +26 -9
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/get-workflow.d.ts +9 -0
- package/dist/tools/get-workflow.d.ts.map +1 -0
- package/dist/tools/get-workflow.js +105 -0
- package/dist/tools/get-workflow.js.map +1 -0
- package/dist/tools/index.d.ts +63 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +131 -14
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kill-task.d.ts.map +1 -1
- package/dist/tools/kill-task.js +10 -6
- package/dist/tools/kill-task.js.map +1 -1
- package/dist/tools/list-agent-skills.d.ts +4 -0
- package/dist/tools/list-agent-skills.d.ts.map +1 -0
- package/dist/tools/list-agent-skills.js +242 -0
- package/dist/tools/list-agent-skills.js.map +1 -0
- package/dist/tools/list-agent-templates.d.ts +4 -0
- package/dist/tools/list-agent-templates.d.ts.map +1 -0
- package/dist/tools/list-agent-templates.js +110 -0
- package/dist/tools/list-agent-templates.js.map +1 -0
- package/dist/tools/list-my-agents.d.ts +4 -0
- package/dist/tools/list-my-agents.d.ts.map +1 -0
- package/dist/tools/list-my-agents.js +93 -0
- package/dist/tools/list-my-agents.js.map +1 -0
- package/dist/tools/list-studio-results.d.ts +4 -0
- package/dist/tools/list-studio-results.d.ts.map +1 -0
- package/dist/tools/list-studio-results.js +95 -0
- package/dist/tools/list-studio-results.js.map +1 -0
- package/dist/tools/list-tasks.d.ts.map +1 -1
- package/dist/tools/list-tasks.js +7 -5
- package/dist/tools/list-tasks.js.map +1 -1
- package/dist/tools/list-workflow-runs.d.ts +4 -0
- package/dist/tools/list-workflow-runs.d.ts.map +1 -0
- package/dist/tools/list-workflow-runs.js +110 -0
- package/dist/tools/list-workflow-runs.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +4 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +143 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/manage-agent-billing.d.ts +4 -0
- package/dist/tools/manage-agent-billing.d.ts.map +1 -0
- package/dist/tools/manage-agent-billing.js +788 -0
- package/dist/tools/manage-agent-billing.js.map +1 -0
- package/dist/tools/manage-agent-custom-skill.d.ts +4 -0
- package/dist/tools/manage-agent-custom-skill.d.ts.map +1 -0
- package/dist/tools/manage-agent-custom-skill.js +531 -0
- package/dist/tools/manage-agent-custom-skill.js.map +1 -0
- package/dist/tools/recommend-model.d.ts.map +1 -1
- package/dist/tools/recommend-model.js +6 -5
- package/dist/tools/recommend-model.js.map +1 -1
- package/dist/tools/resume-workflow-run.d.ts +4 -0
- package/dist/tools/resume-workflow-run.d.ts.map +1 -0
- package/dist/tools/resume-workflow-run.js +69 -0
- package/dist/tools/resume-workflow-run.js.map +1 -0
- package/dist/tools/run-model.d.ts.map +1 -1
- package/dist/tools/run-model.js +40 -4
- package/dist/tools/run-model.js.map +1 -1
- package/dist/tools/run-workflow.d.ts +6 -0
- package/dist/tools/run-workflow.d.ts.map +1 -0
- package/dist/tools/run-workflow.js +132 -0
- package/dist/tools/run-workflow.js.map +1 -0
- package/dist/tools/save-workflow-from-agent.d.ts +4 -0
- package/dist/tools/save-workflow-from-agent.d.ts.map +1 -0
- package/dist/tools/save-workflow-from-agent.js +280 -0
- package/dist/tools/save-workflow-from-agent.js.map +1 -0
- package/dist/tools/schemas.d.ts +182 -115
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +26 -6
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/search-models.d.ts.map +1 -1
- package/dist/tools/search-models.js +9 -6
- package/dist/tools/search-models.js.map +1 -1
- package/dist/tools/send-agent-message.d.ts +4 -0
- package/dist/tools/send-agent-message.d.ts.map +1 -0
- package/dist/tools/send-agent-message.js +156 -0
- package/dist/tools/send-agent-message.js.map +1 -0
- package/dist/tools/set-agent-credentials.d.ts +4 -0
- package/dist/tools/set-agent-credentials.d.ts.map +1 -0
- package/dist/tools/set-agent-credentials.js +540 -0
- package/dist/tools/set-agent-credentials.js.map +1 -0
- package/dist/tools/update-agent.d.ts +4 -0
- package/dist/tools/update-agent.d.ts.map +1 -0
- package/dist/tools/update-agent.js +179 -0
- package/dist/tools/update-agent.js.map +1 -0
- package/dist/tools/update-workflow.d.ts +201 -0
- package/dist/tools/update-workflow.d.ts.map +1 -0
- package/dist/tools/update-workflow.js +168 -0
- package/dist/tools/update-workflow.js.map +1 -0
- package/dist/tools/upload-file.d.ts.map +1 -1
- package/dist/tools/upload-file.js +12 -7
- package/dist/tools/upload-file.js.map +1 -1
- package/dist/tools/wait-for-task.d.ts.map +1 -1
- package/dist/tools/wait-for-task.js +20 -2
- package/dist/tools/wait-for-task.js.map +1 -1
- package/dist/tools/wait-for-workflow-run.d.ts +259 -0
- package/dist/tools/wait-for-workflow-run.d.ts.map +1 -0
- package/dist/tools/wait-for-workflow-run.js +190 -0
- package/dist/tools/wait-for-workflow-run.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/agent-catalog.d.ts +1256 -0
- package/dist/utils/agent-catalog.d.ts.map +1 -0
- package/dist/utils/agent-catalog.js +387 -0
- package/dist/utils/agent-catalog.js.map +1 -0
- package/dist/utils/agent-config.d.ts +443 -0
- package/dist/utils/agent-config.d.ts.map +1 -0
- package/dist/utils/agent-config.js +1676 -0
- package/dist/utils/agent-config.js.map +1 -0
- package/dist/utils/agent-message.d.ts +112 -0
- package/dist/utils/agent-message.d.ts.map +1 -0
- package/dist/utils/agent-message.js +243 -0
- package/dist/utils/agent-message.js.map +1 -0
- package/dist/utils/agent-targets.d.ts +76 -0
- package/dist/utils/agent-targets.d.ts.map +1 -0
- package/dist/utils/agent-targets.js +412 -0
- package/dist/utils/agent-targets.js.map +1 -0
- package/dist/utils/agent-turns.d.ts +354 -0
- package/dist/utils/agent-turns.d.ts.map +1 -0
- package/dist/utils/agent-turns.js +660 -0
- package/dist/utils/agent-turns.js.map +1 -0
- package/dist/utils/api.d.ts +40 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +111 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/format.d.ts +65 -2
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +583 -81
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/json-schema-dialect.d.ts +8 -1
- package/dist/utils/json-schema-dialect.d.ts.map +1 -1
- package/dist/utils/json-schema-dialect.js +23 -1
- package/dist/utils/json-schema-dialect.js.map +1 -1
- package/dist/utils/media.d.ts +28 -0
- package/dist/utils/media.d.ts.map +1 -0
- package/dist/utils/media.js +65 -0
- package/dist/utils/media.js.map +1 -0
- package/dist/utils/poll.d.ts +39 -0
- package/dist/utils/poll.d.ts.map +1 -0
- package/dist/utils/poll.js +111 -0
- package/dist/utils/poll.js.map +1 -0
- package/dist/utils/remote-file.js +2 -2
- package/dist/utils/remote-file.js.map +1 -1
- package/dist/utils/structured.d.ts +4 -0
- package/dist/utils/structured.d.ts.map +1 -1
- package/dist/utils/structured.js +23 -7
- package/dist/utils/structured.js.map +1 -1
- package/dist/utils/studio-runs.d.ts +87 -0
- package/dist/utils/studio-runs.d.ts.map +1 -0
- package/dist/utils/studio-runs.js +167 -0
- package/dist/utils/studio-runs.js.map +1 -0
- package/dist/utils/user-agent.d.ts +1199 -0
- package/dist/utils/user-agent.d.ts.map +1 -0
- package/dist/utils/user-agent.js +897 -0
- package/dist/utils/user-agent.js.map +1 -0
- package/dist/utils/workflow-agent.d.ts +151 -0
- package/dist/utils/workflow-agent.d.ts.map +1 -0
- package/dist/utils/workflow-agent.js +292 -0
- package/dist/utils/workflow-agent.js.map +1 -0
- package/dist/utils/workflow-artifacts.d.ts +160 -0
- package/dist/utils/workflow-artifacts.d.ts.map +1 -0
- package/dist/utils/workflow-artifacts.js +801 -0
- package/dist/utils/workflow-artifacts.js.map +1 -0
- package/dist/utils/workflow-save.d.ts +120 -0
- package/dist/utils/workflow-save.d.ts.map +1 -0
- package/dist/utils/workflow-save.js +728 -0
- package/dist/utils/workflow-save.js.map +1 -0
- package/dist/utils/workflow.d.ts +564 -0
- package/dist/utils/workflow.d.ts.map +1 -0
- package/dist/utils/workflow.js +712 -0
- package/dist/utils/workflow.js.map +1 -0
- package/dist/utils/workspace.d.ts +38 -0
- package/dist/utils/workspace.d.ts.map +1 -0
- package/dist/utils/workspace.js +90 -0
- package/dist/utils/workspace.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { asString, errorResult, isPlainObject, requireApiSuccess, toNumber, } from '../utils/api.js';
|
|
3
|
+
import { AGENT_INPUT_DESCRIPTION, agentRequestBody, agentSessionProblem, callAgent, resolveAgentTarget, } from '../utils/agent-targets.js';
|
|
4
|
+
import { nextActionSchema } from './schemas.js';
|
|
5
|
+
/** The session's row in the key's session list, or null when the list cannot be read. */
|
|
6
|
+
async function findSession(client, target, session, signal) {
|
|
7
|
+
try {
|
|
8
|
+
const response = requireApiSuccess(await callAgent(client, target, 'sessions', agentRequestBody(target, undefined), signal), '');
|
|
9
|
+
const data = isPlainObject(response.data) ? response.data : {};
|
|
10
|
+
const rows = Array.isArray(data.sessions) ? data.sessions.filter(isPlainObject) : [];
|
|
11
|
+
const row = rows.find(candidate => asString(candidate.sessionkey) === session);
|
|
12
|
+
return row ? { listed: true, messageCount: toNumber(row.messagecount) } : { listed: false, messageCount: null };
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Pause before the second look at a session list that did not show the session. */
|
|
19
|
+
export const SESSION_RECHECK_MS = 2_000;
|
|
20
|
+
function notFoundSummary(target, session) {
|
|
21
|
+
const owner = target.kind === 'deployed' ? 'this agent' : target.kind === 'studio' ? 'Studio' : 'the Workflow Agent';
|
|
22
|
+
return `Session "${session}" is not in this API key's session list for ${owner}, so nothing was deleted. `
|
|
23
|
+
+ 'If it was started in the last few seconds, try again shortly.'
|
|
24
|
+
+ (target.kind === 'workflow-agent'
|
|
25
|
+
? ' An API key reaches only the Workflow Agent sessions of its own project, not chats on wiro.ai or another project\'s.'
|
|
26
|
+
: '');
|
|
27
|
+
}
|
|
28
|
+
function deletionSummary(target, session) {
|
|
29
|
+
const scope = target.kind === 'studio' && session === 'default'
|
|
30
|
+
? 'the main Studio chat on wiro.ai'
|
|
31
|
+
: target.kind === 'deployed' && session === 'default'
|
|
32
|
+
? 'your agent\'s main chat, including its voice call records'
|
|
33
|
+
: `session "${session}"`;
|
|
34
|
+
return `This permanently deletes every message you sent and received in ${scope}, including a turn that is `
|
|
35
|
+
+ 'still running, and resets the agent\'s memory of it. It cannot be undone.';
|
|
36
|
+
}
|
|
37
|
+
export function registerDeleteAgentSession(server, client) {
|
|
38
|
+
server.registerTool('delete_agent_session', {
|
|
39
|
+
title: 'Delete an agent conversation',
|
|
40
|
+
description: 'Permanently delete one conversation (session) with Studio, the Workflow Agent or one of your '
|
|
41
|
+
+ 'deployed agents, and reset the agent\'s memory of it so the next message in that session starts fresh. '
|
|
42
|
+
+ 'Without confirm: true it only describes what would be deleted; ask the user before confirming. A turn '
|
|
43
|
+
+ 'that is still running is deleted too; to stop it instead, cancel it first with cancel_agent_message '
|
|
44
|
+
+ '(get_agent_conversation with the session shows whether one is running). Studio keeps a display name the session was given on '
|
|
45
|
+
+ 'wiro.ai. The Workflow Agent\'s "default" session cannot be deleted. Model outputs and saved workflows '
|
|
46
|
+
+ 'are not affected.',
|
|
47
|
+
inputSchema: {
|
|
48
|
+
agent: z.string().min(1).describe(AGENT_INPUT_DESCRIPTION),
|
|
49
|
+
session: z.string().min(1).describe('The session to delete (from get_agent_conversation).'),
|
|
50
|
+
confirm: z.boolean().default(false)
|
|
51
|
+
.describe('Set to true only after the user agreed to the permanent deletion.'),
|
|
52
|
+
},
|
|
53
|
+
outputSchema: {
|
|
54
|
+
agent: z.string(),
|
|
55
|
+
agentKind: z.enum(['studio', 'workflow-agent', 'deployed']),
|
|
56
|
+
session: z.string(),
|
|
57
|
+
deleted: z.boolean(),
|
|
58
|
+
memoryReset: z.boolean(),
|
|
59
|
+
messageCount: z.number().nullable().optional(),
|
|
60
|
+
summary: z.string(),
|
|
61
|
+
nextAction: nextActionSchema.optional(),
|
|
62
|
+
},
|
|
63
|
+
annotations: {
|
|
64
|
+
readOnlyHint: false,
|
|
65
|
+
destructiveHint: true,
|
|
66
|
+
idempotentHint: true,
|
|
67
|
+
openWorldHint: true,
|
|
68
|
+
},
|
|
69
|
+
}, async ({ agent, session, confirm }, extra) => {
|
|
70
|
+
try {
|
|
71
|
+
const target = resolveAgentTarget(agent);
|
|
72
|
+
const problem = agentSessionProblem(target, session);
|
|
73
|
+
if (problem)
|
|
74
|
+
throw new Error(problem);
|
|
75
|
+
if (target.kind === 'workflow-agent' && session === 'default') {
|
|
76
|
+
throw new Error('The Workflow Agent\'s main session ("default") cannot be deleted.');
|
|
77
|
+
}
|
|
78
|
+
const base = { agent: target.agent, agentKind: target.kind, session };
|
|
79
|
+
// The session is looked up in the list first, so a name that matches no
|
|
80
|
+
// session is reported instead of deleted. Studio's and a deployed agent's
|
|
81
|
+
// main chat always exist. A session that is not listed is looked up once
|
|
82
|
+
// more after a pause.
|
|
83
|
+
let found = await findSession(client, target, session, extra.signal);
|
|
84
|
+
if (found && !found.listed && session !== 'default') {
|
|
85
|
+
await new Promise(resolve => setTimeout(resolve, SESSION_RECHECK_MS));
|
|
86
|
+
found = (await findSession(client, target, session, extra.signal)) ?? found;
|
|
87
|
+
}
|
|
88
|
+
if (found && !found.listed && session !== 'default') {
|
|
89
|
+
const summary = notFoundSummary(target, session);
|
|
90
|
+
return {
|
|
91
|
+
content: [{ type: 'text', text: `## Nothing to delete\n\n${summary}` }],
|
|
92
|
+
structuredContent: { ...base, deleted: false, memoryReset: false, messageCount: 0, summary },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (!confirm) {
|
|
96
|
+
const messageCount = found ? found.messageCount : null;
|
|
97
|
+
const summary = deletionSummary(target, session)
|
|
98
|
+
+ (messageCount !== null ? ` The session holds ${messageCount} message(s).` : '');
|
|
99
|
+
return {
|
|
100
|
+
content: [{ type: 'text', text: `## Confirm deletion\n\n${summary}\n\nAsk the user to confirm, then call delete_agent_session again with confirm: true.` }],
|
|
101
|
+
structuredContent: {
|
|
102
|
+
...base,
|
|
103
|
+
deleted: false,
|
|
104
|
+
memoryReset: false,
|
|
105
|
+
messageCount,
|
|
106
|
+
summary,
|
|
107
|
+
nextAction: {
|
|
108
|
+
tool: 'delete_agent_session',
|
|
109
|
+
arguments: { agent: target.agent, session, confirm: true },
|
|
110
|
+
reason: 'Ask the user to confirm this permanent deletion first.',
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Studio: ClearSession is the call that both deletes and resets memory
|
|
116
|
+
// for any session. The other two always reset when asked to.
|
|
117
|
+
const body = target.kind === 'deployed'
|
|
118
|
+
? agentRequestBody(target, session, { rotate: true })
|
|
119
|
+
: agentRequestBody(target, session);
|
|
120
|
+
requireApiSuccess(await callAgent(client, target, 'deleteSession', body, extra.signal), 'The session could not be deleted.');
|
|
121
|
+
const summary = `Deleted session "${session}". The next message in this session starts without memory `
|
|
122
|
+
+ 'of the old conversation.'
|
|
123
|
+
+ (target.kind === 'studio' ? ' A display name set on wiro.ai stays on the now empty session.' : '');
|
|
124
|
+
return {
|
|
125
|
+
content: [{ type: 'text', text: `## Session deleted\n\n${summary}` }],
|
|
126
|
+
structuredContent: { ...base, deleted: true, memoryReset: true, summary },
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return errorResult(error);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=delete-agent-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-agent-session.js","sourceRoot":"","sources":["../../src/tools/delete-agent-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-agent.d.ts","sourceRoot":"","sources":["../../src/tools/delete-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAqB/C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAmJ/E"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ApiResultError, errorResult, isPlainObject, requireApiSuccess, unixToIso, } from '../utils/api.js';
|
|
3
|
+
import { DEFAULT_WAIT_SECONDS } from '../utils/poll.js';
|
|
4
|
+
import { agentStatusLabel, agentStatusLabelSchema, describeAgentStatus, readAgentDetail, readAgentStatus, toAgentDetail, } from '../utils/user-agent.js';
|
|
5
|
+
import { nextActionSchema } from './schemas.js';
|
|
6
|
+
export function registerDeleteAgent(server, client) {
|
|
7
|
+
server.registerTool('delete_agent', {
|
|
8
|
+
title: 'Delete a Wiro agent',
|
|
9
|
+
description: 'Delete a deployed agent. This cannot be undone: the agent disappears from every list at '
|
|
10
|
+
+ 'once, its data is removed later and there is no restore. The order is: cancel the plan with manage_agent_billing (no '
|
|
11
|
+
+ 'refund for the rest of the period), stop the agent with control_agent, then delete it. Without '
|
|
12
|
+
+ 'confirm: true the tool only checks what is still in the way and describes the deletion; repeat '
|
|
13
|
+
+ 'the call with confirm: true after the user agrees. On a team agent this needs a team admin or the '
|
|
14
|
+
+ 'person who deployed it.',
|
|
15
|
+
inputSchema: {
|
|
16
|
+
agent_guid: z.string().min(1).max(100)
|
|
17
|
+
.describe('The deployed agent\'s guid, from list_my_agents.'),
|
|
18
|
+
confirm: z.boolean().default(false)
|
|
19
|
+
.describe('false only checks and describes the deletion. true deletes the agent. Set it only after the user agreed.'),
|
|
20
|
+
},
|
|
21
|
+
outputSchema: {
|
|
22
|
+
agentGuid: z.string(),
|
|
23
|
+
title: z.string(),
|
|
24
|
+
deleted: z.boolean(),
|
|
25
|
+
deletedAt: z.string().optional(),
|
|
26
|
+
status: z.number().int().nullable(),
|
|
27
|
+
statusLabel: agentStatusLabelSchema,
|
|
28
|
+
blockers: z.array(z.string()),
|
|
29
|
+
message: z.string(),
|
|
30
|
+
nextAction: nextActionSchema.optional(),
|
|
31
|
+
},
|
|
32
|
+
annotations: {
|
|
33
|
+
readOnlyHint: false,
|
|
34
|
+
destructiveHint: true,
|
|
35
|
+
idempotentHint: true,
|
|
36
|
+
openWorldHint: true,
|
|
37
|
+
},
|
|
38
|
+
}, async ({ agent_guid, confirm }, extra) => {
|
|
39
|
+
try {
|
|
40
|
+
const guid = agent_guid.trim();
|
|
41
|
+
const row = await readAgentDetail(client, guid, extra.signal);
|
|
42
|
+
const agent = toAgentDetail(row);
|
|
43
|
+
const status = readAgentStatus(row);
|
|
44
|
+
const subscription = isPlainObject(row.subscription) ? row.subscription : null;
|
|
45
|
+
const blockers = [];
|
|
46
|
+
let nextAction;
|
|
47
|
+
// A wallet plan that was already cancelled cannot charge again, so it does not block.
|
|
48
|
+
const planBlocks = subscription?.status === 'active'
|
|
49
|
+
&& !(subscription.provider === 'prepaid' && subscription.pendingdowngrade === 'cancel');
|
|
50
|
+
if (planBlocks) {
|
|
51
|
+
if (subscription?.provider === 'prepaid') {
|
|
52
|
+
blockers.push('The plan is still active. Cancel it first with manage_agent_billing action cancel; the rest of the paid period is not refunded.');
|
|
53
|
+
nextAction = {
|
|
54
|
+
tool: 'manage_agent_billing',
|
|
55
|
+
arguments: { agent_guid: guid, action: 'cancel' },
|
|
56
|
+
reason: 'Cancel the plan before deleting the agent.',
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
blockers.push(`The plan is billed by card and still active. It has to end first; cancel it from the dashboard (${agent.dashboardUrl}) and delete the agent after the period ends.`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (status === 1 || status === 2 || status === 3 || status === 4) {
|
|
64
|
+
blockers.push(`The agent is ${describeAgentStatus(status).toLowerCase()}. Stop it with control_agent and wait until it is stopped.`);
|
|
65
|
+
nextAction ??= {
|
|
66
|
+
tool: 'control_agent',
|
|
67
|
+
arguments: { agent_guid: guid, action: 'stop', wait_seconds: DEFAULT_WAIT_SECONDS },
|
|
68
|
+
reason: 'Stop the agent before deleting it.',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const base = {
|
|
72
|
+
agentGuid: guid,
|
|
73
|
+
title: agent.title,
|
|
74
|
+
status,
|
|
75
|
+
statusLabel: agentStatusLabel(status),
|
|
76
|
+
blockers,
|
|
77
|
+
};
|
|
78
|
+
if (blockers.length > 0) {
|
|
79
|
+
const message = `The agent cannot be deleted yet.\n\n${blockers.map(item => `- ${item}`).join('\n')}`;
|
|
80
|
+
return {
|
|
81
|
+
content: [{ type: 'text', text: `## Delete ${agent.title}: blocked\n\n${message}` }],
|
|
82
|
+
structuredContent: { ...base, deleted: false, message, ...(nextAction ? { nextAction } : {}) },
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (!confirm) {
|
|
86
|
+
const forfeit = subscription?.status === 'active'
|
|
87
|
+
? ' Its cancelled plan is still paid until the period ends; that time is lost and not refunded.'
|
|
88
|
+
: '';
|
|
89
|
+
const message = `Deleting ${agent.title} (${guid}) removes it from every list at once and cannot be undone.${forfeit}`;
|
|
90
|
+
return {
|
|
91
|
+
content: [{ type: 'text', text: `## Delete ${agent.title}: confirm first\n\n${message}\n\nCall delete_agent again with confirm: true after the user agrees.` }],
|
|
92
|
+
structuredContent: {
|
|
93
|
+
...base,
|
|
94
|
+
deleted: false,
|
|
95
|
+
message,
|
|
96
|
+
nextAction: {
|
|
97
|
+
tool: 'delete_agent',
|
|
98
|
+
arguments: { agent_guid: guid, confirm: true },
|
|
99
|
+
reason: 'Ask the user to confirm the deletion first. It cannot be undone.',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
let body;
|
|
105
|
+
try {
|
|
106
|
+
body = requireApiSuccess(await client.post('/UserAgent/Delete', { useragentguid: guid }, extra.signal), 'The agent could not be deleted.');
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (error instanceof ApiResultError && /stop the agent/i.test(error.message)) {
|
|
110
|
+
const message = 'The agent has to be stopped first, even when it shows an error. Stop it with control_agent, wait until it shows stopped, then delete it.';
|
|
111
|
+
return {
|
|
112
|
+
content: [{ type: 'text', text: `## Delete ${agent.title}: blocked\n\n${message}` }],
|
|
113
|
+
structuredContent: {
|
|
114
|
+
...base,
|
|
115
|
+
deleted: false,
|
|
116
|
+
blockers: [message],
|
|
117
|
+
message,
|
|
118
|
+
nextAction: {
|
|
119
|
+
tool: 'control_agent',
|
|
120
|
+
arguments: { agent_guid: guid, action: 'stop', wait_seconds: DEFAULT_WAIT_SECONDS },
|
|
121
|
+
reason: 'Stop the agent before deleting it.',
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
const deletedAt = isPlainObject(body.useragent) ? unixToIso(body.useragent.deletedat) : undefined;
|
|
129
|
+
const message = `${agent.title} was deleted. It no longer appears in any list and cannot be restored.`;
|
|
130
|
+
return {
|
|
131
|
+
content: [{ type: 'text', text: `## Deleted\n\n${message}` }],
|
|
132
|
+
structuredContent: {
|
|
133
|
+
...base,
|
|
134
|
+
deleted: true,
|
|
135
|
+
...(deletedAt ? { deletedAt } : {}),
|
|
136
|
+
message,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
return errorResult(error);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=delete-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-agent.js","sourceRoot":"","sources":["../../src/tools/delete-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/delete-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAyElF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, requireApiSuccess } from '../utils/api.js';
|
|
3
|
+
import { parseWorkflowSlug, toWorkflowDetail } from '../utils/workflow.js';
|
|
4
|
+
import { postWithNotFoundRetry } from '../utils/workflow-save.js';
|
|
5
|
+
import { fetchWorkflowRow } from './get-workflow.js';
|
|
6
|
+
import { nextActionSchema } from './schemas.js';
|
|
7
|
+
export function registerDeleteWorkflow(server, client) {
|
|
8
|
+
server.registerTool('delete_workflow', {
|
|
9
|
+
title: 'Delete a Wiro workflow',
|
|
10
|
+
description: 'Delete a workflow from the API key\'s workspace, for everyone: it leaves '
|
|
11
|
+
+ 'every list and the gallery, can no longer be run, and cannot be restored. Runs '
|
|
12
|
+
+ 'already started finish, and copies made from it keep working. With a team '
|
|
13
|
+
+ 'project\'s key this includes teammates\' workflows. Without `confirm: true` this '
|
|
14
|
+
+ 'only describes what would be deleted; ask the user, then call again with '
|
|
15
|
+
+ '`confirm: true`.',
|
|
16
|
+
inputSchema: {
|
|
17
|
+
slug: z.string().min(1).describe('The full workflow slug or the workflow page URL.'),
|
|
18
|
+
confirm: z.boolean().default(false).describe('Set true only after the user approved the deletion.'),
|
|
19
|
+
},
|
|
20
|
+
outputSchema: {
|
|
21
|
+
deleted: z.boolean(),
|
|
22
|
+
fullSlug: z.string(),
|
|
23
|
+
title: z.string().optional(),
|
|
24
|
+
message: z.string(),
|
|
25
|
+
nextAction: nextActionSchema.optional(),
|
|
26
|
+
},
|
|
27
|
+
annotations: {
|
|
28
|
+
readOnlyHint: false,
|
|
29
|
+
destructiveHint: true,
|
|
30
|
+
idempotentHint: true,
|
|
31
|
+
openWorldHint: true,
|
|
32
|
+
},
|
|
33
|
+
}, async ({ slug, confirm }, extra) => {
|
|
34
|
+
try {
|
|
35
|
+
const fullSlug = parseWorkflowSlug(slug);
|
|
36
|
+
if (!confirm) {
|
|
37
|
+
const workflow = toWorkflowDetail(await fetchWorkflowRow(client, fullSlug, extra.signal), { includeGraph: false });
|
|
38
|
+
const message = `This will permanently delete "${workflow.title}" (${fullSlug})`
|
|
39
|
+
+ (workflow.state === 'published' ? ', which is published in the public gallery' : '')
|
|
40
|
+
+ '. It cannot be restored.';
|
|
41
|
+
return {
|
|
42
|
+
content: [{ type: 'text', text: `## Confirm deletion\n\n${message}\n\nAsk the user, then call delete_workflow again with confirm: true.` }],
|
|
43
|
+
structuredContent: {
|
|
44
|
+
deleted: false,
|
|
45
|
+
fullSlug,
|
|
46
|
+
title: workflow.title,
|
|
47
|
+
message,
|
|
48
|
+
nextAction: {
|
|
49
|
+
tool: 'delete_workflow',
|
|
50
|
+
arguments: { slug: fullSlug, confirm: true },
|
|
51
|
+
reason: 'Ask the user to approve the deletion first.',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const response = await postWithNotFoundRetry(client, '/Workflow/Delete', { slug: fullSlug }, extra.signal);
|
|
57
|
+
if (response.result !== true
|
|
58
|
+
&& (response.errors ?? []).some(error => /workflow not found/i.test(String(error?.message ?? '')))) {
|
|
59
|
+
// When Detail still returns the workflow, it is reported as not deleted yet.
|
|
60
|
+
const check = await client.post('/Workflow/Detail', { slug: fullSlug }, extra.signal);
|
|
61
|
+
if (check.result === true && Array.isArray(check.workflow) && check.workflow.length > 0) {
|
|
62
|
+
throw new Error('The workflow exists but could not be deleted yet. Try again in a few seconds.');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
requireApiSuccess(response, 'The workflow could not be deleted.');
|
|
66
|
+
const message = `Deleted ${fullSlug}.`;
|
|
67
|
+
return {
|
|
68
|
+
content: [{ type: 'text', text: message }],
|
|
69
|
+
structuredContent: { deleted: true, fullSlug, message },
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return errorResult(error);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=delete-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-workflow.js","sourceRoot":"","sources":["../../src/tools/delete-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-agent.d.ts","sourceRoot":"","sources":["../../src/tools/deploy-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAwJ/C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA2W/E"}
|