@langwatch/mcp-server 2.0.0 → 2.1.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 (177) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/README.md +31 -3
  3. package/dist/{archive-project-4EQGLBJJ.js → archive-project-W3IKI7UL.js} +3 -3
  4. package/dist/archive-run-plan-474OKHHU.js +16 -0
  5. package/dist/{archive-scenario-W6BXYDZ3.js → archive-scenario-V5UNYK26.js} +3 -3
  6. package/dist/archive-test-suite-O7FLDMXK.js +16 -0
  7. package/dist/{assign-prompt-tag-VLXUWEKU.js → assign-prompt-tag-Q46WRB6P.js} +2 -2
  8. package/dist/chunk-56OGTS24.js +44 -0
  9. package/dist/chunk-6DJDEXET.js +63 -0
  10. package/dist/chunk-7E4FZIYJ.js +15 -0
  11. package/dist/{chunk-77BNWQ3U.js → chunk-AN4OUA4D.js} +2 -2
  12. package/dist/chunk-CKNAH5TG.js +74 -0
  13. package/dist/{chunk-TOXJQDIZ.js → chunk-EYXMLE5X.js} +85 -10
  14. package/dist/{chunk-7RHG56OH.js → chunk-G4ZAZTZW.js} +2 -2
  15. package/dist/{chunk-A2LEVYQ5.js → chunk-GELJ2MQR.js} +11 -2
  16. package/dist/chunk-HV4DWKBI.js +46 -0
  17. package/dist/chunk-JR6DJZOU.js +49 -0
  18. package/dist/{chunk-SFB4MU6H.js → chunk-JTQJRNFJ.js} +2 -2
  19. package/dist/{chunk-TJCXFNDT.js → chunk-K37ZNPXK.js} +2 -2
  20. package/dist/{chunk-CDYQOY5U.js → chunk-OJLYYJWI.js} +2 -2
  21. package/dist/{chunk-ZWIL4EFL.js → chunk-QAMP3CGR.js} +2 -2
  22. package/dist/{chunk-4QC7SA2L.js → chunk-QRO35SOM.js} +345 -144
  23. package/dist/{chunk-J42FWRJ2.js → chunk-RVAE2MEA.js} +2 -2
  24. package/dist/{chunk-AQJO2EI5.js → chunk-S4GVX36W.js} +2 -2
  25. package/dist/{chunk-YX3A3CFM.js → chunk-SR6QPRIE.js} +2 -2
  26. package/dist/chunk-UF6XIGYR.js +58 -0
  27. package/dist/{chunk-5CCZFUXS.js → chunk-UFOYFYI7.js} +2 -2
  28. package/dist/{create-agent-7XHO6UIS.js → create-agent-JFJ2K6X3.js} +3 -3
  29. package/dist/{create-annotation-YQXRQC6A.js → create-annotation-EUXXQ6NS.js} +3 -3
  30. package/dist/{create-api-key-YUS36KBU.js → create-api-key-BGBB76JX.js} +3 -3
  31. package/dist/{create-dashboard-4Z5JO5LB.js → create-dashboard-Z76AIPLS.js} +3 -3
  32. package/dist/{create-dataset-E6NMSVX7.js → create-dataset-FD5VAXU4.js} +3 -3
  33. package/dist/{create-dataset-records-SKHPRD2K.js → create-dataset-records-WQUXXOHI.js} +3 -3
  34. package/dist/{create-evaluator-JXF5PF33.js → create-evaluator-6NV33Z52.js} +3 -3
  35. package/dist/create-mcp-server.js +7 -2
  36. package/dist/{create-project-CS2CB57Y.js → create-project-ZQ7TFIO2.js} +3 -3
  37. package/dist/{create-prompt-F5RMX3L3.js → create-prompt-BS6QRCUU.js} +2 -2
  38. package/dist/{create-prompt-tag-GMRWTEFR.js → create-prompt-tag-FCQ5ELSQ.js} +2 -2
  39. package/dist/{create-scenario-JDR2VB2H.js → create-scenario-DRPTPXU3.js} +10 -3
  40. package/dist/create-test-suite-ZIZCCFJ4.js +37 -0
  41. package/dist/{delete-agent-O3EEH4S5.js → delete-agent-SA4JMUZF.js} +3 -3
  42. package/dist/{delete-annotation-XP6FQM7A.js → delete-annotation-X3KKK7QY.js} +3 -3
  43. package/dist/{delete-dashboard-RFUNYCNP.js → delete-dashboard-LYMRPF27.js} +3 -3
  44. package/dist/{delete-dataset-3MJFRDLP.js → delete-dataset-W6EZ44HY.js} +3 -3
  45. package/dist/{delete-dataset-records-WPMU5GL5.js → delete-dataset-records-7CNOTALB.js} +3 -3
  46. package/dist/{delete-evaluator-33SP2JFX.js → delete-evaluator-RKYC4TNB.js} +3 -3
  47. package/dist/{delete-prompt-tag-KNMZVSPB.js → delete-prompt-tag-QB3OCZUV.js} +2 -2
  48. package/dist/{delete-workflow-3NUXO46U.js → delete-workflow-NG2VXYYM.js} +3 -3
  49. package/dist/{discover-evaluator-schema-XTAD4X7D.js → discover-evaluator-schema-ESSHQGPY.js} +7 -286
  50. package/dist/{discover-scenario-schema-FE64QK2D.js → discover-scenario-schema-W7KBXA4J.js} +53 -1
  51. package/dist/get-agent-7THF7HCU.js +66 -0
  52. package/dist/{get-analytics-TETCSOK6.js → get-analytics-R6AZD3AW.js} +2 -2
  53. package/dist/{get-dashboard-KHBEGZGL.js → get-dashboard-P4WWVHFU.js} +3 -3
  54. package/dist/{get-dataset-RCMU5VAH.js → get-dataset-AKTYSQDI.js} +3 -3
  55. package/dist/{get-evaluator-ADMKVWYZ.js → get-evaluator-RZ44UIN6.js} +3 -3
  56. package/dist/{get-project-RAK7URQJ.js → get-project-QSQEAB33.js} +3 -3
  57. package/dist/get-prompt-GVKXF5NL.js +100 -0
  58. package/dist/get-run-plan-NY7J5GRE.js +61 -0
  59. package/dist/{get-scenario-ZTAJJL5T.js → get-scenario-Q3LLQE4T.js} +7 -3
  60. package/dist/{get-simulation-run-T2ZQWYH2.js → get-simulation-run-WINEYDMK.js} +12 -3
  61. package/dist/get-test-suite-4HKA7OKS.js +49 -0
  62. package/dist/{get-trace-K7U234Q4.js → get-trace-RCUV7N4O.js} +2 -2
  63. package/dist/{get-workflow-L5L2PSK3.js → get-workflow-EEOC7Y45.js} +3 -3
  64. package/dist/{http-server-YXHFPPGA.js → http-server-WCDUARTH.js} +8 -3
  65. package/dist/index.js +3366 -1910
  66. package/dist/{langwatch-api-annotations-FDAS6NQ7.js → langwatch-api-annotations-6DHVZWUK.js} +3 -3
  67. package/dist/{langwatch-api-dashboards-JTVCS7ZJ.js → langwatch-api-dashboards-2KJL2M42.js} +3 -3
  68. package/dist/{langwatch-api-monitors-3J7UIQME.js → langwatch-api-monitors-6ISFJ7WX.js} +2 -2
  69. package/dist/{langwatch-api-secrets-BUBSNCNO.js → langwatch-api-secrets-OEBD6GBU.js} +2 -2
  70. package/dist/{langwatch-api-triggers-EDFUCJN6.js → langwatch-api-triggers-5E6DDGX6.js} +2 -2
  71. package/dist/{langwatch-api-workflows-NBJX5KOG.js → langwatch-api-workflows-6UJL5U4Z.js} +3 -3
  72. package/dist/list-agents-AMVDQPQL.js +43 -0
  73. package/dist/{list-annotations-ZTVP4EEL.js → list-annotations-6PR5NLIC.js} +3 -3
  74. package/dist/{list-api-keys-CWD4UQT5.js → list-api-keys-GVPNBIHQ.js} +3 -3
  75. package/dist/{list-dashboards-PWG6P6KR.js → list-dashboards-Z3BZKDGF.js} +3 -3
  76. package/dist/{list-dataset-records-IOE7LQXS.js → list-dataset-records-O67HZ35Y.js} +3 -3
  77. package/dist/{list-datasets-ZT4JYUDT.js → list-datasets-WXZL6UMP.js} +3 -3
  78. package/dist/{list-evaluators-SJHC7VBH.js → list-evaluators-PAX72WCN.js} +3 -3
  79. package/dist/{list-model-providers-PPD2WPD2.js → list-model-providers-VVLZMLCX.js} +3 -3
  80. package/dist/{list-projects-K7QAIX2I.js → list-projects-AQVI6SUK.js} +3 -3
  81. package/dist/{list-prompt-tags-FOO6TNHB.js → list-prompt-tags-WZFBJOHG.js} +2 -2
  82. package/dist/{list-prompts-SC2HAUFG.js → list-prompts-BQOHRHYT.js} +2 -2
  83. package/dist/list-run-plans-UBAU2DGH.js +46 -0
  84. package/dist/{list-scenarios-F2WYNRIE.js → list-scenarios-MS4IUIVM.js} +8 -5
  85. package/dist/{list-simulation-runs-KF5THG5H.js → list-simulation-runs-D6YF4ZOU.js} +11 -5
  86. package/dist/list-test-suites-L7R2O6DR.js +35 -0
  87. package/dist/{list-workflows-QSJWURCK.js → list-workflows-6MV4XJHF.js} +3 -3
  88. package/dist/{rename-prompt-tag-EKWU5QF3.js → rename-prompt-tag-K5LQ4CY6.js} +2 -2
  89. package/dist/rename-test-suite-NTYHAO5X.js +21 -0
  90. package/dist/report-issue-RHZZ33IS.js +885 -0
  91. package/dist/rerun-run-plan-MUDWJBE4.js +22 -0
  92. package/dist/{revoke-api-key-FTRTZMOF.js → revoke-api-key-6LAZ3QZZ.js} +3 -3
  93. package/dist/run-agent-CAGWGTYT.js +72 -0
  94. package/dist/run-plan-T4ZYOZGA.js +39 -0
  95. package/dist/run-test-suite-L4MZ7G4D.js +26 -0
  96. package/dist/{run-workflow-QPXC627O.js → run-workflow-DFIS23AP.js} +3 -3
  97. package/dist/{search-traces-A6HFKPLJ.js → search-traces-4XTJYXIK.js} +2 -2
  98. package/dist/{set-model-provider-3WKT63ZN.js → set-model-provider-XRNMFOVR.js} +3 -3
  99. package/dist/{update-agent-SMAEHLXH.js → update-agent-DUWNYBNA.js} +3 -3
  100. package/dist/{update-dataset-BDUK7TUO.js → update-dataset-YSOMDCOB.js} +3 -3
  101. package/dist/{update-dataset-record-4ZSDRBSW.js → update-dataset-record-DEA2ITYR.js} +3 -3
  102. package/dist/{update-evaluator-LS6TIBY7.js → update-evaluator-NH7Q5GWV.js} +3 -3
  103. package/dist/{update-project-LKVYXENH.js → update-project-Q26FBSYH.js} +3 -3
  104. package/dist/update-prompt-ZQQ2C3KU.js +143 -0
  105. package/dist/{update-scenario-NEXCAQI7.js → update-scenario-WUX34JAR.js} +10 -3
  106. package/package.json +8 -9
  107. package/pyproject.toml +4 -4
  108. package/src/__tests__/agent-tools.unit.test.ts +257 -0
  109. package/src/__tests__/all-tools.integration.test.ts +321 -75
  110. package/src/__tests__/integration.integration.test.ts +7 -11
  111. package/src/__tests__/prompt-response-types.unit.test.ts +51 -0
  112. package/src/__tests__/prompts.integration.test.ts +736 -0
  113. package/src/__tests__/run-plan-tools.unit.test.ts +565 -0
  114. package/src/__tests__/scenario-tools.unit.test.ts +19 -0
  115. package/src/__tests__/simulation-run-tools.unit.test.ts +116 -0
  116. package/src/__tests__/test-suite-tools.unit.test.ts +615 -0
  117. package/src/__tests__/{tools.unit.test.ts → tools.integration.test.ts} +31 -59
  118. package/src/create-mcp-server.ts +334 -55
  119. package/src/langwatch-api-agents.ts +196 -12
  120. package/src/langwatch-api-run-plans.ts +157 -0
  121. package/src/langwatch-api-scenarios.ts +9 -0
  122. package/src/langwatch-api-simulation-runs.ts +5 -0
  123. package/src/langwatch-api-test-suites.ts +135 -0
  124. package/src/langwatch-api.ts +62 -12
  125. package/src/schemas/index.ts +5 -0
  126. package/src/schemas/run-plan.ts +92 -0
  127. package/src/schemas/suite-fields.ts +149 -0
  128. package/src/tools/archive-run-plan.ts +12 -0
  129. package/src/tools/archive-test-suite.ts +12 -0
  130. package/src/tools/create-scenario.ts +8 -0
  131. package/src/tools/create-test-suite.ts +43 -0
  132. package/src/tools/discover-scenario-schema.ts +54 -0
  133. package/src/tools/format-run-plan.ts +68 -0
  134. package/src/tools/format-scenario.ts +14 -0
  135. package/src/tools/format-suite-details.ts +96 -0
  136. package/src/tools/get-agent.ts +45 -3
  137. package/src/tools/get-prompt.ts +108 -24
  138. package/src/tools/get-run-plan.ts +62 -0
  139. package/src/tools/get-scenario.ts +3 -0
  140. package/src/tools/get-simulation-run.ts +9 -0
  141. package/src/tools/get-test-suite.ts +49 -0
  142. package/src/tools/list-agents.ts +20 -3
  143. package/src/tools/list-run-plans.ts +47 -0
  144. package/src/tools/list-scenarios.ts +12 -2
  145. package/src/tools/list-simulation-runs.ts +6 -2
  146. package/src/tools/list-test-suites.ts +35 -0
  147. package/src/tools/rename-test-suite.ts +18 -0
  148. package/src/tools/rerun-run-plan.ts +21 -0
  149. package/src/tools/run-agent.ts +54 -6
  150. package/src/tools/run-plan.ts +49 -0
  151. package/src/tools/run-test-suite.ts +30 -0
  152. package/src/tools/test-agent.ts +18 -0
  153. package/src/tools/update-prompt.ts +195 -10
  154. package/src/tools/update-scenario.ts +8 -0
  155. package/src/tools/update-test-suite.ts +45 -0
  156. package/tsconfig.json +5 -0
  157. package/uv.lock +416 -296
  158. package/dist/archive-suite-4T6BSRS7.js +0 -16
  159. package/dist/chunk-YZLYHLLI.js +0 -48
  160. package/dist/create-suite-LZS6QIAF.js +0 -39
  161. package/dist/get-agent-Y7MWZ65F.js +0 -29
  162. package/dist/get-prompt-OY5B7TRI.js +0 -46
  163. package/dist/get-suite-J7JVWO6O.js +0 -45
  164. package/dist/list-agents-KFHKGPXV.js +0 -33
  165. package/dist/list-suites-CRY4VWW6.js +0 -43
  166. package/dist/report-issue-XYVAPAYJ.js +0 -412
  167. package/dist/run-agent-6SM4XNA7.js +0 -37
  168. package/dist/run-suite-NKZCJ2IN.js +0 -30
  169. package/dist/update-prompt-ODCRQRN6.js +0 -25
  170. package/dist/update-suite-SNO3GS7T.js +0 -40
  171. package/src/langwatch-api-suites.ts +0 -118
  172. package/src/tools/archive-suite.ts +0 -12
  173. package/src/tools/create-suite.ts +0 -42
  174. package/src/tools/get-suite.ts +0 -47
  175. package/src/tools/list-suites.ts +0 -43
  176. package/src/tools/run-suite.ts +0 -28
  177. package/src/tools/update-suite.ts +0 -44
