@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,529 @@
1
+ import { z } from 'zod';
2
+ import { asString, errorResult, errorText, isPlainObject, toInteger, } from '../utils/api.js';
3
+ import { agentStatusLabel, agentStatusOf, channelStatuses, chooseConnectionMode, connectionModeRequirements, credentialFieldShape, credentialGroup, credentialStatus, customSkillEntries, isWritableField, loadCredentialMeta, ownAppRedirectUri, prepareCredentialWrite, readUserAgent, redactSecrets, uploadFileName, usableConnectionModes, } from '../utils/agent-config.js';
4
+ import { fetchPublicFile } from '../utils/remote-file.js';
5
+ import { toAgentDetail } from '../utils/user-agent.js';
6
+ import { nextActionSchema } from './schemas.js';
7
+ const credentialValueSchema = z.union([
8
+ z.string(),
9
+ z.number(),
10
+ z.boolean(),
11
+ z.null(),
12
+ z.array(z.union([z.string(), z.number(), z.record(z.string(), z.unknown())])),
13
+ ]);
14
+ const credentialStatusSchema = z.object({
15
+ key: z.string(),
16
+ title: z.string(),
17
+ connected: z.boolean(),
18
+ filled: z.boolean(),
19
+ requiredMissing: z.boolean(),
20
+ optional: z.boolean(),
21
+ missingFields: z.array(z.string()),
22
+ });
23
+ const channelStatusSchema = z.object({
24
+ id: z.string(),
25
+ title: z.string(),
26
+ credential: z.string(),
27
+ enabled: z.boolean(),
28
+ missingFields: z.array(z.string()),
29
+ });
30
+ const itemFieldSchema = z.object({
31
+ field: z.string(),
32
+ label: z.string(),
33
+ type: z.string(),
34
+ required: z.boolean(),
35
+ pattern: z.string().optional(),
36
+ options: z.array(z.string()).optional(),
37
+ help: z.string().optional(),
38
+ });
39
+ const fieldDescriptionSchema = z.object({
40
+ field: z.string(),
41
+ label: z.string(),
42
+ type: z.string(),
43
+ valueFormat: z.string(),
44
+ required: z.boolean(),
45
+ writable: z.boolean(),
46
+ secret: z.boolean(),
47
+ modes: z.array(z.string()).optional(),
48
+ pattern: z.string().optional(),
49
+ options: z.array(z.string()).optional(),
50
+ // A list of objects lists its entries' keys, and the keys of a list inside an entry.
51
+ itemFields: z.array(itemFieldSchema.extend({ itemFields: z.array(itemFieldSchema).optional() })).optional(),
52
+ fileTypes: z.array(z.string()).optional(),
53
+ maxSizeKb: z.number().optional(),
54
+ help: z.string().optional(),
55
+ placeholder: z.string().optional(),
56
+ });
57
+ const connectionModeSchema = z.object({
58
+ mode: z.string(),
59
+ available: z.boolean(),
60
+ needsBrowser: z.boolean(),
61
+ fields: z.array(z.object({ field: z.string(), label: z.string(), isSet: z.boolean() })),
62
+ note: z.string(),
63
+ });
64
+ const outputSchema = {
65
+ agentGuid: z.string(),
66
+ mode: z.enum(['describe', 'write']),
67
+ credential: z.object({
68
+ key: z.string(),
69
+ title: z.string(),
70
+ kind: z.enum(['fields', 'sign_in', 'channel']),
71
+ fields: z.array(fieldDescriptionSchema),
72
+ connectionModes: z.array(connectionModeSchema).optional(),
73
+ ownAppRedirectUri: z.string().optional(),
74
+ channel: z.object({ id: z.string(), requiredFields: z.array(z.string()) }).optional(),
75
+ status: credentialStatusSchema.nullable(),
76
+ }).optional(),
77
+ applied: z.number().int().nonnegative().optional(),
78
+ uploadedFiles: z.array(z.object({
79
+ credential: z.string(),
80
+ field: z.string(),
81
+ url: z.string(),
82
+ })).optional(),
83
+ errors: z.array(z.string()).optional(),
84
+ credentials: z.array(credentialStatusSchema).optional(),
85
+ channels: z.array(channelStatusSchema).optional(),
86
+ agentStatus: z.string().optional(),
87
+ notes: z.array(z.string()),
88
+ nextAction: nextActionSchema.optional(),
89
+ };
90
+ function valueFormat(field) {
91
+ switch (credentialFieldShape(field)) {
92
+ case 'string-array':
93
+ return 'list of text values';
94
+ case 'object-array':
95
+ return field.itemSchema.length > 0
96
+ ? `list of objects with keys ${field.itemSchema.map(item => item.key).join(', ')}`
97
+ : 'list of objects';
98
+ case 'file':
99
+ return 'public http(s) URL of the file; it is uploaded';
100
+ case 'base64-file':
101
+ return 'the file content, as text or base64';
102
+ case 'boolean':
103
+ return 'true or false';
104
+ case 'number':
105
+ return 'number';
106
+ case 'select':
107
+ return field.options ? `one of: ${field.options.map(option => option || '(empty)').join(', ')}` : 'one option';
108
+ default:
109
+ if (field.encrypted || field.type === 'password')
110
+ return 'secret text';
111
+ if (field.type === 'email')
112
+ return 'email address';
113
+ if (field.type === 'url')
114
+ return 'URL';
115
+ return 'text';
116
+ }
117
+ }
118
+ // Entry keys are shown two levels deep: a list's entries, and a list inside an entry.
119
+ const ENTRY_KEY_DEPTH = 2;
120
+ function describeItem(item) {
121
+ return {
122
+ field: item.key,
123
+ label: item.label,
124
+ type: item.type,
125
+ required: item.required,
126
+ ...(item.pattern ? { pattern: item.pattern } : {}),
127
+ ...(item.options ? { options: item.options } : {}),
128
+ ...(item.help ? { help: item.help } : {}),
129
+ };
130
+ }
131
+ function describeField(field) {
132
+ return {
133
+ field: field.key,
134
+ label: field.label,
135
+ type: field.type,
136
+ valueFormat: valueFormat(field),
137
+ required: field.required,
138
+ writable: isWritableField(field),
139
+ secret: field.encrypted || field.type === 'password' || field.type === 'fileinput-base64',
140
+ ...(field.onlyInModes ? { modes: field.onlyInModes } : {}),
141
+ ...(field.pattern ? { pattern: field.pattern } : {}),
142
+ ...(field.options ? { options: field.options } : {}),
143
+ ...(field.itemSchema.length > 0
144
+ ? {
145
+ itemFields: field.itemSchema.map(item => ({
146
+ ...describeItem(item),
147
+ ...(item.itemSchema.length > 0 ? { itemFields: item.itemSchema.map(describeItem) } : {}),
148
+ })),
149
+ }
150
+ : {}),
151
+ ...(field.fileTypes ? { fileTypes: field.fileTypes } : {}),
152
+ ...(field.maxSizeKb !== undefined ? { maxSizeKb: field.maxSizeKb } : {}),
153
+ ...(field.help ? { help: field.help } : {}),
154
+ ...(field.placeholder ? { placeholder: field.placeholder } : {}),
155
+ };
156
+ }
157
+ function credentialKind(meta) {
158
+ if (meta.channel)
159
+ return 'channel';
160
+ return meta.oauth ? 'sign_in' : 'fields';
161
+ }
162
+ /** A field's line in the Fields list; a list of objects the user fills is followed by the keys of its entries. */
163
+ function fieldLines(field, depth = 0) {
164
+ const entries = credentialFieldShape(field) === 'object-array' && depth < ENTRY_KEY_DEPTH && isWritableField(field)
165
+ ? field.itemSchema
166
+ : [];
167
+ const flags = [
168
+ entries.length > 0 ? 'list of objects' : valueFormat(field),
169
+ field.required ? 'required' : 'optional',
170
+ !isWritableField(field) ? (field.platformManaged ? 'managed by Wiro' : 'filled by the connection') : null,
171
+ field.onlyInModes ? `mode ${field.onlyInModes.join('/')}` : null,
172
+ field.pattern ? `pattern ${field.pattern}` : null,
173
+ ].filter(Boolean).join(', ');
174
+ const help = field.help ? `: ${field.help}` : '';
175
+ const lead = entries.length > 0 ? `${help ? ' ' : '. '}Each entry:` : '';
176
+ return [
177
+ `${' '.repeat(depth)}- \`${field.key}\` ${field.label} (${flags})${help}${lead}`,
178
+ ...entries.flatMap(entry => fieldLines(entry, depth + 1)),
179
+ ];
180
+ }
181
+ function keyList(keys) {
182
+ return keys.length > 1 ? `${keys.slice(0, -1).join(', ')} and ${keys[keys.length - 1]}` : keys.join('');
183
+ }
184
+ function afterWriteNote(status) {
185
+ switch (status) {
186
+ case 1:
187
+ return 'The agent restarts to load the new values, which takes about a minute.';
188
+ case 2:
189
+ case 3:
190
+ return 'The agent is starting and loads the new values.';
191
+ case 4:
192
+ return 'The agent restarts shortly to load the new values.';
193
+ case 6:
194
+ return 'The agent still needs setup before it can start; get_my_agent shows what is missing.';
195
+ case null:
196
+ return 'Check the agent with get_my_agent.';
197
+ default:
198
+ return `The agent is ${agentStatusLabel(status)}; the values are used when it starts.`;
199
+ }
200
+ }
201
+ /** When the agent loads the values, and the credentials its setup still waits for, at any status. */
202
+ function afterWriteNotes(status, missing) {
203
+ if (missing.length === 0)
204
+ return [afterWriteNote(status)];
205
+ // A sign-in is completed with connect_agent_oauth, other credentials by saving their fields.
206
+ const fields = missing.filter(item => !item.oauth).map(item => item.title);
207
+ const signIns = missing.filter(item => item.oauth).map(item => item.title);
208
+ const steps = fields.length > 0 && signIns.length > 0
209
+ ? `Set ${keyList(fields)} with set_agent_credentials, connect ${keyList(signIns)} with connect_agent_oauth, then check with get_my_agent.`
210
+ : fields.length > 0
211
+ ? `Set ${fields.length > 1 ? 'them' : 'it'} with set_agent_credentials, then check with get_my_agent.`
212
+ : `Connect ${signIns.length > 1 ? 'them' : 'it'} with connect_agent_oauth, then check with get_my_agent.`;
213
+ const setup = `Setup is not finished: still missing ${keyList(missing.map(item => item.title))}. ${steps}`;
214
+ // At status 6 the general note says the same without the names.
215
+ return status === 6 ? [setup] : [afterWriteNote(status), setup];
216
+ }
217
+ function errorMessages(body) {
218
+ return (body.errors ?? [])
219
+ .map(error => (typeof error?.message === 'string' ? error.message.trim() : ''))
220
+ .filter(Boolean);
221
+ }
222
+ function connectModeFor(meta, written, authMethod) {
223
+ if (authMethod)
224
+ return authMethod;
225
+ const probe = meta.oauth?.directProbe;
226
+ if (probe && probe.requiredFields.some(field => written.has(field)))
227
+ return probe.mode;
228
+ if (meta.fields.some(field => written.has(field.key) && field.onlyInModes?.includes('own')))
229
+ return 'own';
230
+ return undefined;
231
+ }
232
+ export function registerSetAgentCredentials(server, client) {
233
+ server.registerTool('set_agent_credentials', {
234
+ title: 'Set agent credentials',
235
+ description: 'Save credential fields on a deployed agent: API keys, bot tokens, account IDs, '
236
+ + 'allow lists, your own OAuth app keys, or the token for a browser-free connection. '
237
+ + 'Call with only credential (no fields) to see that credential\'s field keys, formats, '
238
+ + 'which are required, how it connects, and what is already set on this agent; nothing is '
239
+ + 'written then. Skip that call when list_agent_skills with name already showed the fields. '
240
+ + 'Then call with fields. Every field is checked before anything '
241
+ + 'is written; unknown or Wiro-managed fields are refused. A key file, such as a Google '
242
+ + 'service account JSON or an App Store .p8 key, takes the file\'s text, never a link: never '
243
+ + 'ask for a public link to a key (the user can also upload it on the agent\'s page in the '
244
+ + 'Wiro dashboard). Other file fields take a public URL and the file is uploaded. '
245
+ + 'Values are never echoed back. A running agent restarts to load '
246
+ + 'the values. Channels such as Telegram, Slack and Discord turn on by themselves once all '
247
+ + 'their required fields are set, and turn off when one is cleared. Saving a credential can '
248
+ + 'switch scheduled tasks that need it back on. Sign-in integrations (such as Google Ads, YouTube, '
249
+ + 'Meta and HubSpot) are then connected with connect_agent_oauth; Gmail, Google Calendar and Google '
250
+ + 'Drive are not sign-ins and are set here. Only save a Wiro project API '
251
+ + 'key (credential "wiro") that the user gave you: model runs are billed to its wallet. '
252
+ + 'The agents playbook (get_playbook) has the full setup walkthrough.',
253
+ inputSchema: {
254
+ agent_guid: z.string().min(1).describe('The deployed agent\'s guid, from list_my_agents.'),
255
+ credential: z.string().optional()
256
+ .describe('Describe mode: a credential key such as "telegram" or "google-ads". Used when fields is empty.'),
257
+ fields: z.array(z.object({
258
+ credential: z.string().min(1).describe('Credential key, for example "telegram", "gmail" or "meta-ads".'),
259
+ field: z.string().min(1).describe('Field key inside that credential, for example "bottoken". Use "authmethod" to pick a connection mode (for example "api_key").'),
260
+ value: credentialValueSchema.describe('The value. Lists are JSON arrays; a list of objects replaces the whole list. A key file takes the file\'s text; other files take a public http(s) URL. An empty value clears an optional field. A required field cannot be cleared, except on a chat channel, which then turns off.'),
261
+ parent_field: z.string().optional().describe('Only to change one entry of a list field: that list field\'s key, for example "groups".'),
262
+ ordinal: z.number().int().min(0).optional().describe('With parent_field: the entry\'s position in the list, from 0.'),
263
+ })).max(100).optional()
264
+ .describe('Fields to save. Send the fields of one credential together.'),
265
+ },
266
+ outputSchema,
267
+ annotations: {
268
+ readOnlyHint: false,
269
+ destructiveHint: true,
270
+ idempotentHint: false,
271
+ openWorldHint: true,
272
+ },
273
+ }, async ({ agent_guid, credential, fields }, extra) => {
274
+ const secrets = [];
275
+ try {
276
+ if (!fields || fields.length === 0) {
277
+ if (!credential?.trim()) {
278
+ return errorResult(new Error('Pass fields to save, or credential to see what that credential needs.'));
279
+ }
280
+ return await describeCredential(client, agent_guid, credential.trim(), extra.signal);
281
+ }
282
+ const keys = [...new Set(fields.map(field => field.credential.trim()))];
283
+ const metas = new Map();
284
+ for (const key of keys)
285
+ metas.set(key, await loadCredentialMeta(client, key, extra.signal));
286
+ const prepared = prepareCredentialWrite(fields, metas);
287
+ secrets.push(...prepared.secrets);
288
+ if (prepared.errors.length > 0) {
289
+ return errorResult(new Error(redactSecrets(`Nothing was saved:\n\n- ${prepared.errors.join('\n- ')}`, secrets)));
290
+ }
291
+ // Files are fetched before anything is written, so a bad URL leaves the agent untouched.
292
+ const downloads = [];
293
+ for (const file of prepared.files) {
294
+ const remote = await fetchPublicFile(file.url, { maxBytes: file.maxBytes });
295
+ const contentType = (remote.contentType ?? '').split(';')[0]?.trim().toLowerCase() ?? '';
296
+ if (file.fileTypes.length > 0 && !file.fileTypes.includes(contentType)) {
297
+ return errorResult(new Error(`Nothing was saved: ${file.label} must be one of ${file.fileTypes.join(', ')}, but the file at ${file.url} is ${contentType || 'of an unknown type'}.`));
298
+ }
299
+ downloads.push({ file, remote, contentType });
300
+ }
301
+ const errors = [];
302
+ const notes = [];
303
+ let applied = 0;
304
+ if (prepared.apiFields.length > 0) {
305
+ const body = await client.post('/UserAgent/CredentialUpsert', {
306
+ useragentguid: agent_guid,
307
+ fields: prepared.apiFields,
308
+ }, extra.signal);
309
+ applied = toInteger(body.applied);
310
+ if (body.result !== true) {
311
+ const messages = errorMessages(body);
312
+ errors.push(...(messages.length > 0 ? messages : ['The credentials were not saved.']));
313
+ if (applied === 0) {
314
+ return errorResult(new Error(redactSecrets(`Nothing was saved:\n\n- ${errors.join('\n- ')}`, secrets)));
315
+ }
316
+ }
317
+ const updated = Array.isArray(body.twilioWebhooksUpdated) ? body.twilioWebhooksUpdated.length : 0;
318
+ const failed = Array.isArray(body.twilioWebhooksFailed) ? body.twilioWebhooksFailed.filter(isPlainObject) : [];
319
+ if (updated > 0)
320
+ notes.push(`Calls to ${updated} Twilio number${updated === 1 ? '' : 's'} now reach the agent.`);
321
+ if (failed.length > 0) {
322
+ notes.push(`Twilio could not be updated for ${failed.length} number${failed.length === 1 ? '' : 's'}: ${asString(failed[0]?.error) ?? 'unknown error'}. Save the Twilio fields again to retry.`);
323
+ }
324
+ if (asString(body.twilioWebhookSkipped))
325
+ notes.push(`Twilio call routing was not updated: ${asString(body.twilioWebhookSkipped)}.`);
326
+ if (asString(body.twilioWebhookError))
327
+ notes.push(`Twilio call routing failed: ${asString(body.twilioWebhookError)}.`);
328
+ }
329
+ const uploadedFiles = [];
330
+ if (errors.length === 0) {
331
+ for (const { file, remote, contentType } of downloads) {
332
+ const form = new FormData();
333
+ form.append('useragentguid', agent_guid);
334
+ form.append('credentialkey', file.credential);
335
+ form.append('fieldname', file.field);
336
+ form.append('file', new Blob([remote.data], contentType ? { type: contentType } : {}), uploadFileName(file.url, file.field, contentType));
337
+ const body = await client.postForm('/UserAgent/CredentialFileUpload', form, extra.signal);
338
+ if (body.result === true && asString(body.url)) {
339
+ uploadedFiles.push({ credential: file.credential, field: file.field, url: asString(body.url) });
340
+ applied += 1;
341
+ }
342
+ else {
343
+ errors.push(`${file.label}: ${errorMessages(body).join(', ') || 'the upload failed'}.`);
344
+ }
345
+ }
346
+ }
347
+ else if (downloads.length > 0) {
348
+ notes.push('Files were not uploaded because the other fields failed.');
349
+ }
350
+ let row = null;
351
+ try {
352
+ row = await readUserAgent(client, agent_guid, extra.signal);
353
+ }
354
+ catch {
355
+ notes.push('The agent could not be read afterwards; check it with get_my_agent.');
356
+ }
357
+ const status = row ? agentStatusOf(row) : null;
358
+ const statuses = row
359
+ ? keys.map(key => credentialStatus(row, key, metas.get(key))).filter(entry => entry !== null)
360
+ : [];
361
+ const channels = row ? channelStatuses(row) : [];
362
+ for (const channel of channels.filter(entry => keys.includes(entry.credential))) {
363
+ notes.push(channel.enabled
364
+ ? `${channel.title} is on.`
365
+ : `${channel.title} turns on once these are set: ${channel.missingFields.join(', ') || 'its required fields'}.`);
366
+ }
367
+ if (row && customSkillEntries(row).some(entry => entry.kind === 'scheduled_task'
368
+ && entry.requiresCredentials.some(key => keys.includes(key)))) {
369
+ notes.push('Scheduled tasks that need these credentials are switched on or off to match, including ones that were turned off by hand.');
370
+ }
371
+ if (keys.includes('wiro')) {
372
+ notes.push('Model runs started by this agent are billed to the wallet of the workspace that owns that project key.');
373
+ }
374
+ // The credentials the setup still waits for, named as get_my_agent names them.
375
+ const setup = row ? toAgentDetail(row) : null;
376
+ const stillMissing = setup?.setupRequired ? setup.missingCredentials : [];
377
+ notes.unshift(...afterWriteNotes(status, stillMissing));
378
+ // Connect is offered only once the mode it uses has every field saved, as
379
+ // describe does; the agent read back after the write says which are.
380
+ let nextAction;
381
+ for (const key of keys) {
382
+ const meta = metas.get(key);
383
+ const state = statuses.find(entry => entry.key === key);
384
+ if (!meta?.oauth || state?.connected || !row)
385
+ continue;
386
+ const written = new Set(prepared.apiFields.filter(field => field.credentialkey === key).map(field => field.fieldname));
387
+ const authMethod = prepared.apiFields.find(field => field.credentialkey === key && field.fieldname === 'authmethod')?.fieldvalue;
388
+ const modes = connectionModeRequirements(meta, credentialGroup(row, key));
389
+ const mode = connectModeFor(meta, written, typeof authMethod === 'string' ? authMethod : undefined)
390
+ ?? chooseConnectionMode(meta, modes);
391
+ if (!mode || (mode === 'api_key' && !meta.oauth.directProbe))
392
+ continue;
393
+ const missing = mode === 'wiro'
394
+ ? []
395
+ : (modes.find(candidate => candidate.mode === mode)?.fields ?? []).filter(field => !field.isSet);
396
+ if (missing.length > 0) {
397
+ notes.push(`Mode ${mode} needs ${keyList(missing.map(field => field.field))} saved first.`);
398
+ continue;
399
+ }
400
+ nextAction = {
401
+ tool: 'connect_agent_oauth',
402
+ arguments: { action: 'connect', agent_guid, credential: key, mode },
403
+ reason: `Connect ${meta.title} now that its fields are saved.`,
404
+ };
405
+ break;
406
+ }
407
+ const lines = [
408
+ errors.length > 0 ? '## Credentials partly saved' : '## Credentials saved',
409
+ '',
410
+ `**Agent:** \`${agent_guid}\`${status !== null ? ` (${agentStatusLabel(status)})` : ''}`,
411
+ `**Fields saved:** ${applied}`,
412
+ ...uploadedFiles.map(file => `**Uploaded:** ${file.credential}.${file.field}: ${file.url}`),
413
+ ...statuses.map(entry => `**${entry.title}:** ${entry.connected ? 'connected' : entry.filled ? 'set' : 'not complete'}${entry.missingFields.length > 0 ? `; missing ${entry.missingFields.join(', ')}` : ''}`),
414
+ ...(errors.length > 0 ? ['', '### Problems', '', ...errors.map(error => `- ${error}`)] : []),
415
+ '',
416
+ ...notes.map(note => `- ${note}`),
417
+ ];
418
+ return {
419
+ content: [{ type: 'text', text: redactSecrets(lines.join('\n'), secrets) }],
420
+ structuredContent: {
421
+ agentGuid: agent_guid,
422
+ mode: 'write',
423
+ applied,
424
+ uploadedFiles,
425
+ errors: errors.map(error => redactSecrets(error, secrets)),
426
+ credentials: statuses,
427
+ channels,
428
+ ...(status !== null ? { agentStatus: agentStatusLabel(status) } : {}),
429
+ notes: notes.map(note => redactSecrets(note, secrets)),
430
+ ...(nextAction ? { nextAction } : {}),
431
+ },
432
+ ...(errors.length > 0 ? { isError: true } : {}),
433
+ };
434
+ }
435
+ catch (error) {
436
+ return errorResult(new Error(redactSecrets(errorText(error), secrets)));
437
+ }
438
+ });
439
+ }
440
+ async function describeCredential(client, agentGuid, key, signal) {
441
+ const meta = await loadCredentialMeta(client, key, signal);
442
+ if (!meta) {
443
+ return errorResult(new Error(`Unknown credential "${key}". The credential keys a skill uses are listed by list_agent_skills and get_my_agent.`));
444
+ }
445
+ const notes = [];
446
+ let row = null;
447
+ try {
448
+ row = await readUserAgent(client, agentGuid, signal);
449
+ }
450
+ catch (error) {
451
+ notes.push(`The agent could not be read: ${errorText(error)}`);
452
+ }
453
+ const group = row ? credentialGroup(row, key) : null;
454
+ const status = row ? credentialStatus(row, key, meta) : null;
455
+ const kind = credentialKind(meta);
456
+ const modes = meta.oauth ? connectionModeRequirements(meta, group) : undefined;
457
+ const redirectUri = meta.oauth && meta.connectionModes.includes('own') ? ownAppRedirectUri(meta) : undefined;
458
+ const fields = meta.fields.map(describeField);
459
+ if (meta.platformOnly)
460
+ notes.push(`${meta.title} is managed by Wiro; there is nothing to set.`);
461
+ if (meta.channel) {
462
+ notes.push(`${meta.title} turns on by itself once these are set: ${meta.channel.requiredFields.map(field => meta.fields.find(candidate => candidate.key === field)?.label ?? field).join(', ')}. Clearing one turns it off.`);
463
+ }
464
+ const usableModes = usableConnectionModes(meta);
465
+ if (usableModes.length > 0) {
466
+ notes.push(`To choose how it connects, set field authmethod to one of: ${usableModes.join(', ')}.`);
467
+ }
468
+ if (key === 'wiro') {
469
+ notes.push('The value is a Wiro project API key. Model runs started by the agent are billed to the wallet of the workspace that owns that project. Only use a key the user gave you.');
470
+ }
471
+ let nextAction;
472
+ if (meta.oauth && modes && !status?.connected) {
473
+ const mode = chooseConnectionMode(meta, modes);
474
+ if (mode && !(mode === 'api_key' && !meta.oauth.directProbe)) {
475
+ // The only usable mode is chosen even when its fields are not saved yet.
476
+ const missing = mode === 'wiro'
477
+ ? []
478
+ : (modes.find(candidate => candidate.mode === mode)?.fields ?? []).filter(field => !field.isSet);
479
+ if (missing.length > 0) {
480
+ notes.push(`Mode ${mode} needs ${keyList(missing.map(field => field.field))} saved first.`);
481
+ }
482
+ else {
483
+ nextAction = {
484
+ tool: 'connect_agent_oauth',
485
+ arguments: { action: 'connect', agent_guid: agentGuid, credential: key, mode },
486
+ reason: mode === 'wiro'
487
+ ? `Start the ${meta.title} sign-in; the user approves it in a browser.`
488
+ : `Everything mode ${mode} needs is saved; connect ${meta.title}.`,
489
+ };
490
+ }
491
+ }
492
+ }
493
+ const lines = [
494
+ `## ${meta.title} (${key})`,
495
+ '',
496
+ status
497
+ ? `**On this agent:** ${status.connected ? 'connected' : kind === 'sign_in' ? 'not connected' : status.filled ? 'set' : 'not complete'}${status.missingFields.length > 0 ? `; missing ${status.missingFields.join(', ')}` : ''}`
498
+ : '**On this agent:** not set yet',
499
+ '',
500
+ '### Fields',
501
+ '',
502
+ ...meta.fields.flatMap(field => fieldLines(field)),
503
+ ...(modes
504
+ ? ['', '### How it connects', '', ...modes.filter(mode => mode.available).map(mode => `- **${mode.mode}**: ${mode.note}${mode.fields.length > 0 ? ` Fields: ${mode.fields.map(field => `${field.field}${field.isSet ? ' (set)' : ''}`).join(', ')}.` : ''}`)]
505
+ : []),
506
+ ...(notes.length > 0 ? ['', ...notes.map(note => `- ${note}`)] : []),
507
+ ];
508
+ return {
509
+ content: [{ type: 'text', text: lines.join('\n') }],
510
+ structuredContent: {
511
+ agentGuid,
512
+ mode: 'describe',
513
+ credential: {
514
+ key,
515
+ title: meta.title,
516
+ kind,
517
+ fields,
518
+ ...(modes ? { connectionModes: modes } : {}),
519
+ ...(redirectUri ? { ownAppRedirectUri: redirectUri } : {}),
520
+ ...(meta.channel ? { channel: meta.channel } : {}),
521
+ status,
522
+ },
523
+ ...(row ? { agentStatus: agentStatusLabel(agentStatusOf(row)) } : {}),
524
+ notes,
525
+ ...(nextAction ? { nextAction } : {}),
526
+ },
527
+ };
528
+ }
529
+ //# sourceMappingURL=set-agent-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-agent-credentials.js","sourceRoot":"","sources":["../../src/tools/set-agent-credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { WiroClient } from '../client.js';
3
+ export declare function registerUpdateAgent(server: McpServer, client: WiroClient): void;
4
+ //# sourceMappingURL=update-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-agent.d.ts","sourceRoot":"","sources":["../../src/tools/update-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAiC/C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAiK/E"}