@wiro-ai/wiro-mcp 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/README.md +173 -16
  2. package/dist/client.d.ts +10 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +39 -20
  5. package/dist/client.js.map +1 -1
  6. package/dist/index.js +4 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/instructions.d.ts +2 -0
  9. package/dist/instructions.d.ts.map +1 -0
  10. package/dist/instructions.js +25 -0
  11. package/dist/instructions.js.map +1 -0
  12. package/dist/playbooks.d.ts +8 -0
  13. package/dist/playbooks.d.ts.map +1 -0
  14. package/dist/playbooks.js +665 -0
  15. package/dist/playbooks.js.map +1 -0
  16. package/dist/prompts.d.ts +4 -0
  17. package/dist/prompts.d.ts.map +1 -0
  18. package/dist/prompts.js +133 -0
  19. package/dist/prompts.js.map +1 -0
  20. package/dist/server.d.ts +9 -2
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +9 -3
  23. package/dist/server.js.map +1 -1
  24. package/dist/tools/apply-agent-skills.d.ts +4 -0
  25. package/dist/tools/apply-agent-skills.d.ts.map +1 -0
  26. package/dist/tools/apply-agent-skills.js +545 -0
  27. package/dist/tools/apply-agent-skills.js.map +1 -0
  28. package/dist/tools/cancel-agent-message.d.ts +4 -0
  29. package/dist/tools/cancel-agent-message.d.ts.map +1 -0
  30. package/dist/tools/cancel-agent-message.js +126 -0
  31. package/dist/tools/cancel-agent-message.js.map +1 -0
  32. package/dist/tools/cancel-task.js +3 -3
  33. package/dist/tools/cancel-task.js.map +1 -1
  34. package/dist/tools/clone-workflow.d.ts +4 -0
  35. package/dist/tools/clone-workflow.d.ts.map +1 -0
  36. package/dist/tools/clone-workflow.js +83 -0
  37. package/dist/tools/clone-workflow.js.map +1 -0
  38. package/dist/tools/connect-agent-oauth.d.ts +4 -0
  39. package/dist/tools/connect-agent-oauth.d.ts.map +1 -0
  40. package/dist/tools/connect-agent-oauth.js +508 -0
  41. package/dist/tools/connect-agent-oauth.js.map +1 -0
  42. package/dist/tools/control-agent.d.ts +4 -0
  43. package/dist/tools/control-agent.d.ts.map +1 -0
  44. package/dist/tools/control-agent.js +274 -0
  45. package/dist/tools/control-agent.js.map +1 -0
  46. package/dist/tools/create-workflow.d.ts +100 -0
  47. package/dist/tools/create-workflow.d.ts.map +1 -0
  48. package/dist/tools/create-workflow.js +103 -0
  49. package/dist/tools/create-workflow.js.map +1 -0
  50. package/dist/tools/delete-agent-session.d.ts +6 -0
  51. package/dist/tools/delete-agent-session.d.ts.map +1 -0
  52. package/dist/tools/delete-agent-session.js +134 -0
  53. package/dist/tools/delete-agent-session.js.map +1 -0
  54. package/dist/tools/delete-agent.d.ts +4 -0
  55. package/dist/tools/delete-agent.d.ts.map +1 -0
  56. package/dist/tools/delete-agent.js +144 -0
  57. package/dist/tools/delete-agent.js.map +1 -0
  58. package/dist/tools/delete-workflow.d.ts +4 -0
  59. package/dist/tools/delete-workflow.d.ts.map +1 -0
  60. package/dist/tools/delete-workflow.js +77 -0
  61. package/dist/tools/delete-workflow.js.map +1 -0
  62. package/dist/tools/deploy-agent.d.ts +4 -0
  63. package/dist/tools/deploy-agent.d.ts.map +1 -0
  64. package/dist/tools/deploy-agent.js +455 -0
  65. package/dist/tools/deploy-agent.js.map +1 -0
  66. package/dist/tools/disconnect-agent-oauth.d.ts +4 -0
  67. package/dist/tools/disconnect-agent-oauth.d.ts.map +1 -0
  68. package/dist/tools/disconnect-agent-oauth.js +118 -0
  69. package/dist/tools/disconnect-agent-oauth.js.map +1 -0
  70. package/dist/tools/get-account.d.ts +4 -0
  71. package/dist/tools/get-account.d.ts.map +1 -0
  72. package/dist/tools/get-account.js +110 -0
  73. package/dist/tools/get-account.js.map +1 -0
  74. package/dist/tools/get-agent-activity.d.ts +4 -0
  75. package/dist/tools/get-agent-activity.d.ts.map +1 -0
  76. package/dist/tools/get-agent-activity.js +383 -0
  77. package/dist/tools/get-agent-activity.js.map +1 -0
  78. package/dist/tools/get-agent-conversation.d.ts +4 -0
  79. package/dist/tools/get-agent-conversation.d.ts.map +1 -0
  80. package/dist/tools/get-agent-conversation.js +224 -0
  81. package/dist/tools/get-agent-conversation.js.map +1 -0
  82. package/dist/tools/get-agent-message.d.ts +4 -0
  83. package/dist/tools/get-agent-message.d.ts.map +1 -0
  84. package/dist/tools/get-agent-message.js +68 -0
  85. package/dist/tools/get-agent-message.js.map +1 -0
  86. package/dist/tools/get-agent-template.d.ts +4 -0
  87. package/dist/tools/get-agent-template.d.ts.map +1 -0
  88. package/dist/tools/get-agent-template.js +107 -0
  89. package/dist/tools/get-agent-template.js.map +1 -0
  90. package/dist/tools/get-model-schema.d.ts +5 -1
  91. package/dist/tools/get-model-schema.d.ts.map +1 -1
  92. package/dist/tools/get-model-schema.js +136 -8
  93. package/dist/tools/get-model-schema.js.map +1 -1
  94. package/dist/tools/get-my-agent.d.ts +4 -0
  95. package/dist/tools/get-my-agent.d.ts.map +1 -0
  96. package/dist/tools/get-my-agent.js +78 -0
  97. package/dist/tools/get-my-agent.js.map +1 -0
  98. package/dist/tools/get-playbook.d.ts +3 -0
  99. package/dist/tools/get-playbook.d.ts.map +1 -0
  100. package/dist/tools/get-playbook.js +50 -0
  101. package/dist/tools/get-playbook.js.map +1 -0
  102. package/dist/tools/get-task-price.d.ts.map +1 -1
  103. package/dist/tools/get-task-price.js +42 -15
  104. package/dist/tools/get-task-price.js.map +1 -1
  105. package/dist/tools/get-task.d.ts.map +1 -1
  106. package/dist/tools/get-task.js +4 -3
  107. package/dist/tools/get-task.js.map +1 -1
  108. package/dist/tools/get-workflow.d.ts +9 -0
  109. package/dist/tools/get-workflow.d.ts.map +1 -0
  110. package/dist/tools/get-workflow.js +99 -0
  111. package/dist/tools/get-workflow.js.map +1 -0
  112. package/dist/tools/index.d.ts +62 -2
  113. package/dist/tools/index.d.ts.map +1 -1
  114. package/dist/tools/index.js +127 -14
  115. package/dist/tools/index.js.map +1 -1
  116. package/dist/tools/kill-task.d.ts.map +1 -1
  117. package/dist/tools/kill-task.js +10 -6
  118. package/dist/tools/kill-task.js.map +1 -1
  119. package/dist/tools/list-agent-skills.d.ts +4 -0
  120. package/dist/tools/list-agent-skills.d.ts.map +1 -0
  121. package/dist/tools/list-agent-skills.js +242 -0
  122. package/dist/tools/list-agent-skills.js.map +1 -0
  123. package/dist/tools/list-agent-templates.d.ts +4 -0
  124. package/dist/tools/list-agent-templates.d.ts.map +1 -0
  125. package/dist/tools/list-agent-templates.js +110 -0
  126. package/dist/tools/list-agent-templates.js.map +1 -0
  127. package/dist/tools/list-my-agents.d.ts +4 -0
  128. package/dist/tools/list-my-agents.d.ts.map +1 -0
  129. package/dist/tools/list-my-agents.js +90 -0
  130. package/dist/tools/list-my-agents.js.map +1 -0
  131. package/dist/tools/list-studio-results.d.ts +4 -0
  132. package/dist/tools/list-studio-results.d.ts.map +1 -0
  133. package/dist/tools/list-studio-results.js +95 -0
  134. package/dist/tools/list-studio-results.js.map +1 -0
  135. package/dist/tools/list-tasks.d.ts.map +1 -1
  136. package/dist/tools/list-tasks.js +7 -5
  137. package/dist/tools/list-tasks.js.map +1 -1
  138. package/dist/tools/list-workflow-runs.d.ts +4 -0
  139. package/dist/tools/list-workflow-runs.d.ts.map +1 -0
  140. package/dist/tools/list-workflow-runs.js +110 -0
  141. package/dist/tools/list-workflow-runs.js.map +1 -0
  142. package/dist/tools/list-workflows.d.ts +4 -0
  143. package/dist/tools/list-workflows.d.ts.map +1 -0
  144. package/dist/tools/list-workflows.js +143 -0
  145. package/dist/tools/list-workflows.js.map +1 -0
  146. package/dist/tools/manage-agent-billing.d.ts +4 -0
  147. package/dist/tools/manage-agent-billing.d.ts.map +1 -0
  148. package/dist/tools/manage-agent-billing.js +764 -0
  149. package/dist/tools/manage-agent-billing.js.map +1 -0
  150. package/dist/tools/manage-agent-custom-skill.d.ts +4 -0
  151. package/dist/tools/manage-agent-custom-skill.d.ts.map +1 -0
  152. package/dist/tools/manage-agent-custom-skill.js +537 -0
  153. package/dist/tools/manage-agent-custom-skill.js.map +1 -0
  154. package/dist/tools/recommend-model.d.ts.map +1 -1
  155. package/dist/tools/recommend-model.js +6 -5
  156. package/dist/tools/recommend-model.js.map +1 -1
  157. package/dist/tools/resume-workflow-run.d.ts +4 -0
  158. package/dist/tools/resume-workflow-run.d.ts.map +1 -0
  159. package/dist/tools/resume-workflow-run.js +69 -0
  160. package/dist/tools/resume-workflow-run.js.map +1 -0
  161. package/dist/tools/run-model.d.ts.map +1 -1
  162. package/dist/tools/run-model.js +39 -3
  163. package/dist/tools/run-model.js.map +1 -1
  164. package/dist/tools/run-workflow.d.ts +6 -0
  165. package/dist/tools/run-workflow.d.ts.map +1 -0
  166. package/dist/tools/run-workflow.js +132 -0
  167. package/dist/tools/run-workflow.js.map +1 -0
  168. package/dist/tools/save-workflow-from-agent.d.ts +4 -0
  169. package/dist/tools/save-workflow-from-agent.d.ts.map +1 -0
  170. package/dist/tools/save-workflow-from-agent.js +283 -0
  171. package/dist/tools/save-workflow-from-agent.js.map +1 -0
  172. package/dist/tools/schemas.d.ts +62 -12
  173. package/dist/tools/schemas.d.ts.map +1 -1
  174. package/dist/tools/schemas.js +17 -3
  175. package/dist/tools/schemas.js.map +1 -1
  176. package/dist/tools/search-models.js +6 -6
  177. package/dist/tools/search-models.js.map +1 -1
  178. package/dist/tools/send-agent-message.d.ts +4 -0
  179. package/dist/tools/send-agent-message.d.ts.map +1 -0
  180. package/dist/tools/send-agent-message.js +156 -0
  181. package/dist/tools/send-agent-message.js.map +1 -0
  182. package/dist/tools/set-agent-credentials.d.ts +4 -0
  183. package/dist/tools/set-agent-credentials.d.ts.map +1 -0
  184. package/dist/tools/set-agent-credentials.js +529 -0
  185. package/dist/tools/set-agent-credentials.js.map +1 -0
  186. package/dist/tools/update-agent.d.ts +4 -0
  187. package/dist/tools/update-agent.d.ts.map +1 -0
  188. package/dist/tools/update-agent.js +178 -0
  189. package/dist/tools/update-agent.js.map +1 -0
  190. package/dist/tools/update-workflow.d.ts +201 -0
  191. package/dist/tools/update-workflow.d.ts.map +1 -0
  192. package/dist/tools/update-workflow.js +168 -0
  193. package/dist/tools/update-workflow.js.map +1 -0
  194. package/dist/tools/upload-file.d.ts.map +1 -1
  195. package/dist/tools/upload-file.js +4 -3
  196. package/dist/tools/upload-file.js.map +1 -1
  197. package/dist/tools/wait-for-workflow-run.d.ts +259 -0
  198. package/dist/tools/wait-for-workflow-run.d.ts.map +1 -0
  199. package/dist/tools/wait-for-workflow-run.js +190 -0
  200. package/dist/tools/wait-for-workflow-run.js.map +1 -0
  201. package/dist/types.d.ts +22 -4
  202. package/dist/types.d.ts.map +1 -1
  203. package/dist/types.js.map +1 -1
  204. package/dist/utils/agent-catalog.d.ts +1256 -0
  205. package/dist/utils/agent-catalog.d.ts.map +1 -0
  206. package/dist/utils/agent-catalog.js +388 -0
  207. package/dist/utils/agent-catalog.js.map +1 -0
  208. package/dist/utils/agent-config.d.ts +441 -0
  209. package/dist/utils/agent-config.d.ts.map +1 -0
  210. package/dist/utils/agent-config.js +1667 -0
  211. package/dist/utils/agent-config.js.map +1 -0
  212. package/dist/utils/agent-message.d.ts +115 -0
  213. package/dist/utils/agent-message.d.ts.map +1 -0
  214. package/dist/utils/agent-message.js +246 -0
  215. package/dist/utils/agent-message.js.map +1 -0
  216. package/dist/utils/agent-targets.d.ts +76 -0
  217. package/dist/utils/agent-targets.d.ts.map +1 -0
  218. package/dist/utils/agent-targets.js +408 -0
  219. package/dist/utils/agent-targets.js.map +1 -0
  220. package/dist/utils/agent-turns.d.ts +354 -0
  221. package/dist/utils/agent-turns.d.ts.map +1 -0
  222. package/dist/utils/agent-turns.js +623 -0
  223. package/dist/utils/agent-turns.js.map +1 -0
  224. package/dist/utils/api.d.ts +40 -0
  225. package/dist/utils/api.d.ts.map +1 -0
  226. package/dist/utils/api.js +111 -0
  227. package/dist/utils/api.js.map +1 -0
  228. package/dist/utils/format.d.ts +42 -1
  229. package/dist/utils/format.d.ts.map +1 -1
  230. package/dist/utils/format.js +173 -14
  231. package/dist/utils/format.js.map +1 -1
  232. package/dist/utils/media.d.ts +28 -0
  233. package/dist/utils/media.d.ts.map +1 -0
  234. package/dist/utils/media.js +65 -0
  235. package/dist/utils/media.js.map +1 -0
  236. package/dist/utils/poll.d.ts +39 -0
  237. package/dist/utils/poll.d.ts.map +1 -0
  238. package/dist/utils/poll.js +111 -0
  239. package/dist/utils/poll.js.map +1 -0
  240. package/dist/utils/remote-file.js +2 -2
  241. package/dist/utils/remote-file.js.map +1 -1
  242. package/dist/utils/structured.d.ts +2 -0
  243. package/dist/utils/structured.d.ts.map +1 -1
  244. package/dist/utils/structured.js +10 -10
  245. package/dist/utils/structured.js.map +1 -1
  246. package/dist/utils/studio-runs.d.ts +87 -0
  247. package/dist/utils/studio-runs.d.ts.map +1 -0
  248. package/dist/utils/studio-runs.js +167 -0
  249. package/dist/utils/studio-runs.js.map +1 -0
  250. package/dist/utils/user-agent.d.ts +1140 -0
  251. package/dist/utils/user-agent.d.ts.map +1 -0
  252. package/dist/utils/user-agent.js +802 -0
  253. package/dist/utils/user-agent.js.map +1 -0
  254. package/dist/utils/workflow-agent.d.ts +151 -0
  255. package/dist/utils/workflow-agent.d.ts.map +1 -0
  256. package/dist/utils/workflow-agent.js +292 -0
  257. package/dist/utils/workflow-agent.js.map +1 -0
  258. package/dist/utils/workflow-artifacts.d.ts +160 -0
  259. package/dist/utils/workflow-artifacts.d.ts.map +1 -0
  260. package/dist/utils/workflow-artifacts.js +801 -0
  261. package/dist/utils/workflow-artifacts.js.map +1 -0
  262. package/dist/utils/workflow-save.d.ts +123 -0
  263. package/dist/utils/workflow-save.d.ts.map +1 -0
  264. package/dist/utils/workflow-save.js +734 -0
  265. package/dist/utils/workflow-save.js.map +1 -0
  266. package/dist/utils/workflow.d.ts +559 -0
  267. package/dist/utils/workflow.d.ts.map +1 -0
  268. package/dist/utils/workflow.js +613 -0
  269. package/dist/utils/workflow.js.map +1 -0
  270. package/package.json +1 -1