@@ -4,8 +4,8 @@ import {
4
4
  getAnnotation,
5
5
  getAnnotationsByTrace,
6
6
  listAnnotations
7
- } from "./chunk-YX3A3CFM.js";
8
- import "./chunk-A2LEVYQ5.js";
7
+ } from "./chunk-SR6QPRIE.js";
8
+ import "./chunk-GELJ2MQR.js";
9
9
  import "./chunk-WT4PO4A3.js";
10
10
  import "./chunk-SAS5OB7F.js";
11
11
  export {
@@ -15,4 +15,4 @@ export {
15
15
  getAnnotationsByTrace,
16
16
  listAnnotations
17
17
  };
18
- //# sourceMappingURL=langwatch-api-annotations-FDAS6NQ7.js.map
18
+ //# sourceMappingURL=langwatch-api-annotations-6DHVZWUK.js.map
@@ -4,8 +4,8 @@ import {
4
4
  getDashboard,
5
5
  listDashboards,
6
6
  renameDashboard
7
- } from "./chunk-AQJO2EI5.js";
8
- import "./chunk-A2LEVYQ5.js";
7
+ } from "./chunk-S4GVX36W.js";
8
+ import "./chunk-GELJ2MQR.js";
9
9
  import "./chunk-WT4PO4A3.js";
