callman-mcp 0.4.0 → 0.6.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 (118) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/README.md +43 -11
  3. package/dist/client/api.d.ts +104 -1
  4. package/dist/client/api.d.ts.map +1 -1
  5. package/dist/client/api.js +137 -0
  6. package/dist/client/api.js.map +1 -1
  7. package/dist/client/errors.d.ts.map +1 -1
  8. package/dist/client/errors.js +46 -11
  9. package/dist/client/errors.js.map +1 -1
  10. package/dist/client/types.d.ts +257 -0
  11. package/dist/client/types.d.ts.map +1 -1
  12. package/dist/domain/diagram/patch.d.ts +32 -32
  13. package/dist/domain/scenario/build.d.ts.map +1 -1
  14. package/dist/domain/scenario/build.js +68 -17
  15. package/dist/domain/scenario/build.js.map +1 -1
  16. package/dist/domain/scenario/summarize.d.ts +1 -0
  17. package/dist/domain/scenario/summarize.d.ts.map +1 -1
  18. package/dist/domain/scenario/summarize.js +1 -0
  19. package/dist/domain/scenario/summarize.js.map +1 -1
  20. package/dist/domain/uiTest/compose.d.ts +55 -0
  21. package/dist/domain/uiTest/compose.d.ts.map +1 -0
  22. package/dist/domain/uiTest/compose.js +228 -0
  23. package/dist/domain/uiTest/compose.js.map +1 -0
  24. package/dist/domain/uiTest/summarize.d.ts +273 -0
  25. package/dist/domain/uiTest/summarize.d.ts.map +1 -0
  26. package/dist/domain/uiTest/summarize.js +145 -0
  27. package/dist/domain/uiTest/summarize.js.map +1 -0
  28. package/dist/lib/truncate.d.ts +1 -1
  29. package/dist/lib/truncate.d.ts.map +1 -1
  30. package/dist/lib/truncate.js.map +1 -1
  31. package/dist/resources/docs/diagramSchema.d.ts +2 -1
  32. package/dist/resources/docs/diagramSchema.d.ts.map +1 -1
  33. package/dist/resources/docs/diagramSchema.js +30 -3
  34. package/dist/resources/docs/diagramSchema.js.map +1 -1
  35. package/dist/resources/docs/overview.d.ts +1 -1
  36. package/dist/resources/docs/overview.d.ts.map +1 -1
  37. package/dist/resources/docs/overview.js +40 -7
  38. package/dist/resources/docs/overview.js.map +1 -1
  39. package/dist/resources/docs/uiTests.d.ts +2 -0
  40. package/dist/resources/docs/uiTests.d.ts.map +1 -0
  41. package/dist/resources/docs/uiTests.js +101 -0
  42. package/dist/resources/docs/uiTests.js.map +1 -0
  43. package/dist/resources/generated/aiPacks.d.ts +1 -1
  44. package/dist/resources/generated/aiPacks.js +4 -4
  45. package/dist/resources/generated/aiPacks.js.map +1 -1
  46. package/dist/resources/index.d.ts.map +1 -1
  47. package/dist/resources/index.js +15 -4
  48. package/dist/resources/index.js.map +1 -1
  49. package/dist/server.d.ts +1 -1
  50. package/dist/server.d.ts.map +1 -1
  51. package/dist/server.js +2 -2
  52. package/dist/server.js.map +1 -1
  53. package/dist/tools/catalog.d.ts +1 -1
  54. package/dist/tools/catalog.d.ts.map +1 -1
  55. package/dist/tools/catalog.js +37 -0
  56. package/dist/tools/catalog.js.map +1 -1
  57. package/dist/tools/diagrams.d.ts.map +1 -1
  58. package/dist/tools/diagrams.js +4 -1
  59. package/dist/tools/diagrams.js.map +1 -1
  60. package/dist/tools/index.d.ts.map +1 -1
  61. package/dist/tools/index.js +8 -0
  62. package/dist/tools/index.js.map +1 -1
  63. package/dist/tools/lookups.d.ts +19 -1
  64. package/dist/tools/lookups.d.ts.map +1 -1
  65. package/dist/tools/lookups.js +77 -0
  66. package/dist/tools/lookups.js.map +1 -1
  67. package/dist/tools/scenarioAdmin.d.ts +4 -0
  68. package/dist/tools/scenarioAdmin.d.ts.map +1 -0
  69. package/dist/tools/scenarioAdmin.js +142 -0
  70. package/dist/tools/scenarioAdmin.js.map +1 -0
  71. package/dist/tools/scenarios.d.ts +4 -0
  72. package/dist/tools/scenarios.d.ts.map +1 -1
  73. package/dist/tools/scenarios.js +111 -16
  74. package/dist/tools/scenarios.js.map +1 -1
  75. package/dist/tools/shared.d.ts +5 -0
  76. package/dist/tools/shared.d.ts.map +1 -1
  77. package/dist/tools/shared.js +10 -0
  78. package/dist/tools/shared.js.map +1 -1
  79. package/dist/tools/uiTestAdmin.d.ts +4 -0
  80. package/dist/tools/uiTestAdmin.d.ts.map +1 -0
  81. package/dist/tools/uiTestAdmin.js +509 -0
  82. package/dist/tools/uiTestAdmin.js.map +1 -0
  83. package/dist/tools/uiTestRuns.d.ts +24 -0
  84. package/dist/tools/uiTestRuns.d.ts.map +1 -0
  85. package/dist/tools/uiTestRuns.js +367 -0
  86. package/dist/tools/uiTestRuns.js.map +1 -0
  87. package/dist/tools/uiTestShared.d.ts +236 -0
  88. package/dist/tools/uiTestShared.d.ts.map +1 -0
  89. package/dist/tools/uiTestShared.js +187 -0
  90. package/dist/tools/uiTestShared.js.map +1 -0
  91. package/dist/tools/uiTests.d.ts +4 -0
  92. package/dist/tools/uiTests.d.ts.map +1 -0
  93. package/dist/tools/uiTests.js +572 -0
  94. package/dist/tools/uiTests.js.map +1 -0
  95. package/dist-cjs/client/api.js +137 -0
  96. package/dist-cjs/client/errors.js +46 -11
  97. package/dist-cjs/domain/scenario/build.js +68 -17
  98. package/dist-cjs/domain/scenario/summarize.js +1 -0
  99. package/dist-cjs/domain/uiTest/compose.js +242 -0
  100. package/dist-cjs/domain/uiTest/summarize.js +155 -0
  101. package/dist-cjs/resources/docs/diagramSchema.js +32 -4
  102. package/dist-cjs/resources/docs/overview.js +40 -7
  103. package/dist-cjs/resources/docs/uiTests.js +103 -0
  104. package/dist-cjs/resources/generated/aiPacks.js +4 -4
  105. package/dist-cjs/resources/index.js +12 -1
  106. package/dist-cjs/server.js +2 -2
  107. package/dist-cjs/tools/catalog.js +37 -0
  108. package/dist-cjs/tools/diagrams.js +4 -1
  109. package/dist-cjs/tools/index.js +8 -0
  110. package/dist-cjs/tools/lookups.js +83 -1
  111. package/dist-cjs/tools/scenarioAdmin.js +145 -0
  112. package/dist-cjs/tools/scenarios.js +113 -17
  113. package/dist-cjs/tools/shared.js +12 -1
  114. package/dist-cjs/tools/uiTestAdmin.js +512 -0
  115. package/dist-cjs/tools/uiTestRuns.js +372 -0
  116. package/dist-cjs/tools/uiTestShared.js +202 -0
  117. package/dist-cjs/tools/uiTests.js +575 -0
  118. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiTests.js","sourceRoot":"","sources":["../../src/tools/uiTests.ts"],"names":[],"mappings":"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"}