@@ -0,0 +1,178 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, errorText, requireApiSuccess } from '../utils/api.js';
3
+ import { DEFAULT_WAIT_SECONDS } from '../utils/poll.js';
4
+ import { agentDetailSchema, formatAgentDetail, nextStepForAgent, readAgentDetail, readAgentStatus, selectableModelSlugs, toAgentDetail, } from '../utils/user-agent.js';
5
+ import { nextActionSchema } from './schemas.js';
6
+ const COMMANDS = [
7
+ 'agent_help',
8
+ 'new_session',
9
+ 'agent_status',
10
+ 'agent_limits',
11
+ 'last_scan',
12
+ 'last_heartbeat',
13
+ 'agent_restart',
14
+ 'clear_all_sessions',
15
+ 'clear_history',
16
+ ];
17
+ const MODEL_FIELDS = {
18
+ chat_model: 'chatmodel',
19
+ cron_model: 'cronmodel',
20
+ voice_prep_model: 'voiceprepmodel',
21
+ voice_postcall_model: 'voicepostcallmodel',
22
+ };
23
+ export function registerUpdateAgent(server, client) {
24
+ server.registerTool('update_agent', {
25
+ title: 'Update a Wiro agent',
26
+ description: 'Change a deployed agent\'s name, description, cover or categories, and its settings: '
27
+ + 'timezone (used by scheduled tasks), team session mode, the models used for chat, scheduled tasks '
28
+ + 'and voice calls, and which slash commands are available. Only the fields you pass change. A '
29
+ + 'running or starting agent restarts to apply the change. Calling it with only agent_guid re-checks '
30
+ + 'the setup of an agent waiting for setup, after its credentials were set. Skills, credentials and '
31
+ + 'custom instructions have their own tools (apply_agent_skills, set_agent_credentials, '
32
+ + 'manage_agent_custom_skill).',
33
+ inputSchema: {
34
+ agent_guid: z.string().min(1).max(100)
35
+ .describe('The deployed agent\'s guid, from list_my_agents or deploy_agent.'),
36
+ title: z.string().trim().min(1).max(200).optional()
37
+ .describe('New name.'),
38
+ description: z.string().max(5_000).nullable().optional()
39
+ .describe('New description; null clears it.'),
40
+ cover: z.string().url().max(2_048).nullable().optional()
41
+ .describe('New https cover image URL; null goes back to the template cover.'),
42
+ categories: z.array(z.string().min(1).max(100)).min(1).max(20).optional()
43
+ .describe('New category list (at least one).'),
44
+ timezone: z.string().max(100).nullable().optional()
45
+ .describe('IANA timezone such as "Europe/Istanbul" for scheduled tasks; null or "UTC" means UTC.'),
46
+ team_session_mode: z.enum(['private', 'collaborative']).optional()
47
+ .describe('private gives each person their own chat history; collaborative shares one history in team chats.'),
48
+ chat_model: z.string().max(200).nullable().optional()
49
+ .describe('Model for chat turns: a slug from the model list in get_my_agent, which shows each model\'s credits per 1M tokens. null resets to the default. The plan price stays the same.'),
50
+ cron_model: z.string().max(200).nullable().optional()
51
+ .describe('Model for scheduled tasks; same rules as chat_model.'),
52
+ voice_prep_model: z.string().max(200).nullable().optional()
53
+ .describe('Model that prepares voice calls; same rules as chat_model.'),
54
+ voice_postcall_model: z.string().max(200).nullable().optional()
55
+ .describe('Model that summarizes voice calls; same rules as chat_model.'),
56
+ enabled_commands: z.array(z.string().min(1).max(100)).max(50).optional()
57
+ .describe(`Slash commands the agent offers; [] hides all of them. Commands today: ${COMMANDS.join(', ')}.`),
58
+ },
59
+ outputSchema: {
60
+ agent: agentDetailSchema,
61
+ changed: z.array(z.string()),
62
+ restarted: z.boolean(),
63
+ message: z.string(),
64
+ nextAction: nextActionSchema.optional(),
65
+ },
66
+ annotations: {
67
+ readOnlyHint: false,
68
+ destructiveHint: false,
69
+ idempotentHint: false,
70
+ openWorldHint: true,
71
+ },
72
+ }, async (args, extra) => {
73
+ try {
74
+ const guid = args.agent_guid.trim();
75
+ const before = await readAgentDetail(client, guid, extra.signal);
76
+ const previous = readAgentStatus(before);
77
+ const profile = {};
78
+ if (args.title !== undefined)
79
+ profile.title = args.title;
80
+ if (args.description !== undefined)
81
+ profile.description = args.description;
82
+ if (args.cover !== undefined)
83
+ profile.cover = args.cover;
84
+ if (args.categories !== undefined)
85
+ profile.categories = args.categories;
86
+ const settings = {};
87
+ const settingNames = [];
88
+ if (args.timezone !== undefined) {
89
+ settings.timezone = args.timezone;
90
+ settingNames.push('timezone');
91
+ }
92
+ if (args.team_session_mode !== undefined) {
93
+ settings.teamsessionmode = args.team_session_mode;
94
+ settingNames.push('team_session_mode');
95
+ }
96
+ if (args.enabled_commands !== undefined) {
97
+ settings.enabledcommands = [...new Set(args.enabled_commands)];
98
+ settingNames.push('enabled_commands');
99
+ }
100
+ const selectable = selectableModelSlugs(before);
101
+ for (const [input, field] of Object.entries(MODEL_FIELDS)) {
102
+ const value = args[input];
103
+ if (value === undefined)
104
+ continue;
105
+ if (value !== null && value !== '' && selectable.size > 0 && !selectable.has(value)) {
106
+ throw new Error(`${input} "${value}" is not a selectable model. Choose one of: ${[...selectable].join(', ')}.`);
107
+ }
108
+ settings[field] = value === '' ? null : value;
109
+ settingNames.push(input);
110
+ }
111
+ // An update restarts a running agent, so it is only sent for profile
112
+ // fields or to finish the setup of a status 6 agent.
113
+ const sendProfile = Object.keys(profile).length > 0 || previous === 6;
114
+ const sendSettings = Object.keys(settings).length > 0;
115
+ if (!sendProfile && !sendSettings) {
116
+ throw new Error('Nothing to update. Pass at least one field to change.');
117
+ }
118
+ const changed = [];
119
+ if (sendProfile) {
120
+ requireApiSuccess(await client.post('/UserAgent/Update', { guid, ...profile }, extra.signal), 'The agent could not be updated.');
121
+ changed.push(...Object.keys(profile));
122
+ }
123
+ if (sendSettings) {
124
+ try {
125
+ requireApiSuccess(await client.post('/UserAgent/UpdateSettings', { useragentguid: guid, ...settings }, extra.signal), 'The agent settings could not be updated.');
126
+ }
127
+ catch (error) {
128
+ if (changed.length === 0)
129
+ throw error;
130
+ throw new Error(`${errorText(error)}\n\nThe ${changed.join(', ')} change was saved; the settings were not.`);
131
+ }
132
+ changed.push(...settingNames);
133
+ }
134
+ let after = before;
135
+ let readFailed = false;
136
+ try {
137
+ after = await readAgentDetail(client, guid, extra.signal);
138
+ }
139
+ catch {
140
+ // The change was saved; only the follow-up read failed.
141
+ readFailed = true;
142
+ }
143
+ const agent = toAgentDetail(after);
144
+ const restarted = previous === 3 || previous === 4;
145
+ const setupFinished = previous === 6 && agent.status !== 6;
146
+ const message = [
147
+ changed.length > 0 ? `Saved: ${changed.join(', ')}.` : 'Setup re-checked.',
148
+ restarted ? 'The agent restarts to apply the change.' : '',
149
+ setupFinished ? 'Setup is complete; the agent can be started.' : '',
150
+ previous === 6 && agent.status === 6 && agent.missingCredentials.length > 0
151
+ ? `Setup is still waiting for: ${agent.missingCredentials.map(item => item.title).join(', ')}.`
152
+ : '',
153
+ readFailed ? 'The updated agent could not be read back; get_my_agent shows the new state.' : '',
154
+ ].filter(Boolean).join(' ');
155
+ const nextAction = restarted
156
+ ? {
157
+ tool: 'get_my_agent',
158
+ arguments: { agent_guid: guid, wait_seconds: DEFAULT_WAIT_SECONDS },
159
+ reason: 'Wait until the agent is running again.',
160
+ }
161
+ : nextStepForAgent(agent, DEFAULT_WAIT_SECONDS);
162
+ return {
163
+ content: [{ type: 'text', text: `${message}\n\n${formatAgentDetail(agent)}` }],
164
+ structuredContent: {
165
+ agent,
166
+ changed,
167
+ restarted,
168
+ message,
169
+ ...(nextAction ? { nextAction } : {}),
170
+ },
171
+ };
172
+ }
173
+ catch (error) {
174
+ return errorResult(error);
175
+ }
176
+ });
177
+ }
178
+ //# sourceMappingURL=update-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-agent.js","sourceRoot":"","sources":["../../src/tools/update-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { z } from 'zod';
3
+ import type { WiroClient } from '../client.js';
4
+ import { type UpdatedWorkflow } from '../utils/workflow-save.js';
5
+ export declare const workflowChangesSchema: z.ZodObject<{
6
+ stepsAdded: z.ZodArray<z.ZodString, "many">;
7
+ stepsRemoved: z.ZodArray<z.ZodString, "many">;
8
+ stepsChanged: z.ZodArray<z.ZodString, "many">;
9
+ inputsAdded: z.ZodArray<z.ZodString, "many">;
10
+ inputsRemoved: z.ZodArray<z.ZodString, "many">;
11
+ inputsChanged: z.ZodArray<z.ZodString, "many">;
12
+ savedValuesChanged: z.ZodArray<z.ZodString, "many">;
13
+ outputsChanged: z.ZodBoolean;
14
+ layoutOnly: z.ZodBoolean;
15
+ titleChange: z.ZodOptional<z.ZodObject<{
16
+ from: z.ZodString;
17
+ to: z.ZodString;
18
+ }, "strip", z.ZodTypeAny, {
19
+ from: string;
20
+ to: string;
21
+ }, {
22
+ from: string;
23
+ to: string;
24
+ }>>;
25
+ descriptionChanged: z.ZodBoolean;
26
+ tagsChanged: z.ZodBoolean;
27
+ }, "strip", z.ZodTypeAny, {
28
+ stepsAdded: string[];
29
+ stepsRemoved: string[];
30
+ stepsChanged: string[];
31
+ inputsAdded: string[];
32
+ inputsRemoved: string[];
33
+ inputsChanged: string[];
34
+ savedValuesChanged: string[];
35
+ outputsChanged: boolean;
36
+ layoutOnly: boolean;
37
+ descriptionChanged: boolean;
38
+ tagsChanged: boolean;
39
+ titleChange?: {
40
+ from: string;
41
+ to: string;
42
+ } | undefined;
43
+ }, {
44
+ stepsAdded: string[];
45
+ stepsRemoved: string[];
46
+ stepsChanged: string[];
47
+ inputsAdded: string[];
48
+ inputsRemoved: string[];
49
+ inputsChanged: string[];
50
+ savedValuesChanged: string[];
51
+ outputsChanged: boolean;
52
+ layoutOnly: boolean;
53
+ descriptionChanged: boolean;
54
+ tagsChanged: boolean;
55
+ titleChange?: {
56
+ from: string;
57
+ to: string;
58
+ } | undefined;
59
+ }>;
60
+ export declare const updatedWorkflowSchema: {
61
+ reviewReset: z.ZodBoolean;
62
+ contentsChanged: z.ZodBoolean;
63
+ unchanged: z.ZodBoolean;
64
+ discarded: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
65
+ preview: z.ZodOptional<z.ZodBoolean>;
66
+ changes: z.ZodOptional<z.ZodObject<{
67
+ stepsAdded: z.ZodArray<z.ZodString, "many">;
68
+ stepsRemoved: z.ZodArray<z.ZodString, "many">;
69
+ stepsChanged: z.ZodArray<z.ZodString, "many">;
70
+ inputsAdded: z.ZodArray<z.ZodString, "many">;
71
+ inputsRemoved: z.ZodArray<z.ZodString, "many">;
72
+ inputsChanged: z.ZodArray<z.ZodString, "many">;
73
+ savedValuesChanged: z.ZodArray<z.ZodString, "many">;
74
+ outputsChanged: z.ZodBoolean;
75
+ layoutOnly: z.ZodBoolean;
76
+ titleChange: z.ZodOptional<z.ZodObject<{
77
+ from: z.ZodString;
78
+ to: z.ZodString;
79
+ }, "strip", z.ZodTypeAny, {
80
+ from: string;
81
+ to: string;
82
+ }, {
83
+ from: string;
84
+ to: string;
85
+ }>>;
86
+ descriptionChanged: z.ZodBoolean;
87
+ tagsChanged: z.ZodBoolean;
88
+ }, "strip", z.ZodTypeAny, {
89
+ stepsAdded: string[];
90
+ stepsRemoved: string[];
91
+ stepsChanged: string[];
92
+ inputsAdded: string[];
93
+ inputsRemoved: string[];
94
+ inputsChanged: string[];
95
+ savedValuesChanged: string[];
96
+ outputsChanged: boolean;
97
+ layoutOnly: boolean;
98
+ descriptionChanged: boolean;
99
+ tagsChanged: boolean;
100
+ titleChange?: {
101
+ from: string;
102
+ to: string;
103
+ } | undefined;
104
+ }, {
105
+ stepsAdded: string[];
106
+ stepsRemoved: string[];
107
+ stepsChanged: string[];
108
+ inputsAdded: string[];
109
+ inputsRemoved: string[];
110
+ inputsChanged: string[];
111
+ savedValuesChanged: string[];
112
+ outputsChanged: boolean;
113
+ layoutOnly: boolean;
114
+ descriptionChanged: boolean;
115
+ tagsChanged: boolean;
116
+ titleChange?: {
117
+ from: string;
118
+ to: string;
119
+ } | undefined;
120
+ }>>;
121
+ fullSlug: z.ZodString;
122
+ url: z.ZodString;
123
+ title: z.ZodString;
124
+ renamed: z.ZodBoolean;
125
+ state: z.ZodOptional<z.ZodEnum<["private", "pending_review", "published", "rejected"]>>;
126
+ updatetime: z.ZodOptional<z.ZodString>;
127
+ inputs: z.ZodArray<z.ZodObject<{
128
+ key: z.ZodString;
129
+ label: z.ZodString;
130
+ type: z.ZodString;
131
+ field: z.ZodOptional<z.ZodString>;
132
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
133
+ value: z.ZodString;
134
+ text: z.ZodString;
135
+ }, "strip", z.ZodTypeAny, {
136
+ text: string;
137
+ value: string;
138
+ }, {
139
+ text: string;
140
+ value: string;
141
+ }>, "many">>;
142
+ default: z.ZodOptional<z.ZodUnknown>;
143
+ savedValue: z.ZodOptional<z.ZodUnknown>;
144
+ }, "strip", z.ZodTypeAny, {
145
+ type: string;
146
+ label: string;
147
+ key: string;
148
+ default?: unknown;
149
+ options?: {
150
+ text: string;
151
+ value: string;
152
+ }[] | undefined;
153
+ field?: string | undefined;
154
+ savedValue?: unknown;
155
+ }, {
156
+ type: string;
157
+ label: string;
158
+ key: string;
159
+ default?: unknown;
160
+ options?: {
161
+ text: string;
162
+ value: string;
163
+ }[] | undefined;
164
+ field?: string | undefined;
165
+ savedValue?: unknown;
166
+ }>, "many">;
167
+ outputs: z.ZodRecord<z.ZodString, z.ZodUnknown>;
168
+ warnings: z.ZodArray<z.ZodObject<{
169
+ code: z.ZodOptional<z.ZodString>;
170
+ message: z.ZodString;
171
+ nodeId: z.ZodOptional<z.ZodString>;
172
+ input: z.ZodOptional<z.ZodString>;
173
+ }, "strip", z.ZodTypeAny, {
174
+ message: string;
175
+ input?: string | undefined;
176
+ code?: string | undefined;
177
+ nodeId?: string | undefined;
178
+ }, {
179
+ message: string;
180
+ input?: string | undefined;
181
+ code?: string | undefined;
182
+ nodeId?: string | undefined;
183
+ }>, "many">;
184
+ nextAction: z.ZodOptional<z.ZodObject<{
185
+ tool: z.ZodString;
186
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
187
+ reason: z.ZodString;
188
+ }, "strip", z.ZodTypeAny, {
189
+ arguments: Record<string, unknown>;
190
+ tool: string;
191
+ reason: string;
192
+ }, {
193
+ arguments: Record<string, unknown>;
194
+ tool: string;
195
+ reason: string;
196
+ }>>;
197
+ };
198
+ /** Markdown for an update or its preview. */
199
+ export declare function formatUpdatedWorkflow(saved: UpdatedWorkflow, heading: string): string;
200
+ export declare function registerUpdateWorkflow(server: McpServer, client: WiroClient): void;
201
+ //# sourceMappingURL=update-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/update-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAGnC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAahC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASjC,CAAC;AAEF,6CAA6C;AAC7C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA4BrF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA8GlF"}
@@ -0,0 +1,168 @@
1
+ import { z } from 'zod';
2
+ import { errorResult } from '../utils/api.js';
3
+ import { formatWorkflowInputs, parseWorkflowSlug } from '../utils/workflow.js';
4
+ import { formatWorkflowChanges, prepareIssuesText, tagProblem, updateWorkflow, WorkflowConflictError, WorkflowPrepareError, } from '../utils/workflow-save.js';
5
+ import { savedWorkflowSchema, workflowContentsInputSchema } from './create-workflow.js';
6
+ export const workflowChangesSchema = z.object({
7
+ stepsAdded: z.array(z.string()),
8
+ stepsRemoved: z.array(z.string()),
9
+ stepsChanged: z.array(z.string()),
10
+ inputsAdded: z.array(z.string()),
11
+ inputsRemoved: z.array(z.string()),
12
+ inputsChanged: z.array(z.string()),
13
+ savedValuesChanged: z.array(z.string()),
14
+ outputsChanged: z.boolean(),
15
+ layoutOnly: z.boolean(),
16
+ titleChange: z.object({ from: z.string(), to: z.string() }).optional(),
17
+ descriptionChanged: z.boolean(),
18
+ tagsChanged: z.boolean(),
19
+ });
20
+ export const updatedWorkflowSchema = {
21
+ ...savedWorkflowSchema,
22
+ reviewReset: z.boolean(),
23
+ contentsChanged: z.boolean(),
24
+ unchanged: z.boolean(),
25
+ discarded: z.array(z.string()).optional()
26
+ .describe('With unchanged: Start field changes Wiro does not keep, because it saves Start fields the way the wiro.ai editor writes them.'),
27
+ preview: z.boolean().optional(),
28
+ changes: workflowChangesSchema.optional(),
29
+ };
30
+ /** Markdown for an update or its preview. */
31
+ export function formatUpdatedWorkflow(saved, heading) {
32
+ const lines = [heading, ''];
33
+ lines.push(`**Title:** ${saved.title}`);
34
+ lines.push(`**Slug:** \`${saved.fullSlug}\``);
35
+ if (saved.unchanged) {
36
+ lines.push('', saved.discarded?.length
37
+ ? `Wiro saves Start fields the way the wiro.ai editor writes them, so your change to ${saved.discarded.join(', ')} `
38
+ + 'is not kept. Nothing else changed, so nothing was saved. Put guidance for people in '
39
+ + 'the workflow description.'
40
+ : 'The workflow already matches this change, so nothing was saved.');
41
+ }
42
+ if (saved.changes) {
43
+ lines.push('', saved.preview ? '### What will change' : '### What changed', '', ...formatWorkflowChanges(saved.changes));
44
+ }
45
+ if (saved.preview) {
46
+ lines.push('', 'Nothing is saved yet. The new steps replace the current ones and there is no undo.'
47
+ + (saved.reviewReset ? ' The workflow is published, so saving takes it out of the gallery until Wiro reviews it again.' : ''));
48
+ }
49
+ else if (saved.reviewReset) {
50
+ lines.push('', 'The workflow left the public gallery and is waiting for review again.');
51
+ }
52
+ if (!saved.preview && saved.updatetime) {
53
+ lines.push('', `**updatetime:** \`${saved.updatetime}\` (pass it as loaded_updatetime next time)`);
54
+ }
55
+ if (saved.contentsChanged)
56
+ lines.push('', '### Inputs', '', ...formatWorkflowInputs(saved.inputs));
57
+ if (saved.warnings.length > 0) {
58
+ lines.push('', '### Notes', '', ...saved.warnings.map(warning => `- ${warning.nodeId ? `\`${warning.nodeId}\`: ` : ''}${warning.message}`));
59
+ }
60
+ return lines.join('\n');
61
+ }
62
+ export function registerUpdateWorkflow(server, client) {
63
+ server.registerTool('update_workflow', {
64
+ title: 'Update a Wiro workflow',
65
+ description: 'Change a workflow you own (or your team owns): title, description, tags '
66
+ + 'and/or its whole step graph. Read it with get_workflow first and send the full '
67
+ + 'edited `contents`, plus that call\'s `updatetime` as `loaded_updatetime` so a '
68
+ + 'newer save by someone else is not overwritten. Leave metadata.input.values out to '
69
+ + 'keep the saved input values; a value shown as [hidden] is restored from the saved '
70
+ + 'workflow. Everyone who can open the workflow can read its saved values, so never '
71
+ + 'save a key or password in one. Wiro checks and prepares the new graph like '
72
+ + 'create_workflow, with the same 40 KB limit on the new graph, also when the saved workflow '
73
+ + 'is larger (removing steps can bring it under). Replacing the steps cannot be undone: without `confirm: true` '
74
+ + 'the call checks the new graph, reports any problems and the defaults it filled, and '
75
+ + 'returns what would change, saving nothing; show it to the user and repeat the call '
76
+ + 'with `confirm: true` after they agree. Editing a published workflow takes it out of '
77
+ + 'the public gallery until Wiro reviews it again, so that also needs '
78
+ + '`acknowledge_review_reset: true`.',
79
+ inputSchema: {
80
+ slug: z.string().min(1).describe('The full workflow slug or the workflow page URL.'),
81
+ title: z.string().trim().min(1).max(160).optional().describe('New title.'),
82
+ description: z.string().min(1).max(1000).optional().describe('New description, 1 to 1000 characters.'),
83
+ tags: z.array(z.string()).max(20).optional().describe('Replaces the tags.'),
84
+ contents: workflowContentsInputSchema.optional(),
85
+ loaded_updatetime: z.string().optional()
86
+ .describe('The `updatetime` from get_workflow (or the last update). Protects against overwriting newer changes.'),
87
+ confirm: z.boolean().default(false)
88
+ .describe('Required to save new `contents`, after the user approved the change summary.'),
89
+ force: z.boolean().default(false)
90
+ .describe('Overwrite a newer version. Only when the user explicitly wants that.'),
91
+ acknowledge_review_reset: z.boolean().default(false)
92
+ .describe('Required to edit a published workflow, after the user agreed it leaves the gallery until reviewed.'),
93
+ },
94
+ outputSchema: updatedWorkflowSchema,
95
+ annotations: {
96
+ readOnlyHint: false,
97
+ destructiveHint: true,
98
+ idempotentHint: false,
99
+ openWorldHint: true,
100
+ },
101
+ }, async (args, extra) => {
102
+ try {
103
+ const problem = args.tags ? tagProblem(args.tags) : null;
104
+ if (problem)
105
+ throw new Error(problem);
106
+ if (!args.title && !args.description && !args.tags && !args.contents) {
107
+ throw new Error('Nothing to change. Pass title, description, tags or contents.');
108
+ }
109
+ const fullSlug = parseWorkflowSlug(args.slug);
110
+ const saved = await updateWorkflow(client, {
111
+ fullSlug,
112
+ title: args.title,
113
+ description: args.description,
114
+ tags: args.tags,
115
+ contents: args.contents,
116
+ loadedUpdatetime: args.loaded_updatetime,
117
+ force: args.force,
118
+ acknowledgeReviewReset: args.acknowledge_review_reset,
119
+ preview: Boolean(args.contents) && !args.confirm,
120
+ }, extra.signal);
121
+ if (saved.preview) {
122
+ return {
123
+ content: [{ type: 'text', text: formatUpdatedWorkflow(saved, '## Review the change before saving') }],
124
+ structuredContent: {
125
+ ...saved,
126
+ nextAction: {
127
+ tool: 'update_workflow',
128
+ arguments: {
129
+ slug: fullSlug,
130
+ ...(args.title ? { title: args.title } : {}),
131
+ ...(args.description ? { description: args.description } : {}),
132
+ ...(args.tags ? { tags: args.tags } : {}),
133
+ contents: args.contents,
134
+ ...(saved.updatetime ? { loaded_updatetime: args.loaded_updatetime ?? saved.updatetime } : {}),
135
+ confirm: true,
136
+ ...(args.force ? { force: true } : {}),
137
+ ...(saved.reviewReset ? { acknowledge_review_reset: true } : {}),
138
+ },
139
+ reason: 'Show the user what will change and save only after they agree.',
140
+ },
141
+ },
142
+ };
143
+ }
144
+ const heading = saved.unchanged ? (saved.discarded ? '## Nothing saved' : '## No change needed') : '## Workflow updated';
145
+ return {
146
+ content: [{ type: 'text', text: formatUpdatedWorkflow(saved, heading) }],
147
+ structuredContent: { ...saved },
148
+ };
149
+ }
150
+ catch (error) {
151
+ if (error instanceof WorkflowPrepareError) {
152
+ return { content: [{ type: 'text', text: prepareIssuesText(error) }], isError: true };
153
+ }
154
+ if (error instanceof WorkflowConflictError) {
155
+ return {
156
+ content: [{
157
+ type: 'text',
158
+ text: `## Not saved: newer changes exist\n\n${error.message}`
159
+ + (error.currentUpdatetime ? `\n\nCurrent updatetime: \`${error.currentUpdatetime}\`` : ''),
160
+ }],
161
+ isError: true,
162
+ };
163
+ }
164
+ return errorResult(error);
165
+ }
166
+ });
167
+ }
168
+ //# sourceMappingURL=update-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-workflow.js","sourceRoot":"","sources":["../../src/tools/update-workflow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upload-file.d.ts","sourceRoot":"","sources":["../../src/tools/upload-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6E9E"}
1
+ {"version":3,"file":"upload-file.d.ts","sourceRoot":"","sources":["../../src/tools/upload-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA8E9E"}
@@ -5,9 +5,10 @@ import { uploadedFileOutputSchema } from './schemas.js';
5
5
  export function registerUploadFile(server, client) {
6
6
  server.registerTool('upload_file', {
7
7
  title: 'Upload a file to Wiro',
8
- description: 'Upload a remotely accessible file to Wiro. Most models '
9
- + 'accept source URLs directly, so use this only when the model schema '
10
- + 'requires a Wiro-hosted file or the same file will be reused.',
8
+ description: 'Copy a file from a public http(s) URL to Wiro, up to about 100 MB, '
9
+ + 'and get a Wiro link back. Model file fields take public URLs directly, so use '
10
+ + 'this only when the same file feeds several runs. A file that is only attached '
11
+ + 'in the chat has no URL: ask the user for a public link.',
11
12
  inputSchema: {
12
13
  url: z.string().url().describe('URL of the file to upload (image, audio, video, or document).'),
13
14
  file_name: z.string().optional().describe('Optional filename. Defaults to the URL filename.'),
@@ -1 +1 @@
1
- {"version":3,"file":"upload-file.js","sourceRoot":"","sources":["../../src/tools/upload-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-file.js","sourceRoot":"","sources":["../../src/tools/upload-file.ts"],"names":[],"mappings":"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"}