@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.
Files changed (283) hide show
  1. package/README.md +183 -16
  2. package/dist/client.d.ts +16 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +126 -24
  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 +29 -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 +667 -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 +15 -2
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +12 -7
  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 +601 -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 +289 -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 +102 -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 +145 -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 +463 -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 +112 -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 +228 -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 +128 -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 +138 -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 +117 -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 +1 -1
  103. package/dist/tools/get-task-price.d.ts.map +1 -1
  104. package/dist/tools/get-task-price.js +64 -16
  105. package/dist/tools/get-task-price.js.map +1 -1
  106. package/dist/tools/get-task.d.ts.map +1 -1
  107. package/dist/tools/get-task.js +26 -9
  108. package/dist/tools/get-task.js.map +1 -1
  109. package/dist/tools/get-workflow.d.ts +9 -0
  110. package/dist/tools/get-workflow.d.ts.map +1 -0
  111. package/dist/tools/get-workflow.js +105 -0
  112. package/dist/tools/get-workflow.js.map +1 -0
  113. package/dist/tools/index.d.ts +63 -2
  114. package/dist/tools/index.d.ts.map +1 -1
  115. package/dist/tools/index.js +131 -14
  116. package/dist/tools/index.js.map +1 -1
  117. package/dist/tools/kill-task.d.ts.map +1 -1
  118. package/dist/tools/kill-task.js +10 -6
  119. package/dist/tools/kill-task.js.map +1 -1
  120. package/dist/tools/list-agent-skills.d.ts +4 -0
  121. package/dist/tools/list-agent-skills.d.ts.map +1 -0
  122. package/dist/tools/list-agent-skills.js +242 -0
  123. package/dist/tools/list-agent-skills.js.map +1 -0
  124. package/dist/tools/list-agent-templates.d.ts +4 -0
  125. package/dist/tools/list-agent-templates.d.ts.map +1 -0
  126. package/dist/tools/list-agent-templates.js +110 -0
  127. package/dist/tools/list-agent-templates.js.map +1 -0
  128. package/dist/tools/list-my-agents.d.ts +4 -0
  129. package/dist/tools/list-my-agents.d.ts.map +1 -0
  130. package/dist/tools/list-my-agents.js +93 -0
  131. package/dist/tools/list-my-agents.js.map +1 -0
  132. package/dist/tools/list-studio-results.d.ts +4 -0
  133. package/dist/tools/list-studio-results.d.ts.map +1 -0
  134. package/dist/tools/list-studio-results.js +95 -0
  135. package/dist/tools/list-studio-results.js.map +1 -0
  136. package/dist/tools/list-tasks.d.ts.map +1 -1
  137. package/dist/tools/list-tasks.js +7 -5
  138. package/dist/tools/list-tasks.js.map +1 -1
  139. package/dist/tools/list-workflow-runs.d.ts +4 -0
  140. package/dist/tools/list-workflow-runs.d.ts.map +1 -0
  141. package/dist/tools/list-workflow-runs.js +110 -0
  142. package/dist/tools/list-workflow-runs.js.map +1 -0
  143. package/dist/tools/list-workflows.d.ts +4 -0
  144. package/dist/tools/list-workflows.d.ts.map +1 -0
  145. package/dist/tools/list-workflows.js +143 -0
  146. package/dist/tools/list-workflows.js.map +1 -0
  147. package/dist/tools/manage-agent-billing.d.ts +4 -0
  148. package/dist/tools/manage-agent-billing.d.ts.map +1 -0
  149. package/dist/tools/manage-agent-billing.js +788 -0
  150. package/dist/tools/manage-agent-billing.js.map +1 -0
  151. package/dist/tools/manage-agent-custom-skill.d.ts +4 -0
  152. package/dist/tools/manage-agent-custom-skill.d.ts.map +1 -0
  153. package/dist/tools/manage-agent-custom-skill.js +531 -0
  154. package/dist/tools/manage-agent-custom-skill.js.map +1 -0
  155. package/dist/tools/recommend-model.d.ts.map +1 -1
  156. package/dist/tools/recommend-model.js +6 -5
  157. package/dist/tools/recommend-model.js.map +1 -1
  158. package/dist/tools/resume-workflow-run.d.ts +4 -0
  159. package/dist/tools/resume-workflow-run.d.ts.map +1 -0
  160. package/dist/tools/resume-workflow-run.js +69 -0
  161. package/dist/tools/resume-workflow-run.js.map +1 -0
  162. package/dist/tools/run-model.d.ts.map +1 -1
  163. package/dist/tools/run-model.js +40 -4
  164. package/dist/tools/run-model.js.map +1 -1
  165. package/dist/tools/run-workflow.d.ts +6 -0
  166. package/dist/tools/run-workflow.d.ts.map +1 -0
  167. package/dist/tools/run-workflow.js +132 -0
  168. package/dist/tools/run-workflow.js.map +1 -0
  169. package/dist/tools/save-workflow-from-agent.d.ts +4 -0
  170. package/dist/tools/save-workflow-from-agent.d.ts.map +1 -0
  171. package/dist/tools/save-workflow-from-agent.js +280 -0
  172. package/dist/tools/save-workflow-from-agent.js.map +1 -0
  173. package/dist/tools/schemas.d.ts +182 -115
  174. package/dist/tools/schemas.d.ts.map +1 -1
  175. package/dist/tools/schemas.js +26 -6
  176. package/dist/tools/schemas.js.map +1 -1
  177. package/dist/tools/search-models.d.ts.map +1 -1
  178. package/dist/tools/search-models.js +9 -6
  179. package/dist/tools/search-models.js.map +1 -1
  180. package/dist/tools/send-agent-message.d.ts +4 -0
  181. package/dist/tools/send-agent-message.d.ts.map +1 -0
  182. package/dist/tools/send-agent-message.js +156 -0
  183. package/dist/tools/send-agent-message.js.map +1 -0
  184. package/dist/tools/set-agent-credentials.d.ts +4 -0
  185. package/dist/tools/set-agent-credentials.d.ts.map +1 -0
  186. package/dist/tools/set-agent-credentials.js +540 -0
  187. package/dist/tools/set-agent-credentials.js.map +1 -0
  188. package/dist/tools/update-agent.d.ts +4 -0
  189. package/dist/tools/update-agent.d.ts.map +1 -0
  190. package/dist/tools/update-agent.js +179 -0
  191. package/dist/tools/update-agent.js.map +1 -0
  192. package/dist/tools/update-workflow.d.ts +201 -0
  193. package/dist/tools/update-workflow.d.ts.map +1 -0
  194. package/dist/tools/update-workflow.js +168 -0
  195. package/dist/tools/update-workflow.js.map +1 -0
  196. package/dist/tools/upload-file.d.ts.map +1 -1
  197. package/dist/tools/upload-file.js +12 -7
  198. package/dist/tools/upload-file.js.map +1 -1
  199. package/dist/tools/wait-for-task.d.ts.map +1 -1
  200. package/dist/tools/wait-for-task.js +20 -2
  201. package/dist/tools/wait-for-task.js.map +1 -1
  202. package/dist/tools/wait-for-workflow-run.d.ts +259 -0
  203. package/dist/tools/wait-for-workflow-run.d.ts.map +1 -0
  204. package/dist/tools/wait-for-workflow-run.js +190 -0
  205. package/dist/tools/wait-for-workflow-run.js.map +1 -0
  206. package/dist/types.d.ts +18 -0
  207. package/dist/types.d.ts.map +1 -1
  208. package/dist/types.js.map +1 -1
  209. package/dist/utils/agent-catalog.d.ts +1256 -0
  210. package/dist/utils/agent-catalog.d.ts.map +1 -0
  211. package/dist/utils/agent-catalog.js +387 -0
  212. package/dist/utils/agent-catalog.js.map +1 -0
  213. package/dist/utils/agent-config.d.ts +443 -0
  214. package/dist/utils/agent-config.d.ts.map +1 -0
  215. package/dist/utils/agent-config.js +1676 -0
  216. package/dist/utils/agent-config.js.map +1 -0
  217. package/dist/utils/agent-message.d.ts +112 -0
  218. package/dist/utils/agent-message.d.ts.map +1 -0
  219. package/dist/utils/agent-message.js +243 -0
  220. package/dist/utils/agent-message.js.map +1 -0
  221. package/dist/utils/agent-targets.d.ts +76 -0
  222. package/dist/utils/agent-targets.d.ts.map +1 -0
  223. package/dist/utils/agent-targets.js +412 -0
  224. package/dist/utils/agent-targets.js.map +1 -0
  225. package/dist/utils/agent-turns.d.ts +354 -0
  226. package/dist/utils/agent-turns.d.ts.map +1 -0
  227. package/dist/utils/agent-turns.js +660 -0
  228. package/dist/utils/agent-turns.js.map +1 -0
  229. package/dist/utils/api.d.ts +40 -0
  230. package/dist/utils/api.d.ts.map +1 -0
  231. package/dist/utils/api.js +111 -0
  232. package/dist/utils/api.js.map +1 -0
  233. package/dist/utils/format.d.ts +65 -2
  234. package/dist/utils/format.d.ts.map +1 -1
  235. package/dist/utils/format.js +583 -81
  236. package/dist/utils/format.js.map +1 -1
  237. package/dist/utils/json-schema-dialect.d.ts +8 -1
  238. package/dist/utils/json-schema-dialect.d.ts.map +1 -1
  239. package/dist/utils/json-schema-dialect.js +23 -1
  240. package/dist/utils/json-schema-dialect.js.map +1 -1
  241. package/dist/utils/media.d.ts +28 -0
  242. package/dist/utils/media.d.ts.map +1 -0
  243. package/dist/utils/media.js +65 -0
  244. package/dist/utils/media.js.map +1 -0
  245. package/dist/utils/poll.d.ts +39 -0
  246. package/dist/utils/poll.d.ts.map +1 -0
  247. package/dist/utils/poll.js +111 -0
  248. package/dist/utils/poll.js.map +1 -0
  249. package/dist/utils/remote-file.js +2 -2
  250. package/dist/utils/remote-file.js.map +1 -1
  251. package/dist/utils/structured.d.ts +4 -0
  252. package/dist/utils/structured.d.ts.map +1 -1
  253. package/dist/utils/structured.js +23 -7
  254. package/dist/utils/structured.js.map +1 -1
  255. package/dist/utils/studio-runs.d.ts +87 -0
  256. package/dist/utils/studio-runs.d.ts.map +1 -0
  257. package/dist/utils/studio-runs.js +167 -0
  258. package/dist/utils/studio-runs.js.map +1 -0
  259. package/dist/utils/user-agent.d.ts +1199 -0
  260. package/dist/utils/user-agent.d.ts.map +1 -0
  261. package/dist/utils/user-agent.js +897 -0
  262. package/dist/utils/user-agent.js.map +1 -0
  263. package/dist/utils/workflow-agent.d.ts +151 -0
  264. package/dist/utils/workflow-agent.d.ts.map +1 -0
  265. package/dist/utils/workflow-agent.js +292 -0
  266. package/dist/utils/workflow-agent.js.map +1 -0
  267. package/dist/utils/workflow-artifacts.d.ts +160 -0
  268. package/dist/utils/workflow-artifacts.d.ts.map +1 -0
  269. package/dist/utils/workflow-artifacts.js +801 -0
  270. package/dist/utils/workflow-artifacts.js.map +1 -0
  271. package/dist/utils/workflow-save.d.ts +120 -0
  272. package/dist/utils/workflow-save.d.ts.map +1 -0
  273. package/dist/utils/workflow-save.js +728 -0
  274. package/dist/utils/workflow-save.js.map +1 -0
  275. package/dist/utils/workflow.d.ts +564 -0
  276. package/dist/utils/workflow.d.ts.map +1 -0
  277. package/dist/utils/workflow.js +712 -0
  278. package/dist/utils/workflow.js.map +1 -0
  279. package/dist/utils/workspace.d.ts +38 -0
  280. package/dist/utils/workspace.d.ts.map +1 -0
  281. package/dist/utils/workspace.js +90 -0
  282. package/dist/utils/workspace.js.map +1 -0
  283. package/package.json +6 -4
