@langwatch/mcp-server 1.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.
- package/.python-version +1 -0
- package/CHANGELOG.md +110 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +86 -4
- package/dist/{archive-project-MK3673A7.js → archive-project-W3IKI7UL.js} +5 -5
- package/dist/archive-run-plan-474OKHHU.js +16 -0
- package/dist/{archive-scenario-KATSXRIN.js → archive-scenario-V5UNYK26.js} +5 -5
- package/dist/archive-test-suite-O7FLDMXK.js +16 -0
- package/dist/{assign-prompt-tag-E3C5W6PI.js → assign-prompt-tag-Q46WRB6P.js} +4 -4
- package/dist/chunk-56OGTS24.js +44 -0
- package/dist/chunk-6DJDEXET.js +63 -0
- package/dist/chunk-7E4FZIYJ.js +15 -0
- package/dist/{chunk-J45SVWPR.js → chunk-AN4OUA4D.js} +2 -2
- package/dist/chunk-CKNAH5TG.js +74 -0
- package/dist/{chunk-CE6QMZOP.js → chunk-EYXMLE5X.js} +86 -11
- package/dist/{chunk-XY4STOBE.js → chunk-G4ZAZTZW.js} +2 -2
- package/dist/{chunk-5UWY24RP.js → chunk-GELJ2MQR.js} +12 -3
- package/dist/chunk-HV4DWKBI.js +46 -0
- package/dist/chunk-JR6DJZOU.js +49 -0
- package/dist/{chunk-DAIQKS27.js → chunk-JTQJRNFJ.js} +2 -2
- package/dist/{chunk-WWMDHZZV.js → chunk-K37ZNPXK.js} +2 -2
- package/dist/{chunk-EU22L52K.js → chunk-OJLYYJWI.js} +2 -2
- package/dist/{chunk-Y3HDZ6OW.js → chunk-QAMP3CGR.js} +2 -2
- package/dist/{chunk-VYPSKRPN.js → chunk-QRO35SOM.js} +347 -146
- package/dist/{chunk-O3LWVN67.js → chunk-RVAE2MEA.js} +2 -2
- package/dist/{chunk-UXXA4D6K.js → chunk-S4GVX36W.js} +2 -2
- package/dist/{chunk-BJ7B4R26.js → chunk-SAS5OB7F.js} +18 -2
- package/dist/{chunk-RYRB2YVJ.js → chunk-SR6QPRIE.js} +2 -2
- package/dist/chunk-UF6XIGYR.js +58 -0
- package/dist/{chunk-T7WJVS2N.js → chunk-UFOYFYI7.js} +2 -2
- package/dist/chunk-UJPXFA26.js +267 -0
- package/dist/{chunk-KOO5733S.js → chunk-WT4PO4A3.js} +8 -2
- package/dist/config.js +2 -2
- package/dist/{create-agent-7W57J7MT.js → create-agent-JFJ2K6X3.js} +5 -5
- package/dist/{create-annotation-W2XELBCQ.js → create-annotation-EUXXQ6NS.js} +5 -5
- package/dist/{create-api-key-MKRXKFJM.js → create-api-key-BGBB76JX.js} +5 -5
- package/dist/{create-dashboard-QGL7IODC.js → create-dashboard-Z76AIPLS.js} +5 -5
- package/dist/{create-dataset-3PH7A4HG.js → create-dataset-FD5VAXU4.js} +5 -5
- package/dist/{create-dataset-records-4DZS3VRL.js → create-dataset-records-WQUXXOHI.js} +5 -5
- package/dist/{create-evaluator-YWH6NC4M.js → create-evaluator-6NV33Z52.js} +5 -5
- package/dist/create-mcp-server.js +9 -4
- package/dist/{create-project-BOBQ32C5.js → create-project-ZQ7TFIO2.js} +5 -5
- package/dist/{create-prompt-FLCFGITE.js → create-prompt-BS6QRCUU.js} +4 -4
- package/dist/{create-prompt-tag-EMPNIKEA.js → create-prompt-tag-FCQ5ELSQ.js} +4 -4
- package/dist/{create-scenario-BSBIHUL6.js → create-scenario-DRPTPXU3.js} +12 -5
- package/dist/create-test-suite-ZIZCCFJ4.js +37 -0
- package/dist/{delete-agent-7MSYNY5E.js → delete-agent-SA4JMUZF.js} +5 -5
- package/dist/{delete-annotation-ZT5IGN24.js → delete-annotation-X3KKK7QY.js} +5 -5
- package/dist/{delete-dashboard-BTIY5S3L.js → delete-dashboard-LYMRPF27.js} +5 -5
- package/dist/{delete-dataset-U45HQHPR.js → delete-dataset-W6EZ44HY.js} +5 -5
- package/dist/{delete-dataset-records-R43IMAWB.js → delete-dataset-records-7CNOTALB.js} +5 -5
- package/dist/{delete-evaluator-U6JMQ6C7.js → delete-evaluator-RKYC4TNB.js} +5 -5
- package/dist/{delete-prompt-tag-4EV4TDHB.js → delete-prompt-tag-QB3OCZUV.js} +4 -4
- package/dist/{delete-workflow-5QYALXEL.js → delete-workflow-NG2VXYYM.js} +5 -5
- package/dist/{discover-evaluator-schema-MRGHVNTT.js → discover-evaluator-schema-ESSHQGPY.js} +58 -321
- package/dist/{discover-scenario-schema-UPBTCWPG.js → discover-scenario-schema-W7KBXA4J.js} +54 -2
- package/dist/{discover-schema-ICGXPHUW.js → discover-schema-L6QDPON3.js} +2 -2
- package/dist/get-agent-7THF7HCU.js +66 -0
- package/dist/{get-analytics-PVERWOA5.js → get-analytics-R6AZD3AW.js} +4 -4
- package/dist/{get-dashboard-ZZPC3WMD.js → get-dashboard-P4WWVHFU.js} +5 -5
- package/dist/{get-dataset-25TB2LQH.js → get-dataset-AKTYSQDI.js} +5 -5
- package/dist/{get-evaluator-3FTRQKEC.js → get-evaluator-RZ44UIN6.js} +5 -5
- package/dist/{get-project-5OAXYC57.js → get-project-QSQEAB33.js} +5 -5
- package/dist/get-prompt-GVKXF5NL.js +100 -0
- package/dist/get-run-plan-NY7J5GRE.js +61 -0
- package/dist/{get-scenario-DSSTR6FI.js → get-scenario-Q3LLQE4T.js} +9 -5
- package/dist/{get-simulation-run-RQPMS2MC.js → get-simulation-run-WINEYDMK.js} +14 -5
- package/dist/get-test-suite-4HKA7OKS.js +49 -0
- package/dist/{get-trace-O5VT3NAC.js → get-trace-RCUV7N4O.js} +4 -4
- package/dist/{get-workflow-3EZDOEIF.js → get-workflow-EEOC7Y45.js} +5 -5
- package/dist/http-security-EU3CHTY7.js +26 -0
- package/dist/{http-server-2ACJ3CXW.js → http-server-WCDUARTH.js} +1038 -693
- package/dist/index.js +6437 -4020
- package/dist/{langwatch-api-annotations-E65MI3WZ.js → langwatch-api-annotations-6DHVZWUK.js} +5 -5
- package/dist/{langwatch-api-dashboards-QCDECRCY.js → langwatch-api-dashboards-2KJL2M42.js} +5 -5
- package/dist/{langwatch-api-monitors-UIO2KTDV.js → langwatch-api-monitors-6ISFJ7WX.js} +4 -4
- package/dist/{langwatch-api-secrets-4T2EKSJ7.js → langwatch-api-secrets-OEBD6GBU.js} +4 -4
- package/dist/{langwatch-api-triggers-MPOEKPUY.js → langwatch-api-triggers-5E6DDGX6.js} +4 -4
- package/dist/langwatch-api-workflows-6UJL5U4Z.js +16 -0
- package/dist/list-agents-AMVDQPQL.js +43 -0
- package/dist/{list-annotations-CGX5BT7E.js → list-annotations-6PR5NLIC.js} +5 -5
- package/dist/{list-api-keys-JLWJPFRX.js → list-api-keys-GVPNBIHQ.js} +5 -5
- package/dist/{list-dashboards-RNIWX3TX.js → list-dashboards-Z3BZKDGF.js} +5 -5
- package/dist/{list-dataset-records-B5MHZR66.js → list-dataset-records-O67HZ35Y.js} +5 -5
- package/dist/{list-datasets-BVCAMQCP.js → list-datasets-WXZL6UMP.js} +5 -5
- package/dist/{list-evaluators-65FBTL2U.js → list-evaluators-PAX72WCN.js} +5 -5
- package/dist/{list-model-providers-GRK3I3VV.js → list-model-providers-VVLZMLCX.js} +5 -5
- package/dist/{list-projects-JLMBFMW3.js → list-projects-AQVI6SUK.js} +5 -5
- package/dist/{list-prompt-tags-UHNWDGQI.js → list-prompt-tags-WZFBJOHG.js} +4 -4
- package/dist/{list-prompts-7254B3U7.js → list-prompts-BQOHRHYT.js} +4 -4
- package/dist/list-run-plans-UBAU2DGH.js +46 -0
- package/dist/{list-scenarios-46YNICKM.js → list-scenarios-MS4IUIVM.js} +10 -7
- package/dist/{list-simulation-runs-LGNEFNPN.js → list-simulation-runs-D6YF4ZOU.js} +13 -7
- package/dist/list-test-suites-L7R2O6DR.js +35 -0
- package/dist/{list-workflows-MLQDM6CP.js → list-workflows-6MV4XJHF.js} +5 -5
- package/dist/{rename-prompt-tag-RHQMNEQL.js → rename-prompt-tag-K5LQ4CY6.js} +4 -4
- package/dist/rename-test-suite-NTYHAO5X.js +21 -0
- package/dist/report-issue-RHZZ33IS.js +885 -0
- package/dist/rerun-run-plan-MUDWJBE4.js +22 -0
- package/dist/{revoke-api-key-3Y35EMBT.js → revoke-api-key-6LAZ3QZZ.js} +5 -5
- package/dist/run-agent-CAGWGTYT.js +72 -0
- package/dist/run-plan-T4ZYOZGA.js +39 -0
- package/dist/run-test-suite-L4MZ7G4D.js +26 -0
- package/dist/{run-workflow-5LVBZYLS.js → run-workflow-DFIS23AP.js} +5 -5
- package/dist/{search-traces-U4HLOCZ2.js → search-traces-4XTJYXIK.js} +4 -4
- package/dist/{set-model-provider-V3M5CDIY.js → set-model-provider-XRNMFOVR.js} +5 -5
- package/dist/{update-agent-47RZIHS7.js → update-agent-DUWNYBNA.js} +5 -5
- package/dist/{update-dataset-G6QJJGS5.js → update-dataset-YSOMDCOB.js} +5 -5
- package/dist/{update-dataset-record-RMWLSWCS.js → update-dataset-record-DEA2ITYR.js} +5 -5
- package/dist/{update-evaluator-SFRRI5Q3.js → update-evaluator-NH7Q5GWV.js} +5 -5
- package/dist/{update-project-PI5DWBVK.js → update-project-Q26FBSYH.js} +5 -5
- package/dist/update-prompt-ZQQ2C3KU.js +143 -0
- package/dist/{update-scenario-G3IU2UIB.js → update-scenario-WUX34JAR.js} +12 -5
- package/package.json +8 -9
- package/pyproject.toml +5 -5
- package/src/__tests__/agent-tools.unit.test.ts +257 -0
- package/src/__tests__/all-tools.integration.test.ts +321 -75
- package/src/__tests__/config.unit.test.ts +33 -0
- package/src/__tests__/docker.integration.test.ts +91 -7
- package/src/__tests__/documentation-fetch-security.integration.test.ts +8 -2
- package/src/__tests__/feature-map-tool-drift.unit.test.ts +93 -0
- package/src/__tests__/http-security-origin.unit.test.ts +97 -0
- package/src/__tests__/http-security-sessions.unit.test.ts +209 -0
- package/src/__tests__/http-security-verifier.unit.test.ts +248 -0
- package/src/__tests__/http-server-allocation.integration.test.ts +279 -0
- package/src/__tests__/http-server-origin.integration.test.ts +169 -0
- package/src/__tests__/http-server-session-auth.integration.test.ts +341 -0
- package/src/__tests__/http-transport.integration.test.ts +85 -87
- package/src/__tests__/integration.integration.test.ts +7 -11
- package/src/__tests__/prompt-response-types.unit.test.ts +51 -0
- package/src/__tests__/prompts.integration.test.ts +736 -0
- package/src/__tests__/run-plan-tools.unit.test.ts +565 -0
- package/src/__tests__/scenario-tools.unit.test.ts +19 -0
- package/src/__tests__/simulation-run-tools.unit.test.ts +116 -0
- package/src/__tests__/support/http-server-harness.ts +138 -0
- package/src/__tests__/test-suite-tools.unit.test.ts +615 -0
- package/src/__tests__/{tools.unit.test.ts → tools.integration.test.ts} +31 -59
- package/src/config.ts +17 -2
- package/src/create-mcp-server.ts +334 -55
- package/src/http-security.ts +492 -0
- package/src/http-server.ts +536 -152
- package/src/index.ts +49 -2
- package/src/langwatch-api-agents.ts +196 -12
- package/src/langwatch-api-run-plans.ts +157 -0
- package/src/langwatch-api-scenarios.ts +9 -0
- package/src/langwatch-api-simulation-runs.ts +5 -0
- package/src/langwatch-api-test-suites.ts +135 -0
- package/src/langwatch-api.ts +62 -12
- package/src/schemas/index.ts +5 -0
- package/src/schemas/run-plan.ts +92 -0
- package/src/schemas/suite-fields.ts +149 -0
- package/src/tools/archive-run-plan.ts +12 -0
- package/src/tools/archive-test-suite.ts +12 -0
- package/src/tools/create-scenario.ts +8 -0
- package/src/tools/create-test-suite.ts +43 -0
- package/src/tools/discover-evaluator-schema.ts +2 -2
- package/src/tools/discover-scenario-schema.ts +54 -0
- package/src/tools/format-run-plan.ts +68 -0
- package/src/tools/format-scenario.ts +14 -0
- package/src/tools/format-suite-details.ts +96 -0
- package/src/tools/get-agent.ts +45 -3
- package/src/tools/get-prompt.ts +108 -24
- package/src/tools/get-run-plan.ts +62 -0
- package/src/tools/get-scenario.ts +3 -0
- package/src/tools/get-simulation-run.ts +9 -0
- package/src/tools/get-test-suite.ts +49 -0
- package/src/tools/list-agents.ts +20 -3
- package/src/tools/list-run-plans.ts +47 -0
- package/src/tools/list-scenarios.ts +12 -2
- package/src/tools/list-simulation-runs.ts +6 -2
- package/src/tools/list-test-suites.ts +35 -0
- package/src/tools/rename-test-suite.ts +18 -0
- package/src/tools/rerun-run-plan.ts +21 -0
- package/src/tools/run-agent.ts +54 -6
- package/src/tools/run-plan.ts +49 -0
- package/src/tools/run-test-suite.ts +30 -0
- package/src/tools/test-agent.ts +18 -0
- package/src/tools/update-prompt.ts +195 -10
- package/src/tools/update-scenario.ts +8 -0
- package/src/tools/update-test-suite.ts +45 -0
- package/tsconfig.json +7 -2
- package/uv.lock +418 -298
- package/dist/archive-suite-C3KX6IIZ.js +0 -16
- package/dist/chunk-WDH5P5RF.js +0 -48
- package/dist/create-suite-TWF6BBR4.js +0 -39
- package/dist/get-agent-7QJVPH72.js +0 -29
- package/dist/get-prompt-I753LZKZ.js +0 -46
- package/dist/get-suite-GTOCY5PL.js +0 -45
- package/dist/langwatch-api-workflows-5HRZ7HR4.js +0 -16
- package/dist/list-agents-TIJTP566.js +0 -33
- package/dist/list-suites-5VK4HXEK.js +0 -43
- package/dist/report-issue-DXJ6TPTC.js +0 -412
- package/dist/run-agent-RBSIFKRT.js +0 -37
- package/dist/run-suite-K3DNQ3SE.js +0 -30
- package/dist/update-prompt-RQFTEO7Y.js +0 -25
- package/dist/update-suite-TRGGLNR7.js +0 -40
- package/pnpm-workspace.yaml +0 -34
- package/src/langwatch-api-suites.ts +0 -118
- package/src/tools/archive-suite.ts +0 -12
- package/src/tools/create-suite.ts +0 -42
- package/src/tools/get-suite.ts +0 -47
- package/src/tools/list-suites.ts +0 -43
- package/src/tools/run-suite.ts +0 -28
- package/src/tools/update-suite.ts +0 -44
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GELJ2MQR.js";
|
|
4
|
+
|
|
5
|
+
// src/langwatch-api-agents.ts
|
|
6
|
+
import { z } from "zod";
|
|
4
7
|
|
|
5
8
|
// src/public-http-request.ts
|
|
6
9
|
import { lookup as dnsLookup } from "dns/promises";
|
|
@@ -8,7 +11,7 @@ import { request as httpRequest } from "http";
|
|
|
8
11
|
import { request as httpsRequest } from "https";
|
|
9
12
|
import { isIP } from "net";
|
|
10
13
|
|
|
11
|
-
//
|
|
14
|
+
// ../../packages/ssrf/src/index.ts
|
|
12
15
|
function ipv4ToBytes(input) {
|
|
13
16
|
const parts = input.split(".");
|
|
14
17
|
if (parts.length !== 4) return null;
|
|
@@ -365,33 +368,104 @@ async function requestPublicJson(input, options = {}, redirectCount = 0) {
|
|
|
365
368
|
}
|
|
366
369
|
|
|
367
370
|
// src/langwatch-api-agents.ts
|
|
371
|
+
var agentCallParamsSchema = z.record(
|
|
372
|
+
z.string(),
|
|
373
|
+
z.union([z.string(), z.number(), z.boolean()])
|
|
374
|
+
);
|
|
368
375
|
async function listAgents(params) {
|
|
369
376
|
const query = new URLSearchParams();
|
|
370
377
|
if (params?.page) query.set("page", String(params.page));
|
|
371
378
|
if (params?.limit) query.set("limit", String(params.limit));
|
|
372
379
|
const qs = query.toString() ? `?${query}` : "";
|
|
373
|
-
return makeRequest("GET", `/api/agents${qs}`);
|
|
380
|
+
return makeRequest("GET", `/api/v1/agents${qs}`);
|
|
374
381
|
}
|
|
375
382
|
async function getAgent(id) {
|
|
376
383
|
return makeRequest(
|
|
377
384
|
"GET",
|
|
378
|
-
`/api/agents/${encodeURIComponent(id)}`
|
|
385
|
+
`/api/v1/agents/${encodeURIComponent(id)}`
|
|
379
386
|
);
|
|
380
387
|
}
|
|
381
388
|
async function createAgent(data) {
|
|
382
|
-
return makeRequest("POST", "/api/agents", data);
|
|
389
|
+
return makeRequest("POST", "/api/v1/agents", data);
|
|
383
390
|
}
|
|
384
391
|
async function updateAgent(params) {
|
|
385
392
|
const { id, ...data } = params;
|
|
386
393
|
return makeRequest(
|
|
387
394
|
"PATCH",
|
|
388
|
-
`/api/agents/${encodeURIComponent(id)}`,
|
|
395
|
+
`/api/v1/agents/${encodeURIComponent(id)}`,
|
|
389
396
|
data
|
|
390
397
|
);
|
|
391
398
|
}
|
|
392
|
-
async function
|
|
399
|
+
async function callAgent({
|
|
400
|
+
id,
|
|
401
|
+
body
|
|
402
|
+
}) {
|
|
403
|
+
return makeRequest(
|
|
404
|
+
"POST",
|
|
405
|
+
`/api/v1/agents/${encodeURIComponent(id)}/call`,
|
|
406
|
+
body
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
async function testAgent(id) {
|
|
410
|
+
return makeRequest(
|
|
411
|
+
"POST",
|
|
412
|
+
`/api/v1/agents/${encodeURIComponent(id)}/test`,
|
|
413
|
+
{}
|
|
414
|
+
);
|
|
415
|
+
}
|
|
416
|
+
var isMessageList = (value) => Array.isArray(value) && value.every(
|
|
417
|
+
(item) => typeof item === "object" && item !== null && typeof item.role === "string"
|
|
418
|
+
);
|
|
419
|
+
function buildRelayBody({
|
|
420
|
+
input,
|
|
421
|
+
message,
|
|
422
|
+
parameters,
|
|
423
|
+
threadId
|
|
424
|
+
}) {
|
|
425
|
+
let messages;
|
|
426
|
+
if (message !== void 0) {
|
|
427
|
+
messages = [{ role: "user", content: message }];
|
|
428
|
+
} else if (isMessageList(input.messages)) {
|
|
429
|
+
messages = input.messages;
|
|
430
|
+
} else {
|
|
431
|
+
return "a connected agent takes a conversation: give `message`, or `input` with a `messages` list.";
|
|
432
|
+
}
|
|
433
|
+
const body = { messages };
|
|
434
|
+
const thread = threadId ?? (typeof input.threadId === "string" ? input.threadId : void 0);
|
|
435
|
+
if (thread) body.threadId = thread;
|
|
436
|
+
if (isMessageList(input.newMessages)) body.newMessages = input.newMessages;
|
|
437
|
+
if (input.session !== void 0) body.session = input.session;
|
|
438
|
+
let inputParams;
|
|
439
|
+
if (input.params !== void 0) {
|
|
440
|
+
const parsed = agentCallParamsSchema.safeParse(input.params);
|
|
441
|
+
if (!parsed.success) {
|
|
442
|
+
return "`params` takes one flat object of string, number or boolean values. Nested objects and arrays are not run parameters.";
|
|
443
|
+
}
|
|
444
|
+
inputParams = parsed.data;
|
|
445
|
+
}
|
|
446
|
+
if (inputParams || parameters) body.params = { ...inputParams ?? {}, ...parameters ?? {} };
|
|
447
|
+
return body;
|
|
448
|
+
}
|
|
449
|
+
async function runAgent({
|
|
450
|
+
id,
|
|
451
|
+
input,
|
|
452
|
+
message,
|
|
453
|
+
parameters,
|
|
454
|
+
threadId
|
|
455
|
+
}) {
|
|
393
456
|
const agent = await getAgent(id);
|
|
394
457
|
const config = agent.config ?? {};
|
|
458
|
+
if (agent.type === "connected") {
|
|
459
|
+
const body = buildRelayBody({ input: input ?? {}, message, parameters, threadId });
|
|
460
|
+
if (typeof body === "string") throw new Error(body);
|
|
461
|
+
if (agent.status === "offline") {
|
|
462
|
+
throw new Error(
|
|
463
|
+
`Agent "${agent.name}" is offline. Start the process that calls connectAgent (or connect_agent) and try again.`
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
const result2 = await callAgent({ id: agent.id, body });
|
|
467
|
+
return { agentType: "connected", result: result2 };
|
|
468
|
+
}
|
|
395
469
|
if (agent.type === "http") {
|
|
396
470
|
const url = config.url;
|
|
397
471
|
if (!url) {
|
|
@@ -407,17 +481,17 @@ async function runAgent(id, input) {
|
|
|
407
481
|
const workflowId = config.workflowId;
|
|
408
482
|
if (!workflowId) {
|
|
409
483
|
throw new Error(
|
|
410
|
-
`Agent "${agent.name}" (type: ${agent.type}) cannot be executed directly. Only HTTP agents and workflow-linked agents can be run.`
|
|
484
|
+
`Agent "${agent.name}" (type: ${agent.type}) cannot be executed directly. Only connected agents, HTTP agents and workflow-linked agents can be run.`
|
|
411
485
|
);
|
|
412
486
|
}
|
|
413
|
-
const { runWorkflow } = await import("./langwatch-api-workflows-
|
|
487
|
+
const { runWorkflow } = await import("./langwatch-api-workflows-6UJL5U4Z.js");
|
|
414
488
|
const result = await runWorkflow(workflowId, input);
|
|
415
489
|
return { agentType: agent.type, result };
|
|
416
490
|
}
|
|
417
491
|
async function deleteAgent(id) {
|
|
418
492
|
return makeRequest(
|
|
419
493
|
"DELETE",
|
|
420
|
-
`/api/agents/${encodeURIComponent(id)}`
|
|
494
|
+
`/api/v1/agents/${encodeURIComponent(id)}`
|
|
421
495
|
);
|
|
422
496
|
}
|
|
423
497
|
|
|
@@ -426,7 +500,8 @@ export {
|
|
|
426
500
|
getAgent,
|
|
427
501
|
createAgent,
|
|
428
502
|
updateAgent,
|
|
503
|
+
testAgent,
|
|
429
504
|
runAgent,
|
|
430
505
|
deleteAgent
|
|
431
506
|
};
|
|
432
|
-
//# sourceMappingURL=chunk-
|
|
507
|
+
//# sourceMappingURL=chunk-EYXMLE5X.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GELJ2MQR.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-projects.ts
|
|
6
6
|
async function listProjects(params) {
|
|
@@ -41,4 +41,4 @@ export {
|
|
|
41
41
|
updateProject,
|
|
42
42
|
archiveProject
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-G4ZAZTZW.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getConfig,
|
|
3
3
|
requireApiKey
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WT4PO4A3.js";
|
|
5
5
|
|
|
6
6
|
// src/langwatch-api.ts
|
|
7
7
|
var LangWatchApiError = class extends Error {
|
|
@@ -37,7 +37,9 @@ function parseErrorBody(responseBody) {
|
|
|
37
37
|
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
38
38
|
return {};
|
|
39
39
|
}
|
|
40
|
-
const
|
|
40
|
+
const envelope = parsed;
|
|
41
|
+
const nested = typeof envelope.error === "object" && envelope.error !== null && !Array.isArray(envelope.error) ? envelope.error : null;
|
|
42
|
+
const body = nested ?? envelope;
|
|
41
43
|
const code = typeof body.code === "string" ? body.code : typeof body.error === "string" ? body.error : void 0;
|
|
42
44
|
const message = typeof body.message === "string" ? body.message : void 0;
|
|
43
45
|
if (code === void 0 && message === void 0) {
|
|
@@ -150,6 +152,12 @@ async function getPrompt(idOrHandle, options) {
|
|
|
150
152
|
`/api/prompts/${encodeURIComponent(idOrHandle)}${query}`
|
|
151
153
|
);
|
|
152
154
|
}
|
|
155
|
+
async function getPromptVersions(idOrHandle) {
|
|
156
|
+
return makeRequest(
|
|
157
|
+
"GET",
|
|
158
|
+
`/api/prompts/${encodeURIComponent(idOrHandle)}/versions`
|
|
159
|
+
);
|
|
160
|
+
}
|
|
153
161
|
async function createPrompt(data) {
|
|
154
162
|
return makeRequest(
|
|
155
163
|
"POST",
|
|
@@ -206,6 +214,7 @@ export {
|
|
|
206
214
|
getAnalyticsTimeseries,
|
|
207
215
|
listPrompts,
|
|
208
216
|
getPrompt,
|
|
217
|
+
getPromptVersions,
|
|
209
218
|
createPrompt,
|
|
210
219
|
updatePrompt,
|
|
211
220
|
assignPromptTag,
|
|
@@ -214,4 +223,4 @@ export {
|
|
|
214
223
|
renamePromptTag,
|
|
215
224
|
deletePromptTag
|
|
216
225
|
};
|
|
217
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# sourceMappingURL=chunk-GELJ2MQR.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// src/schemas/run-plan.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var runPlanScopeSchema = z.discriminatedUnion("mode", [
|
|
4
|
+
z.object({ mode: z.literal("all") }).describe("Every non-archived scenario of the project"),
|
|
5
|
+
z.object({
|
|
6
|
+
mode: z.literal("test_suites"),
|
|
7
|
+
testSuiteIds: z.array(z.string()).describe("The test suite IDs whose scenarios to run")
|
|
8
|
+
}).describe("The non-archived scenarios filed in the given test suites"),
|
|
9
|
+
z.object({
|
|
10
|
+
mode: z.literal("labels"),
|
|
11
|
+
labels: z.array(z.string()).describe("The labels to select scenarios by")
|
|
12
|
+
}).describe(
|
|
13
|
+
"The non-archived scenarios carrying at least one of the given labels"
|
|
14
|
+
),
|
|
15
|
+
z.object({ mode: z.literal("scenarios") }).describe("The scenarios named in scenarioIds, picked by hand")
|
|
16
|
+
]);
|
|
17
|
+
var runParametersSchema = z.record(
|
|
18
|
+
z.string(),
|
|
19
|
+
z.union([z.string(), z.number(), z.boolean()])
|
|
20
|
+
);
|
|
21
|
+
var runPlanTargetSchema = z.object({
|
|
22
|
+
type: z.enum(["connected", "prompt", "http", "code", "workflow"]).describe(
|
|
23
|
+
"What kind of thing the target is. A connected agent is one that registered itself from code with connectAgent (TypeScript) or connect_agent (Python)."
|
|
24
|
+
),
|
|
25
|
+
referenceId: z.string().describe(
|
|
26
|
+
"The ID of the prompt, agent or workflow to run against. A connected agent may also be named as <name>@<environment>, for example support-agent@production; the platform resolves it."
|
|
27
|
+
),
|
|
28
|
+
parameters: runParametersSchema.optional().describe(
|
|
29
|
+
"Parameter values this target alone runs with, by name. They override the run-level parameters for this target. Name the same agent twice with different values here to compare it on two models."
|
|
30
|
+
)
|
|
31
|
+
});
|
|
32
|
+
function toWireTargets(targets) {
|
|
33
|
+
return targets.map((target) => ({
|
|
34
|
+
type: target.type,
|
|
35
|
+
referenceId: target.referenceId,
|
|
36
|
+
...target.parameters ? { runParameters: target.parameters } : {}
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
runPlanScopeSchema,
|
|
42
|
+
runParametersSchema,
|
|
43
|
+
runPlanTargetSchema,
|
|
44
|
+
toWireTargets
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=chunk-HV4DWKBI.js.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// src/tools/format-run-plan.ts
|
|
2
|
+
function formatRunPlanRun(result) {
|
|
3
|
+
const lines = [];
|
|
4
|
+
lines.push(
|
|
5
|
+
result.created ? `Run plan "${result.planName}" created and started.` : `Run plan "${result.planName}" started with the configuration of this run.`
|
|
6
|
+
);
|
|
7
|
+
lines.push("");
|
|
8
|
+
lines.push(`**Plan**: ${result.planName} (${result.runPlanId})`);
|
|
9
|
+
lines.push(`**Batch Run ID**: ${result.batchRunId}`);
|
|
10
|
+
lines.push(`**Set ID**: ${result.setId}`);
|
|
11
|
+
lines.push(`**Jobs**: ${result.jobCount}`);
|
|
12
|
+
if (result.skippedArchived.scenarios.length > 0) {
|
|
13
|
+
lines.push(
|
|
14
|
+
`**Skipped archived scenarios**: ${result.skippedArchived.scenarios.join(", ")}`
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
if (result.skippedArchived.targets.length > 0) {
|
|
18
|
+
lines.push(
|
|
19
|
+
`**Skipped archived targets**: ${result.skippedArchived.targets.join(", ")}`
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
lines.push(`**View**: ${result.platformUrl}`);
|
|
23
|
+
lines.push("");
|
|
24
|
+
lines.push(
|
|
25
|
+
"> Use `platform_list_simulation_runs` with the batch run ID to read the results."
|
|
26
|
+
);
|
|
27
|
+
return lines.join("\n");
|
|
28
|
+
}
|
|
29
|
+
function describeRunPlanScope(scope, scenarioIds) {
|
|
30
|
+
if (scope === null) {
|
|
31
|
+
return `hand-picked scenarios (${scenarioIds.length})`;
|
|
32
|
+
}
|
|
33
|
+
switch (scope.mode) {
|
|
34
|
+
case "all":
|
|
35
|
+
return "every scenario in the project";
|
|
36
|
+
case "test_suites":
|
|
37
|
+
return `test suites: ${scope.testSuiteIds.join(", ")}`;
|
|
38
|
+
case "labels":
|
|
39
|
+
return `labels: ${scope.labels.join(", ")}`;
|
|
40
|
+
case "scenarios":
|
|
41
|
+
return `hand-picked scenarios (${scenarioIds.length})`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export {
|
|
46
|
+
formatRunPlanRun,
|
|
47
|
+
describeRunPlanScope
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=chunk-JR6DJZOU.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GELJ2MQR.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-model-providers.ts
|
|
6
6
|
async function listModelProviders() {
|
|
@@ -19,4 +19,4 @@ export {
|
|
|
19
19
|
listModelProviders,
|
|
20
20
|
setModelProvider
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-JTQJRNFJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GELJ2MQR.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-api-keys.ts
|
|
6
6
|
async function listApiKeys() {
|
|
@@ -21,4 +21,4 @@ export {
|
|
|
21
21
|
createApiKey,
|
|
22
22
|
revokeApiKey
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
24
|
+
//# sourceMappingURL=chunk-K37ZNPXK.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GELJ2MQR.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-evaluators.ts
|
|
6
6
|
function getEvaluatorType(evaluator) {
|
|
@@ -41,4 +41,4 @@ export {
|
|
|
41
41
|
updateEvaluator,
|
|
42
42
|
deleteEvaluator
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-OJLYYJWI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GELJ2MQR.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-simulation-runs.ts
|
|
6
6
|
async function listSimulationRuns(params) {
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
listSimulationRuns,
|
|
23
23
|
getSimulationRun
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-QAMP3CGR.js.map
|