10
10
  import "./chunk-SAS5OB7F.js";
11
11
  export {
@@ -15,4 +15,4 @@ export {
15
15
  listDashboards,
16
16
  renameDashboard
17
17
  };
18
- //# sourceMappingURL=langwatch-api-dashboards-JTVCS7ZJ.js.map
18
+ //# sourceMappingURL=langwatch-api-dashboards-2KJL2M42.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-GELJ2MQR.js";
4
4
  import "./chunk-WT4PO4A3.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
@@ -50,4 +50,4 @@ export {
50
50
  toggleMonitor,
51
51
  updateMonitor
52
52
  };
53
- //# sourceMappingURL=langwatch-api-monitors-3J7UIQME.js.map
53
+ //# sourceMappingURL=langwatch-api-monitors-6ISFJ7WX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-GELJ2MQR.js";
4
4
  import "./chunk-WT4PO4A3.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
@@ -38,4 +38,4 @@ export {
38
38
  listSecrets,
39
39
  updateSecret
40
40
  };
41
- //# sourceMappingURL=langwatch-api-secrets-BUBSNCNO.js.map
41
+ //# sourceMappingURL=langwatch-api-secrets-OEBD6GBU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-GELJ2MQR.js";
4
4
  import "./chunk-WT4PO4A3.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
@@ -28,4 +28,4 @@ export {
28
28
  listTriggers,
29
29
  updateTrigger
30
30
  };
31
- //# sourceMappingURL=langwatch-api-triggers-EDFUCJN6.js.map
31
+ //# sourceMappingURL=langwatch-api-triggers-5E6DDGX6.js.map
@@ -3,8 +3,8 @@ import {
3
3
  getWorkflow,
4
4
  listWorkflows,
5
5
  runWorkflow
6
- } from "./chunk-5CCZFUXS.js";
7
- import "./chunk-A2LEVYQ5.js";
6
+ } from "./chunk-UFOYFYI7.js";
7
+ import "./chunk-GELJ2MQR.js";
8
8
  import "./chunk-WT4PO4A3.js";