@@ -217,6 +217,38 @@ class CallmanApi {
217
217
  runScenario(ws, id, body) {
218
218
  return this.http.request("POST", `/scenarios/${id}/run-server`, { workspaceId: ws, body });
219
219
  }
220
+ // Desktop relay: the user's own desktop app runs it (reaches what only that
221
+ // machine reaches). 409 SCENARIO_DESKTOP_OFFLINE when none is online.
222
+ runScenarioOnDesktop(ws, id, body) {
223
+ return this.http.request("POST", `/scenarios/${id}/run-desktop`, { workspaceId: ws, body });
224
+ }
225
+ listScenarioDesktopAgents() {
226
+ return this.http.request("GET", "/scenario-desktop-agents", {});
227
+ }
228
+ createScenarioFolder(ws, body) {
229
+ return this.http.request("POST", "/scenario-folders", { workspaceId: ws, body });
230
+ }
231
+ updateScenarioFolder(ws, id, body) {
232
+ return this.http.request("PATCH", `/scenario-folders/${id}`, { workspaceId: ws, body });
233
+ }
234
+ deleteScenarioFolder(ws, id) {
235
+ return this.http.request("DELETE", `/scenario-folders/${id}`, { workspaceId: ws });
236
+ }
237
+ approveScenario(ws, id) {
238
+ return this.http.request("POST", `/scenarios/${id}/approve`, { workspaceId: ws, body: {} });
239
+ }
240
+ rejectScenario(ws, id, note) {
241
+ return this.http.request("POST", `/scenarios/${id}/reject`, { workspaceId: ws, body: { note } });
242
+ }
243
+ listScenarioVersions(ws, id) {
244
+ return this.http.request("GET", `/scenarios/${id}/versions`, { workspaceId: ws });
245
+ }
246
+ getScenarioVersion(ws, id, version) {
247
+ return this.http.request("GET", `/scenarios/${id}/versions/${version}`, { workspaceId: ws });
248
+ }
249
+ restoreScenarioVersion(ws, id, version) {
250
+ return this.http.request("POST", `/scenarios/${id}/versions/${version}/restore`, { workspaceId: ws, body: {} });
251
+ }
220
252
  listScenarioReports(ws, id, limit = 20) {
221
253
  return this.http.request("GET", `/scenarios/${id}/reports`, { workspaceId: ws, query: { page: 1, limit } });
222
254
  }
@@ -259,6 +291,111 @@ class CallmanApi {
259
291
  shareDiagram(id, body) {
260
292
  return this.http.request("POST", `/diagrams/${id}/share`, { body });
261
293
  }
294
+ // ── UI tests ────────────────────────────────────────────────────────
295
+ // Reads span every workspace the user can see (rows carry workspaceId);
296
+ // writes and per-flow review/run routes take the flow's workspace header.
297
+ listUiTests(summary = true) {
298
+ return this.http.request("GET", "/ui-test-scenarios", { query: summary ? { summary: 1 } : {} });
299
+ }
300
+ getUiTest(clientId, reveal = false) {
301
+ return this.http.request("GET", `/ui-test-scenarios/${encodeURIComponent(clientId)}`, { query: reveal ? { reveal: "true" } : {} });
302
+ }
303
+ upsertUiTest(ws, body) {
304
+ return this.http.request("POST", "/ui-test-scenarios", { workspaceId: ws, body });
305
+ }
306
+ deleteUiTest(ws, clientId) {
307
+ return this.http.request("DELETE", `/ui-test-scenarios/${encodeURIComponent(clientId)}`, { workspaceId: ws });
308
+ }
309
+ listUiTestFolders() {
310
+ return this.http.request("GET", "/ui-test-folders");
311
+ }
312
+ upsertUiTestFolder(ws, body) {
313
+ return this.http.request("POST", "/ui-test-folders", { workspaceId: ws, body });
314
+ }
315
+ deleteUiTestFolder(ws, clientId) {
316
+ return this.http.request("DELETE", `/ui-test-folders/${encodeURIComponent(clientId)}`, { workspaceId: ws });
317
+ }
318
+ runUiTestOnServer(ws, clientId) {
319
+ return this.http.request("POST", `/ui-test-scenarios/${encodeURIComponent(clientId)}/run-server`, { workspaceId: ws, body: {} });
320
+ }
321
+ runUiTestOnDesktop(ws, clientId, body) {
322
+ return this.http.request("POST", `/ui-test-scenarios/${encodeURIComponent(clientId)}/run-desktop`, { workspaceId: ws, body });
323
+ }
324
+ getUiTestRun(ws, reportId) {
325
+ return this.http.request("GET", `/ui-test-runs/${reportId}`, { workspaceId: ws });
326
+ }
327
+ listUiTestRuns(query) {
328
+ return this.http.request("GET", "/ui-test-runs", { query });
329
+ }
330
+ cancelUiTestRun(ws, reportId) {
331
+ return this.http.request("POST", `/ui-test-runs/${reportId}/cancel`, { workspaceId: ws, body: {} });
332
+ }
333
+ listUiTestResults(query) {
334
+ return this.http.request("GET", "/ui-test-results", { query });
335
+ }
336
+ listUiTestDesktopAgents(ws) {
337
+ return this.http.request("GET", "/ui-test-desktop-agents", { workspaceId: ws });
338
+ }
339
+ uiTestRunnerStatus() {
340
+ return this.http.request("GET", "/ui-test-runner/status");
341
+ }
342
+ listUiTestSchedules(ws, flowClientId) {
343
+ return this.http.request("GET", "/ui-test-schedules", { workspaceId: ws, query: flowClientId ? { flowClientId } : {} });
344
+ }
345
+ getUiTestSchedule(ws, id) {
346
+ return this.http.request("GET", `/ui-test-schedules/${id}`, { workspaceId: ws });
347
+ }
348
+ createUiTestSchedule(ws, body) {
349
+ return this.http.request("POST", "/ui-test-schedules", { workspaceId: ws, body });
350
+ }
351
+ bulkCreateUiTestSchedules(ws, body) {
352
+ return this.http.request("POST", "/ui-test-schedules/bulk-create", { workspaceId: ws, body });
353
+ }
354
+ updateUiTestSchedule(ws, id, body) {
355
+ return this.http.request("PUT", `/ui-test-schedules/${id}`, { workspaceId: ws, body });
356
+ }
357
+ toggleUiTestSchedule(ws, id, enabled) {
358
+ return this.http.request("POST", `/ui-test-schedules/${id}/toggle`, { workspaceId: ws, body: { enabled } });
359
+ }
360
+ deleteUiTestSchedule(ws, id) {
361
+ return this.http.request("DELETE", `/ui-test-schedules/${id}`, { workspaceId: ws });
362
+ }
363
+ runUiTestScheduleNow(ws, id) {
364
+ return this.http.request("POST", `/ui-test-schedules/${id}/run-now`, { workspaceId: ws, body: {} });
365
+ }
366
+ uiTestsAwaitingReview() {
367
+ return this.http.request("GET", "/ui-test-scenarios/awaiting-review");
368
+ }
369
+ uiTestApprovalContext(ws, clientId) {
370
+ return this.http.request("GET", `/ui-test-scenarios/${encodeURIComponent(clientId)}/approval`, { workspaceId: ws });
371
+ }
372
+ uiTestApproverCandidates(ws, clientId) {
373
+ return this.http.request("GET", `/ui-test-scenarios/${encodeURIComponent(clientId)}/approver-candidates`, { workspaceId: ws });
374
+ }
375
+ submitUiTest(ws, clientId, body) {
376
+ return this.http.request("POST", `/ui-test-scenarios/${encodeURIComponent(clientId)}/submit`, { workspaceId: ws, body });
377
+ }
378
+ approveUiTest(ws, clientId) {
379
+ return this.http.request("POST", `/ui-test-scenarios/${encodeURIComponent(clientId)}/approve`, { workspaceId: ws, body: {} });
380
+ }
381
+ rejectUiTest(ws, clientId, note) {
382
+ return this.http.request("POST", `/ui-test-scenarios/${encodeURIComponent(clientId)}/reject`, { workspaceId: ws, body: { note } });
383
+ }
384
+ listUiTestVersions(ws, clientId) {
385
+ return this.http.request("GET", `/ui-test-scenarios/${encodeURIComponent(clientId)}/versions`, { workspaceId: ws });
386
+ }
387
+ getUiTestVersion(ws, clientId, versionNumber) {
388
+ return this.http.request("GET", `/ui-test-scenarios/${encodeURIComponent(clientId)}/versions/${versionNumber}`, { workspaceId: ws });
389
+ }
390
+ restoreUiTestVersion(ws, clientId, versionNumber) {
391
+ return this.http.request("POST", `/ui-test-scenarios/${encodeURIComponent(clientId)}/versions/${versionNumber}/restore`, { workspaceId: ws, body: {} });
392
+ }
393
+ exportUiTests(ws, body, reveal = false) {
394
+ return this.http.request("POST", "/export/ui-tests", { workspaceId: ws, body, query: reveal ? { reveal: "true" } : {}, timeoutMs: 120_000 });
395
+ }
396
+ importUiTests(ws, body) {
397
+ return this.http.request("POST", "/import/ui-tests", { workspaceId: ws, body, timeoutMs: 120_000 });
398
+ }
262
399
  // ── local run bundle ────────────────────────────────────────────────
263
400
  pipelineBundle(ws, collectionId, environmentId) {
264
401
  return this.http.request("GET", "/pipeline/bundle", {
@@ -48,15 +48,17 @@ exports.ToolInputError = ToolInputError;
48
48
  const SCOPE_HINT = "Create a token with that permission in the Callman desktop app (Settings → AI tools → New token) and update the CALLMAN_TOKEN in your MCP config.";
49
49
  // Point a validation error at the reference for the area it came from.
50
50
  const validationHint = (path) => {
51
- const doc = /\/(scenarios|scenario-folders)/.test(path)
52
- ? "callman://docs/scenario-nodes"
53
- : /\/diagrams/.test(path)
54
- ? "callman://docs/diagram-schema"
55
- : /\/(contract-rules|data-contracts)/.test(path)
56
- ? "callman://docs/contracts"
57
- : /\/(environments|variables)/.test(path)
58
- ? null
59
- : "callman://docs/request-schema";
51
+ const doc = /\/(ui-test|import\/ui-tests|export\/ui-tests)/.test(path)
52
+ ? "callman://docs/ui-tests (steps: callman://docs/ui-test-steps)"
53
+ : /\/(scenarios|scenario-folders)/.test(path)
54
+ ? "callman://docs/scenario-nodes"
55
+ : /\/diagrams/.test(path)
56
+ ? "callman://docs/diagram-schema"
57
+ : /\/(contract-rules|data-contracts)/.test(path)
58
+ ? "callman://docs/contracts"
59
+ : /\/(environments|variables)/.test(path)
60
+ ? null
61
+ : "callman://docs/request-schema";
60
62
  return `The server rejected the input — check the fields listed in details${doc ? ` against ${doc}` : " (keys 1–100 chars, values ≤ 5000)"}.`;
61
63
  };
62
64
  const hintFor = (error) => {
@@ -65,10 +67,43 @@ const hintFor = (error) => {
65
67
  const required = Array.isArray(error.details?.required)
66
68
  ? (error.details.required ?? []).join(" or ")
67
69
  : "an additional scope";
68
- return `The token lacks the permission ${required}. ${SCOPE_HINT}`;
70
+ const uiTests = /ui_tests:/.test(required) ? " UI tests have their own permissions: ui_tests:read (list, read, reports), ui_tests:write (create, edit, folders, schedules, review), ui_tests:run (run, cancel), ui_tests:delete." : "";
71
+ return `The token lacks the permission ${required}.${uiTests} ${SCOPE_HINT}`;
69
72
  }
70
73
  case "PAT_ROUTE_FORBIDDEN":
71
- return "This area of Callman is not available to AI tools (mocks, history, UI tests, schedules, connection editing, admin). Use the desktop app for it.";
74
+ return /\/(ui-test|import\/ui-tests|export\/ui-tests)/.test(error.path)
75
+ ? "This server does not open UI tests to AI tools yet — update callman-backend to a version with the ui_tests:* token permissions."
76
+ : "This area of Callman is not available to AI tools (mocks, request history, API-scenario schedules, connection editing, admin). Use the desktop app for it.";
77
+ case "UI_TEST_DESKTOP_OFFLINE":
78
+ return "No Callman desktop app of yours is online to run this. Open the Callman desktop app, sign in, and turn on Settings → AI tools → \"Let AI tools run UI tests on this computer\"; for Android/iOS connect a device or start an emulator/simulator. Then run again (list_ui_test_devices shows what is connected). Web flows can also run on the server runner when the installation has one.";
79
+ case "UI_TEST_DESKTOP_PLATFORM_UNAVAILABLE":
80
+ return "Your desktop app is online but cannot run this platform: connect an Android device / start an emulator, or (iOS, macOS only) boot a simulator, then run again. list_ui_test_devices shows what each app offers.";
81
+ case "UI_RUNNER_UNAVAILABLE":
82
+ return "This installation has no server UI-test runner (or it is down). Run it on your desktop app instead: run_ui_test with target: \"desktop\" (the app must be open with \"Let AI tools run UI tests on this computer\" on). Schedules need the server runner.";
83
+ case "UI_TEST_PLATFORM_UNSUPPORTED":
84
+ return "The server runner and schedules run web flows only. Run Android/iOS flows on your desktop app: run_ui_test with target: \"desktop\".";
85
+ case "UI_TEST_SCENARIO_VERSION_CONFLICT":
86
+ return "Someone saved the UI test since it was read. Re-read it with get_ui_test, reapply your change, and retry with the new expectedVersion (or force: true to overwrite).";
87
+ case "UI_TEST_NO_APPROVERS":
88
+ return "Nobody can approve flows of this group yet — an administrator must flag an approver for the group (admin panel) before submit_ui_test works. Runs you start yourself (run_ui_test) do not need approval.";
89
+ case "UI_TEST_GROUP_REQUIRED":
90
+ return "Only flows that belong to a group can be sent for review — personal flows run as they are.";
91
+ case "UI_TEST_SUBMIT_NOT_AUTHOR":
92
+ return "Only the flow's author can submit it for review.";
93
+ case "UI_TEST_REVIEW_INVALID_STATE":
94
+ return "The flow is not in the state this action needs: submit_ui_test moves a draft to pending_review, and only a pending_review flow can be approved or rejected. Check reviewStatus with get_ui_test.";
95
+ case "UI_TEST_VERSION_ALREADY_ACTIVE":
96
+ return "That version is already the active approved version — nothing to restore.";
97
+ case "UI_TEST_NOT_APPROVED":
98
+ return "Schedules run the APPROVED version of a UI test, and this one has none yet. submit_ui_test, have an approver approve it (review_ui_test or the desktop app), then try again — or run the current content with run_ui_test.";
99
+ case "UI_TEST_SCHEDULE_RUN_ACTIVE":
100
+ return "That schedule is running right now. Wait for it (list_ui_test_runs) or cancel the run (cancel_ui_test_run), then trigger it again.";
101
+ case "REVIEW_DISABLED_CLOUD":
102
+ return "Callman cloud has no review workflow — UI tests and scenarios run as saved; approvals and versions exist on on-prem installations only.";
103
+ case "SELF_APPROVAL_FORBIDDEN":
104
+ return "You cannot approve or reject your own UI test — another approver must.";
105
+ case "NOT_APPROVER":
106
+ return "You are not an approver for this UI test's group. list_ui_tests awaitingMyReview: true lists what you can review.";
72
107
  case "FEATURE_DISABLED": {
73
108
  const feature = error.details?.feature;
74
109
  return typeof feature === "string"
@@ -15,6 +15,10 @@ const nodeConfig_js_1 = require("./nodeConfig.js");
15
15
  // positions are kept). The backend's zod schema stays the arbiter of node
16
16
  // config validity; callman://docs/scenario-nodes documents every field.
17
17
  exports.SCENARIO_NODE_TYPES = callman_core_1.SCENARIO_NODE_REFERENCE_TYPES;
18
+ // Grid used to place nodes that come without a position (one node card plus
19
+ // breathing room).
20
+ const NODE_SPACING_X = 320;
21
+ const NODE_SPACING_Y = 170;
18
22
  // Output roots a label would shadow (warning, not an error).
19
23
  const SHADOWING_LABELS = new Set(["response", "lastResponse", "data", "env", "global", "globals", "db", "redis", "kafkaEvent", "kafkaevent"]);
20
24
  exports.scenarioNodeInputSchema = (0, strict_js_1.strictObject)({
@@ -58,6 +62,20 @@ exports.scenarioInputSchema = (0, strict_js_1.strictObject)({
58
62
  dbSettings: exports.scenarioDbSettingsSchema.optional(),
59
63
  }, "scenario field");
60
64
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
65
+ // A scenario-ref link request after the tool layer resolved `scenario`:
66
+ // { referencedScenarioId, nodes: [], edges: [], executionPolicy? }.
67
+ const linkRequest = (config) => {
68
+ if (!config || typeof config.referencedScenarioId !== "string")
69
+ return null;
70
+ if (!Array.isArray(config.nodes) || config.nodes.length > 0)
71
+ return null;
72
+ return {
73
+ referencedScenarioId: config.referencedScenarioId,
74
+ nodes: [],
75
+ edges: [],
76
+ ...(isRecord(config.executionPolicy) ? { executionPolicy: config.executionPolicy } : {}),
77
+ };
78
+ };
61
79
  // Objects merge key by key; arrays and scalars from the override win whole.
62
80
  const deepMerge = (base, override) => {
63
81
  if (!isRecord(base) || !isRecord(override))
@@ -107,8 +125,24 @@ const buildScenarioGraph = (nodesInput, edgesInput, options = {}) => {
107
125
  }
108
126
  const stored = existingById.get(id);
109
127
  const sameNode = stored && stored.type === type ? stored : undefined;
110
- if (type === "scenario-ref" && !sameNode) {
111
- throw new errors_js_1.ToolInputError("SCENARIO_REF_READ_ONLY", `Node ${id}: scenario-ref nodes are created by linking a scenario in the desktop app; they can only be kept (send the stored node's id and type).`);
128
+ if (type === "scenario-ref") {
129
+ // Linking: the tool layer turned config.scenario (name or id) into a
130
+ // referencedScenarioId with an EMPTY snapshot — the server copies the
131
+ // linked scenario in. A stored ref sent back without config is kept.
132
+ const link = linkRequest(node.config);
133
+ if (link) {
134
+ return {
135
+ id,
136
+ type,
137
+ label: node.label ?? sameNode?.data?.label ?? undefined,
138
+ position: node.position ?? sameNode?.position,
139
+ config: link,
140
+ touched: true,
141
+ };
142
+ }
143
+ if (!sameNode) {
144
+ throw new errors_js_1.ToolInputError("SCENARIO_REF_NEEDS_SCENARIO", `Node ${id}: link a scenario with config: { scenario: "<name or id>" } (the server copies it in).`);
145
+ }
112
146
  }
113
147
  const base = sameNode?.data?.config ?? (0, callman_core_1.defaultScenarioNodeConfig)(type) ?? {};
114
148
  const restored = sameNode ? (0, nodeConfig_js_1.restoreMasked)(node.config ?? {}, base) : (node.config ?? {});
@@ -195,15 +229,18 @@ const buildScenarioGraph = (nodesInput, edgesInput, options = {}) => {
195
229
  }
196
230
  return { id: edge.id ?? nextEdgeId(), source: edge.source, target: edge.target, ...(edge.type && edge.type !== "default" ? { type: edge.type } : {}) };
197
231
  });
198
- // Layered positions for the nodes that have none: BFS from the sources.
199
- const incoming = new Map(ids.map((id) => [id, 0]));
232
+ // Positions for the nodes that have none: right of the node they are
233
+ // connected from (BFS from the sources), then moved down until clear of
234
+ // every node that already has a place — stored nodes included, so a node
235
+ // added by update / patch never lands on top of an existing one.
236
+ const incoming = new Map(ids.map((id) => [id, []]));
200
237
  const outgoing = new Map(ids.map((id) => [id, []]));
201
238
  for (const edge of edges) {
202
- incoming.set(edge.target, (incoming.get(edge.target) ?? 0) + 1);
239
+ incoming.get(edge.target)?.push(edge.source);
203
240
  outgoing.get(edge.source)?.push(edge.target);
204
241
  }
205
242
  const level = new Map();
206
- const queue = ids.filter((id) => (incoming.get(id) ?? 0) === 0);
243
+ const queue = ids.filter((id) => (incoming.get(id) ?? []).length === 0);
207
244
  for (const id of queue)
208
245
  level.set(id, 0);
209
246
  while (queue.length > 0) {
@@ -215,17 +252,31 @@ const buildScenarioGraph = (nodesInput, edgesInput, options = {}) => {
215
252
  }
216
253
  }
217
254
  }
218
- const rowCounter = new Map();
219
- const nodes = built.map((node) => {
220
- let position = node.position;
221
- if (!position) {
222
- const layer = level.get(node.id) ?? 0;
223
- const row = rowCounter.get(layer) ?? 0;
224
- rowCounter.set(layer, row + 1);
225
- position = { x: 80 + layer * 320, y: 80 + row * 170 };
226
- }
227
- return { id: node.id, type: node.type, position, data: { label: node.label, config: node.config } };
228
- });
255
+ const placed = new Map();
256
+ for (const node of built) {
257
+ if (node.position)
258
+ placed.set(node.id, node.position);
259
+ }
260
+ const occupied = () => [...placed.values()];
261
+ const clashes = (candidate) => occupied().some((other) => Math.abs(other.x - candidate.x) < NODE_SPACING_X - 40 && Math.abs(other.y - candidate.y) < NODE_SPACING_Y - 20);
262
+ const unplaced = built
263
+ .filter((node) => !node.position)
264
+ .sort((a, b) => (level.get(a.id) ?? 0) - (level.get(b.id) ?? 0) || ids.indexOf(a.id) - ids.indexOf(b.id));
265
+ for (const node of unplaced) {
266
+ const anchor = (incoming.get(node.id) ?? []).map((source) => placed.get(source)).find((position) => Boolean(position));
267
+ const candidate = anchor
268
+ ? { x: anchor.x + NODE_SPACING_X, y: anchor.y }
269
+ : { x: 80 + (level.get(node.id) ?? 0) * NODE_SPACING_X, y: 80 };
270
+ while (clashes(candidate))
271
+ candidate.y += NODE_SPACING_Y;
272
+ placed.set(node.id, candidate);
273
+ }
274
+ const nodes = built.map((node) => ({
275
+ id: node.id,
276
+ type: node.type,
277
+ position: placed.get(node.id),
278
+ data: { label: node.label, config: node.config },
279
+ }));
229
280
  return { nodes, edges, sent, warnings };
230
281
  };
231
282
  exports.buildScenarioGraph = buildScenarioGraph;
@@ -177,6 +177,7 @@ const compactReportView = (report) => {
177
177
  scenarioVersion: report.scenarioVersion,
178
178
  status: report.status,
179
179
  triggerType: report.triggerType,
180
+ ...(report.executor ? { executor: report.executor } : {}),
180
181
  ...(report.environmentId ? { environmentId: report.environmentId } : {}),
181
182
  startedAt: report.startedAt,
182
183
  endedAt: report.endedAt,