@@ -0,0 +1,280 @@
1
+ import { z } from 'zod';
2
+ import { errorResult } from '../utils/api.js';
3
+ import { extractReply } from '../utils/agent-message.js';
4
+ import { readAgentMessage, resolveAgentTarget } from '../utils/agent-targets.js';
5
+ import { parseAgentChatArtifacts } from '../utils/workflow-artifacts.js';
6
+ import { formatWorkflowInputs, parseWorkflowSlug, workflowUrl } from '../utils/workflow.js';
7
+ import { createWorkflow, findHiddenValues, prepareIssuesText, tagProblem, updateWorkflow, WorkflowConflictError, WorkflowPrepareError, } from '../utils/workflow-save.js';
8
+ import { formatUpdatedWorkflow, updatedWorkflowSchema } from './update-workflow.js';
9
+ // Remembers for an hour which proposal was already saved as a new workflow, so
10
+ // a repeated call (a retry, or the model asking twice) does not create a copy
11
+ // such as "Title-1". A create in progress is shared with any concurrent call
12
+ // for the same proposal.
13
+ const CREATED = new Map();
14
+ const CREATED_TTL_MS = 60 * 60 * 1000;
15
+ const CREATED_MAX = 500;
16
+ function trimCreated() {
17
+ while (CREATED.size > CREATED_MAX) {
18
+ const oldest = CREATED.keys().next().value;
19
+ if (oldest === undefined)
20
+ break;
21
+ CREATED.delete(oldest);
22
+ }
23
+ }
24
+ function pickArtifact(text, artifactHash) {
25
+ const parsed = parseAgentChatArtifacts(text);
26
+ const segments = parsed.artifacts;
27
+ const describe = (segment) => segment.issues.slice(0, 4).map(issue => issue.message).join('; ');
28
+ if (artifactHash) {
29
+ const segment = segments.find(candidate => candidate.artifactHash === artifactHash);
30
+ if (!segment)
31
+ throw new Error('That reply has no workflow with this artifact_hash. Read the reply again with get_agent_message.');
32
+ if (segment.status !== 'valid' || segment.issues.length > 0 || !segment.artifact) {
33
+ throw new Error(`The Workflow Agent's proposal is not valid (${describe(segment)}). Send the problems back to the Workflow Agent in the same session and ask it to fix them.`);
34
+ }
35
+ return { artifact: segment.artifact, hash: artifactHash };
36
+ }
37
+ // Only a segment the parser marked valid with no issues counts; an oversize
38
+ // reply keeps its artifact object while being marked unusable.
39
+ const valid = segments.filter(segment => segment.status === 'valid' && segment.issues.length === 0 && segment.artifact && segment.artifactHash);
40
+ if (valid.length === 1)
41
+ return { artifact: valid[0].artifact, hash: valid[0].artifactHash };
42
+ if (valid.length > 1) {
43
+ throw new Error(`That reply proposes ${valid.length} workflows. Pass artifact_hash to choose one: `
44
+ + valid.map(segment => `${segment.artifactHash} ("${segment.artifact.title}")`).join(', '));
45
+ }
46
+ const invalid = segments.find(segment => segment.status !== 'valid' || segment.issues.length > 0);
47
+ if (invalid) {
48
+ throw new Error(`The Workflow Agent's proposal is not valid (${describe(invalid) || invalid.status}). Send the problems back to the Workflow Agent in the same session and ask it to fix them.`);
49
+ }
50
+ throw new Error('That reply does not contain a workflow proposal.');
51
+ }
52
+ /** Saves the proposal as a new workflow once, sharing an in-flight create. */
53
+ async function createOnce(client, key, create, signal) {
54
+ const entry = CREATED.get(key);
55
+ if (entry && Date.now() - entry.at <= CREATED_TTL_MS) {
56
+ if (entry.pending)
57
+ return { saved: await entry.pending };
58
+ if (entry.fullSlug) {
59
+ const detail = await client.post('/Workflow/Detail', { slug: entry.fullSlug }, signal);
60
+ if (detail.result === true && Array.isArray(detail.workflow) && detail.workflow.length > 0) {
61
+ return { previous: entry.fullSlug };
62
+ }
63
+ if (detail.notFound !== true) {
64
+ throw new Error(`Could not check whether this proposal was already saved as ${entry.fullSlug}. Look for it with list_workflows before saving again.`);
65
+ }
66
+ // The earlier copy was deleted, so saving again is what the user wants.
67
+ }
68
+ }
69
+ const pending = create();
70
+ CREATED.set(key, { pending, at: Date.now() });
71
+ trimCreated();
72
+ try {
73
+ const saved = await pending;
74
+ CREATED.set(key, { fullSlug: saved.fullSlug, at: Date.now() });
75
+ return { saved };
76
+ }
77
+ catch (error) {
78
+ CREATED.delete(key);
79
+ throw error;
80
+ }
81
+ }
82
+ export function registerSaveWorkflowFromAgent(server, client) {
83
+ server.registerTool('save_workflow_from_agent', {
84
+ title: 'Save a workflow from the Workflow Agent',
85
+ description: 'Save the workflow the Workflow Agent proposed in one of its replies. Without '
86
+ + '`workflow` it is saved as a new private workflow. With `workflow` (the workflow that was '
87
+ + 'attached when the agent was asked to edit it) the proposal replaces that workflow\'s '
88
+ + 'steps, title and description; its saved input values and hidden secret inputs are kept. Applying needs the '
89
+ + 'attached workflow\'s `loaded_updatetime`, and without `confirm: true` it only returns '
90
+ + 'what would change: show that to the user and repeat the call with `confirm: true` after '
91
+ + 'they agree. The reply is read again from Wiro, so pass its ids, not the JSON. Wiro '
92
+ + 'checks and prepares the graph against the live model catalog first; if it finds '
93
+ + 'problems, send them back to the Workflow Agent in the same session. Save each proposal '
94
+ + 'once; saving it again can create another copy. Saving is free; running the workflow is charged.',
95
+ inputSchema: {
96
+ message_id: z.string().min(1).describe('The message id from send_agent_message or get_agent_message. One id covers the message and its reply.'),
97
+ session: z.string().min(1).describe('The session that reply belongs to.'),
98
+ artifact_hash: z.string().optional()
99
+ .describe('Which proposal to save when the reply has more than one (from send_agent_message or get_agent_message).'),
100
+ workflow: z.string().optional()
101
+ .describe('Full slug or URL of the workflow to apply the proposal to. Leave it out to save a new workflow.'),
102
+ loaded_updatetime: z.string().optional()
103
+ .describe('Required with `workflow`: the attached workflow\'s `updatetime` from send_agent_message or get_agent_message. Stops the save if someone changed the workflow since.'),
104
+ tags: z.array(z.string()).max(20).optional().describe('Tags for the workflow.'),
105
+ confirm: z.boolean().default(false)
106
+ .describe('Required to apply a proposal to an existing workflow, after the user approved the change summary.'),
107
+ force: z.boolean().default(false)
108
+ .describe('When applying: overwrite a newer version. Only when the user explicitly wants that.'),
109
+ acknowledge_review_reset: z.boolean().default(false)
110
+ .describe('Required to change a published workflow, after the user agreed it leaves the gallery until reviewed.'),
111
+ },
112
+ outputSchema: {
113
+ ...updatedWorkflowSchema,
114
+ reviewReset: z.boolean().optional(),
115
+ contentsChanged: z.boolean().optional(),
116
+ unchanged: z.boolean().optional(),
117
+ mode: z.enum(['create', 'apply']),
118
+ alreadySaved: z.boolean(),
119
+ },
120
+ annotations: {
121
+ readOnlyHint: false,
122
+ destructiveHint: true,
123
+ idempotentHint: false,
124
+ openWorldHint: true,
125
+ },
126
+ }, async (args, extra) => {
127
+ try {
128
+ const problem = args.tags ? tagProblem(args.tags) : null;
129
+ if (problem)
130
+ throw new Error(problem);
131
+ if (args.workflow && !args.loaded_updatetime) {
132
+ throw new Error('Applying a proposal needs loaded_updatetime: the attached workflow\'s updatetime from the '
133
+ + 'send_agent_message or get_agent_message result. If you do not have it, ask the user whether to apply the '
134
+ + 'proposal onto the current version, then read it with get_workflow and pass that updatetime.');
135
+ }
136
+ const target = resolveAgentTarget('workflow-agent');
137
+ const row = await readAgentMessage(client, target, args.message_id, args.session, extra.signal);
138
+ if (row.status !== 'agent_end') {
139
+ throw new Error(`That reply is not finished (status ${String(row.status)}). Wait for it with get_agent_message first.`);
140
+ }
141
+ const { artifact, hash } = pickArtifact(extractReply(row), args.artifact_hash);
142
+ const contents = JSON.parse(JSON.stringify(artifact.contents));
143
+ if (args.workflow) {
144
+ const fullSlug = parseWorkflowSlug(args.workflow);
145
+ const saved = await updateWorkflow(client, {
146
+ fullSlug,
147
+ title: artifact.title,
148
+ ...(artifact.description ? { description: artifact.description } : {}),
149
+ tags: args.tags,
150
+ contents,
151
+ loadedUpdatetime: args.loaded_updatetime,
152
+ force: args.force,
153
+ acknowledgeReviewReset: args.acknowledge_review_reset,
154
+ preview: !args.confirm,
155
+ }, extra.signal);
156
+ if (saved.preview) {
157
+ return {
158
+ content: [{ type: 'text', text: formatUpdatedWorkflow(saved, '## Review the change before saving') }],
159
+ structuredContent: {
160
+ ...saved,
161
+ mode: 'apply',
162
+ alreadySaved: false,
163
+ nextAction: {
164
+ tool: 'save_workflow_from_agent',
165
+ arguments: {
166
+ message_id: args.message_id,
167
+ session: args.session,
168
+ artifact_hash: hash,
169
+ workflow: fullSlug,
170
+ loaded_updatetime: args.loaded_updatetime,
171
+ ...(args.tags ? { tags: args.tags } : {}),
172
+ confirm: true,
173
+ ...(args.force ? { force: true } : {}),
174
+ ...(saved.reviewReset ? { acknowledge_review_reset: true } : {}),
175
+ },
176
+ reason: 'Show the user what will change and save only after they agree.',
177
+ },
178
+ },
179
+ };
180
+ }
181
+ const heading = saved.unchanged ? '## Already applied' : '## Workflow updated';
182
+ return {
183
+ content: [{ type: 'text', text: formatUpdatedWorkflow(saved, heading) }],
184
+ structuredContent: {
185
+ ...saved,
186
+ mode: 'apply',
187
+ alreadySaved: saved.unchanged,
188
+ nextAction: {
189
+ tool: 'run_workflow',
190
+ arguments: { slug: saved.fullSlug },
191
+ reason: runReason(saved),
192
+ },
193
+ },
194
+ };
195
+ }
196
+ const hidden = findHiddenValues(contents);
197
+ if (hidden.length > 0) {
198
+ throw new Error(`This proposal still has hidden values copied from the workflow the agent was shown (${hidden.join(', ')}). `
199
+ + 'Apply it to that workflow with `workflow` so the real values are kept, or ask the agent to leave those inputs empty and set them yourself.');
200
+ }
201
+ const key = `${String(client.identity)}:${args.message_id}:${hash}`;
202
+ const outcome = await createOnce(client, key, () => createWorkflow(client, {
203
+ title: artifact.title,
204
+ description: artifact.description,
205
+ contents,
206
+ tags: args.tags,
207
+ }, extra.signal), extra.signal);
208
+ if (outcome.previous) {
209
+ return {
210
+ content: [{ type: 'text', text: `## Already saved\n\nThis proposal was already saved as \`${outcome.previous}\`. Nothing new was created.` }],
211
+ structuredContent: {
212
+ mode: 'create',
213
+ alreadySaved: true,
214
+ fullSlug: outcome.previous,
215
+ url: workflowUrl(outcome.previous),
216
+ title: artifact.title,
217
+ renamed: false,
218
+ inputs: [],
219
+ outputs: {},
220
+ warnings: [],
221
+ nextAction: {
222
+ tool: 'get_workflow',
223
+ arguments: { slug: outcome.previous },
224
+ reason: 'Read the saved workflow.',
225
+ },
226
+ },
227
+ };
228
+ }
229
+ const saved = outcome.saved;
230
+ const lines = ['## Workflow saved', ''];
231
+ lines.push(`**Title:** ${saved.title}${saved.renamed ? ' (renamed because the title was already used)' : ''}`);
232
+ lines.push(`**Slug:** \`${saved.fullSlug}\``);
233
+ lines.push(`**Page:** ${saved.url}`);
234
+ lines.push('', '### Inputs', '', ...formatWorkflowInputs(saved.inputs));
235
+ if (saved.warnings.length > 0) {
236
+ lines.push('', '### Notes', '', ...saved.warnings.map(warning => `- ${warning.nodeId ? `\`${warning.nodeId}\`: ` : ''}${warning.message}`));
237
+ }
238
+ return {
239
+ content: [{ type: 'text', text: lines.join('\n') }],
240
+ structuredContent: {
241
+ ...saved,
242
+ mode: 'create',
243
+ alreadySaved: false,
244
+ nextAction: {
245
+ tool: 'run_workflow',
246
+ arguments: { slug: saved.fullSlug },
247
+ reason: runReason(saved),
248
+ },
249
+ },
250
+ };
251
+ }
252
+ catch (error) {
253
+ if (error instanceof WorkflowPrepareError) {
254
+ return {
255
+ content: [{
256
+ type: 'text',
257
+ text: `${prepareIssuesText(error)}\n\nYou can send these problems to the Workflow Agent in the same session (send_agent_message with agent "workflow-agent" and session "${args.session}") and ask it to fix them.`,
258
+ }],
259
+ isError: true,
260
+ };
261
+ }
262
+ if (error instanceof WorkflowConflictError) {
263
+ return {
264
+ content: [{
265
+ type: 'text',
266
+ text: `## Not saved: newer changes exist\n\n${error.message} You can also attach the current version to a new message for the Workflow Agent so it edits the latest steps.`,
267
+ }],
268
+ isError: true,
269
+ };
270
+ }
271
+ return errorResult(error);
272
+ }
273
+ });
274
+ }
275
+ function runReason(saved) {
276
+ const keys = saved.inputs.map(input => input.key);
277
+ return 'Run it only if the user asked for a run, after telling them the estimate; otherwise ask the user first (each model step is charged). Call run_workflow with input values'
278
+ + (keys.length > 0 ? ` for: ${keys.join(', ')}. A key you leave out uses its saved value or default.` : '.');
279
+ }
280
+ //# sourceMappingURL=save-workflow-from-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-workflow-from-agent.js","sourceRoot":"","sources":["../../src/tools/save-workflow-from-agent.ts"],"names":[],"mappings":"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"}