9
9
  import "./chunk-SAS5OB7F.js";
10
10
  export {
@@ -13,4 +13,4 @@ export {
13
13
  listWorkflows,
14
14
  runWorkflow
15
15
  };
16
- //# sourceMappingURL=langwatch-api-workflows-NBJX5KOG.js.map
16
+ //# sourceMappingURL=langwatch-api-workflows-6UJL5U4Z.js.map
@@ -0,0 +1,43 @@
1
+ import {
2
+ listAgents
3
+ } from "./chunk-EYXMLE5X.js";
4
+ import "./chunk-GELJ2MQR.js";
5
+ import "./chunk-WT4PO4A3.js";
6
+ import "./chunk-SAS5OB7F.js";
7
+
8
+ // src/tools/list-agents.ts
9
+ var agentOwnerLabel = (agent) => agent.owner?.name ?? agent.hostLabel ?? "";
10
+ async function handleListAgents() {
11
+ const result = await listAgents({ limit: 100 });
12
+ const agents = result.data;
13
+ if (!Array.isArray(agents) || agents.length === 0) {
14
+ return "No agents found in this project.\n\n> Tip: connect one from code with `connectAgent` (TypeScript, `langwatch/agent`) or `connect_agent` (Python), or use `platform_create_agent` for an HTTP agent.";
15
+ }
16
+ const lines = [];
17
+ lines.push(`# Agents (${result.pagination.total} total)
18
+ `);
19
+ for (const a of agents) {
20
+ lines.push(`## ${a.name}`);
21
+ lines.push(`**ID**: ${a.id}`);
22
+ lines.push(`**Type**: ${a.type}`);
23
+ if (a.environment) lines.push(`**Environment**: ${a.environment}`);
24
+ if (a.status) lines.push(`**Status**: ${a.status}`);
25
+ if (a.instances) lines.push(`**Instances**: ${a.instances.length}`);
26
+ const owner = agentOwnerLabel(a);
27
+ if (owner) lines.push(`**Owner**: ${owner}`);
28
+ if (a.selectable === false) {
29
+ lines.push("**Run**: only its owner can run this agent");
30
+ }
31
+ lines.push(`**Updated**: ${a.updatedAt}`);
32
+ lines.push("");
33
+ }
34
+ lines.push(
35
+ "> Use `platform_get_agent` with the ID to see full agent details including parameters, instances and config."
36
+ );
37
+ return lines.join("\n");
38
+ }
39
+ export {
40
+ agentOwnerLabel,
41
+ handleListAgents
42
+ };
43
+ //# sourceMappingURL=list-agents-AMVDQPQL.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  getAnnotationsByTrace,
3
3
  listAnnotations
4
- } from "./chunk-YX3A3CFM.js";
5
- import "./chunk-A2LEVYQ5.js";
4
+ } from "./chunk-SR6QPRIE.js";
5
+ import "./chunk-GELJ2MQR.js";
6
6
  import "./chunk-WT4PO4A3.js";
7
7
  import "./chunk-SAS5OB7F.js";
8
8
 
@@ -31,4 +31,4 @@ async function handleListAnnotations(params) {
31
31
  export {
32
32
  handleListAnnotations
33
33
  };
34
- //# sourceMappingURL=list-annotations-ZTVP4EEL.js.map
34
+ //# sourceMappingURL=list-annotations-6PR5NLIC.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listApiKeys
3
- } from "./chunk-TJCXFNDT.js";
4
- import "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-K37ZNPXK.js";
4
+ import "./chunk-GELJ2MQR.js";
5
5
  import "./chunk-WT4PO4A3.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -35,4 +35,4 @@ async function handleListApiKeys() {
35
35
  export {
36
36
  handleListApiKeys
37
37
  };
38
- //# sourceMappingURL=list-api-keys-CWD4UQT5.js.map
38
+ //# sourceMappingURL=list-api-keys-GVPNBIHQ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listDashboards
3
- } from "./chunk-AQJO2EI5.js";
4
- import "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-S4GVX36W.js";
4
+ import "./chunk-GELJ2MQR.js";
5
5
  import "./chunk-WT4PO4A3.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -30,4 +30,4 @@ async function handleListDashboards() {
30
30
  export {
31
31
  handleListDashboards
32
32
  };
33
- //# sourceMappingURL=list-dashboards-PWG6P6KR.js.map
33
+ //# sourceMappingURL=list-dashboards-Z3BZKDGF.js.map
@@ -3,8 +3,8 @@ import {
3
3
  } from "./chunk-NUFPTHKU.js";
4
4
  import {
5
5
  listDatasetRecords
6
- } from "./chunk-77BNWQ3U.js";
7
- import "./chunk-A2LEVYQ5.js";
6
+ } from "./chunk-AN4OUA4D.js";
7
+ import "./chunk-GELJ2MQR.js";
8
8
  import "./chunk-WT4PO4A3.js";
9
9
  import "./chunk-SAS5OB7F.js";
10
10
 
@@ -37,4 +37,4 @@ async function handleListDatasetRecords(params) {
37
37
  export {
38
38
  handleListDatasetRecords
39
39
  };
40
- //# sourceMappingURL=list-dataset-records-IOE7LQXS.js.map
40
+ //# sourceMappingURL=list-dataset-records-O67HZ35Y.js.map
@@ -3,8 +3,8 @@ import {
3
3
  } from "./chunk-NUFPTHKU.js";
4
4
  import {
5
5
  listDatasets
6
- } from "./chunk-77BNWQ3U.js";
7
- import "./chunk-A2LEVYQ5.js";
6
+ } from "./chunk-AN4OUA4D.js";
7
+ import "./chunk-GELJ2MQR.js";
8
8
  import "./chunk-WT4PO4A3.js";
9
9
  import "./chunk-SAS5OB7F.js";
10
10
 
@@ -58,4 +58,4 @@ async function handleListDatasets(params = {}) {
58
58
  export {
59
59
  handleListDatasets
60
60
  };
61
- //# sourceMappingURL=list-datasets-ZT4JYUDT.js.map
61
+ //# sourceMappingURL=list-datasets-WXZL6UMP.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  getEvaluatorType,
3
3
  listEvaluators
4
- } from "./chunk-CDYQOY5U.js";
5
- import "./chunk-A2LEVYQ5.js";
4
+ } from "./chunk-OJLYYJWI.js";
5
+ import "./chunk-GELJ2MQR.js";
6
6
  import "./chunk-WT4PO4A3.js";
7
7
  import "./chunk-SAS5OB7F.js";
8
8
 
@@ -32,4 +32,4 @@ async function handleListEvaluators() {
32
32
  export {
33
33
  handleListEvaluators
34
34
  };
35
- //# sourceMappingURL=list-evaluators-SJHC7VBH.js.map
35
+ //# sourceMappingURL=list-evaluators-PAX72WCN.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listModelProviders
3
- } from "./chunk-SFB4MU6H.js";
4
- import "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-JTQJRNFJ.js";
4
+ import "./chunk-GELJ2MQR.js";
5
5
  import "./chunk-WT4PO4A3.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -33,4 +33,4 @@ async function handleListModelProviders() {
33
33
  export {
34
34
  handleListModelProviders
35
35
  };
36
- //# sourceMappingURL=list-model-providers-PPD2WPD2.js.map
36
+ //# sourceMappingURL=list-model-providers-VVLZMLCX.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listProjects
3
- } from "./chunk-7RHG56OH.js";
4
- import "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-G4ZAZTZW.js";
4
+ import "./chunk-GELJ2MQR.js";
5
5
  import "./chunk-WT4PO4A3.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -40,4 +40,4 @@ async function handleListProjects(params) {
40
40
  export {
41
41
  handleListProjects
42
42
  };
43
- //# sourceMappingURL=list-projects-K7QAIX2I.js.map
43
+ //# sourceMappingURL=list-projects-AQVI6SUK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listPromptTags
3
- } from "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-GELJ2MQR.js";
4
4
  import "./chunk-WT4PO4A3.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
@@ -21,4 +21,4 @@ async function handleListPromptTags() {
21
21
  export {
22
22
  handleListPromptTags
23
23
  };
24
- //# sourceMappingURL=list-prompt-tags-FOO6TNHB.js.map
24
+ //# sourceMappingURL=list-prompt-tags-WZFBJOHG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listPrompts
3
- } from "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-GELJ2MQR.js";
4
4
  import "./chunk-WT4PO4A3.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
@@ -30,4 +30,4 @@ async function handleListPrompts() {
30
30
  export {
31
31
  handleListPrompts
32
32
  };
33
- //# sourceMappingURL=list-prompts-SC2HAUFG.js.map
33
+ //# sourceMappingURL=list-prompts-BQOHRHYT.js.map
@@ -0,0 +1,46 @@
1
+ import {
2
+ describeRunPlanScope
3
+ } from "./chunk-JR6DJZOU.js";
4
+ import {
5
+ listRunPlans
6
+ } from "./chunk-56OGTS24.js";
7
+ import "./chunk-GELJ2MQR.js";
8
+ import "./chunk-WT4PO4A3.js";
9
+ import "./chunk-SAS5OB7F.js";
10
+
11
+ // src/tools/list-run-plans.ts
12
+ async function handleListRunPlans(params) {
13
+ const plans = await listRunPlans({
14
+ includeArchived: params.includeArchived
15
+ });
16
+ if (params.format === "json") {
17
+ return JSON.stringify(plans, null, 2);
18
+ }
19
+ if (!Array.isArray(plans) || plans.length === 0) {
20
+ return "No run plans found in this project.\n\n> Tip: Use `platform_run_plan` to start one. A run plan is created the first time you run its name.";
21
+ }
22
+ const lines = [];
23
+ lines.push(`# Run Plans (${plans.length} total)
24
+ `);
25
+ for (const plan of plans) {
26
+ lines.push(`## ${plan.name}${plan.archivedAt ? " (archived)" : ""}`);
27
+ lines.push(`**ID**: ${plan.id}`);
28
+ lines.push(`**Covers**: ${describeRunPlanScope(plan.scope, plan.scenarioIds)}`);
29
+ lines.push(
30
+ `**Targets**: ${plan.targets.length} (${plan.targets.map((t) => `${t.type}:${t.referenceId}`).join(", ")})`
31
+ );
32
+ lines.push(`**Repeat**: ${plan.repeatCount}x`);
33
+ if (plan.labels.length > 0) {
34
+ lines.push(`**Labels**: ${plan.labels.join(", ")}`);
35
+ }
36
+ lines.push("");
37
+ }
38
+ lines.push(
39
+ "> Use `platform_get_run_plan` with the ID for the full configuration, or `platform_rerun_run_plan` to run it again."
40
+ );
41
+ return lines.join("\n");
42
+ }
43
+ export {
44
+ handleListRunPlans
45
+ };
46
+ //# sourceMappingURL=list-run-plans-UBAU2DGH.js.map
@@ -1,18 +1,21 @@
1
1
  import {
2
2
  listScenarios
3
- } from "./chunk-J42FWRJ2.js";
4
- import "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-RVAE2MEA.js";
4
+ import "./chunk-GELJ2MQR.js";
5
5
  import "./chunk-WT4PO4A3.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/list-scenarios.ts
9
9
  async function handleListScenarios(params) {
10
- const scenarios = await listScenarios();
10
+ const all = await listScenarios();
11
+ const scenarios = params.testSuiteId !== void 0 && Array.isArray(all) ? all.filter((s) => s.testSuiteId === params.testSuiteId) : all;
11
12
  if (params.format === "json") {
12
13
  return JSON.stringify(scenarios, null, 2);
13
14
  }
14
15
  if (!Array.isArray(scenarios) || scenarios.length === 0) {
15
- return "No scenarios found in this project.\n\n> Tip: Use `platform_create_scenario` to create your first scenario.";
16
+ return params.testSuiteId !== void 0 ? `No scenarios found in test suite ${params.testSuiteId}.
17
+
18
+ > Tip: Use \`platform_create_scenario\` with testSuiteId \`${params.testSuiteId}\` to file one there.` : "No scenarios found in this project.\n\n> Tip: Use `platform_create_scenario` to create your first scenario.";
16
19
  }
17
20
  const lines = [];
18
21
  lines.push(`# Scenarios (${scenarios.length} total)
@@ -38,4 +41,4 @@ async function handleListScenarios(params) {
38
41
  export {
39
42
  handleListScenarios
40
43
  };
41
- //# sourceMappingURL=list-scenarios-F2WYNRIE.js.map
44
+ //# sourceMappingURL=list-scenarios-MS4IUIVM.js.map
@@ -1,7 +1,10 @@
1
1
  import {
2
2
  listSimulationRuns
3
- } from "./chunk-ZWIL4EFL.js";
4
- import "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-QAMP3CGR.js";
4
+ import {
5
+ formatRunStatus
6
+ } from "./chunk-UF6XIGYR.js";
7
+ import "./chunk-GELJ2MQR.js";
5
8
  import "./chunk-WT4PO4A3.js";
6
9
  import "./chunk-SAS5OB7F.js";
7
10
 
@@ -17,13 +20,13 @@ async function handleListSimulationRuns(params) {
17
20
  }
18
21
  const { runs } = result;
19
22
  if (runs.length === 0) {
20
- return "No simulation runs found.\n\n> Run a suite first with `platform_run_suite` to create simulation runs.";
23
+ return "No simulation runs found.\n\n> Run scenarios first with `platform_run_plan` or `platform_run_test_suite` to create simulation runs.";
21
24
  }
22
25
  const lines = [];
23
26
  lines.push(`# Simulation Runs (${runs.length} results${result.hasMore ? ", more available" : ""})
24
27
  `);
25
28
  for (const run of runs) {
26
- const statusIcon = run.status === "SUCCESS" ? "pass" : run.status === "FAILED" ? "FAIL" : run.status;
29
+ const statusIcon = formatRunStatus(run.status);
27
30
  const duration = run.durationInMs > 0 ? `${(run.durationInMs / 1e3).toFixed(1)}s` : "\u2014";
28
31
  const verdict = run.results?.verdict ?? "";
29
32
  lines.push(`## ${run.name ?? run.scenarioId} \u2014 ${statusIcon}${verdict ? ` (${verdict})` : ""}`);
@@ -33,6 +36,9 @@ async function handleListSimulationRuns(params) {
33
36
  if (run.totalCost) {
34
37
  lines.push(`**Cost**: $${run.totalCost.toFixed(4)}`);
35
38
  }
39
+ if (run.note) {
40
+ lines.push(`**Note**: ${run.note}`);
41
+ }
36
42
  lines.push("");
37
43
  }
38
44
  lines.push("> Use `platform_get_simulation_run` with a run ID to see full details (messages, results).");
@@ -41,4 +47,4 @@ async function handleListSimulationRuns(params) {
41
47
  export {
42
48
  handleListSimulationRuns
43
49
  };
44
- //# sourceMappingURL=list-simulation-runs-KF5THG5H.js.map
50
+ //# sourceMappingURL=list-simulation-runs-D6YF4ZOU.js.map
@@ -0,0 +1,35 @@
1
+ import {
2
+ listTestSuites
3
+ } from "./chunk-6DJDEXET.js";
4
+ import "./chunk-GELJ2MQR.js";
5
+ import "./chunk-WT4PO4A3.js";
6
+ import "./chunk-SAS5OB7F.js";
7
+
8
+ // src/tools/list-test-suites.ts
9
+ async function handleListTestSuites(params) {
10
+ const suites = await listTestSuites();
11
+ if (params.format === "json") {
12
+ return JSON.stringify(suites, null, 2);
13
+ }
14
+ if (!Array.isArray(suites) || suites.length === 0) {
15
+ return "No test suites found in this project.\n\n> Tip: Use `platform_create_test_suite` to create one, then file scenarios in it with `testSuiteId`.";
16
+ }
17
+ const lines = [];
18
+ lines.push(`# Test Suites (${suites.length} total)
19
+ `);
20
+ for (const suite of suites) {
21
+ lines.push(`## ${suite.name}${suite.archivedAt ? " (archived)" : ""}`);
22
+ lines.push(`**ID**: ${suite.id}`);
23
+ lines.push(`**Slug**: ${suite.slug}`);
24
+ lines.push(`**Scenarios**: ${suite.scenarioCount}`);
25
+ lines.push("");
26
+ }
27
+ lines.push(
28
+ "> Use `platform_get_test_suite` with the ID to read the scenarios, or `platform_run_test_suite` to run them against a target."
29
+ );
30
+ return lines.join("\n");
31
+ }
32
+ export {
33
+ handleListTestSuites
34
+ };
35
+ //# sourceMappingURL=list-test-suites-L7R2O6DR.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listWorkflows
3
- } from "./chunk-5CCZFUXS.js";
4
- import "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-UFOYFYI7.js";
4
+ import "./chunk-GELJ2MQR.js";
5
5
  import "./chunk-WT4PO4A3.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -33,4 +33,4 @@ async function handleListWorkflows() {
33
33
  export {
34
34
  handleListWorkflows
35
35
  };
36
- //# sourceMappingURL=list-workflows-QSJWURCK.js.map
36
+ //# sourceMappingURL=list-workflows-6MV4XJHF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  renamePromptTag
3
- } from "./chunk-A2LEVYQ5.js";
3
+ } from "./chunk-GELJ2MQR.js";
4
4
  import "./chunk-WT4PO4A3.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
@@ -16,4 +16,4 @@ async function handleRenamePromptTag(params) {
16
16
  export {
17
17
  handleRenamePromptTag
18
18
  };
19
- //# sourceMappingURL=rename-prompt-tag-EKWU5QF3.js.map
19
+ //# sourceMappingURL=rename-prompt-tag-K5LQ4CY6.js.map
@@ -0,0 +1,21 @@
1
+ import {
2
+ renameTestSuite
3
+ } from "./chunk-6DJDEXET.js";
4
+ import "./chunk-GELJ2MQR.js";
5
+ import "./chunk-WT4PO4A3.js";
6
+ import "./chunk-SAS5OB7F.js";
7
+
8
+ // src/tools/rename-test-suite.ts
9
+ async function handleRenameTestSuite(params) {
10
+ const suite = await renameTestSuite(params);
11
+ return [
12
+ `Test suite ${suite.id} is now named "${suite.name}".`,
13
+ "",
14
+ `**Slug**: ${suite.slug}`,
15
+ `**Scenarios**: ${suite.scenarioCount}`
16
+ ].join("\n");
17
+ }
18
+ export {
19
+ handleRenameTestSuite
20
+ };
21
+ //# sourceMappingURL=rename-test-suite-NTYHAO5X.js.map