callman-mcp 0.10.2 → 0.12.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/CHANGELOG.md +34 -0
- package/README.md +15 -4
- package/dist/client/api.d.ts +31 -3
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +14 -0
- package/dist/client/api.js.map +1 -1
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +33 -1
- package/dist/client/errors.js.map +1 -1
- package/dist/client/types.d.ts +59 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/domain/pipeline.d.ts +80 -0
- package/dist/domain/pipeline.d.ts.map +1 -0
- package/dist/domain/pipeline.js +139 -0
- package/dist/domain/pipeline.js.map +1 -0
- package/dist/domain/scenario/build.d.ts +62 -6
- package/dist/domain/scenario/build.d.ts.map +1 -1
- package/dist/domain/scenario/build.js +8 -0
- package/dist/domain/scenario/build.js.map +1 -1
- package/dist/resources/docs/overview.d.ts +1 -1
- package/dist/resources/docs/overview.d.ts.map +1 -1
- package/dist/resources/docs/overview.js +20 -0
- package/dist/resources/docs/overview.js.map +1 -1
- package/dist/resources/generated/aiPacks.d.ts +1 -1
- package/dist/resources/generated/aiPacks.js +6 -6
- package/dist/resources/generated/aiPacks.js.map +1 -1
- package/dist/tools/catalog.d.ts.map +1 -1
- package/dist/tools/catalog.js +5 -0
- package/dist/tools/catalog.js.map +1 -1
- package/dist/tools/collections.d.ts.map +1 -1
- package/dist/tools/collections.js +249 -17
- package/dist/tools/collections.js.map +1 -1
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +36 -0
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/mockSchemas.d.ts +48 -48
- package/dist/tools/mockShared.d.ts +64 -64
- package/dist/tools/run.d.ts +2 -0
- package/dist/tools/run.d.ts.map +1 -1
- package/dist/tools/run.js +34 -5
- package/dist/tools/run.js.map +1 -1
- package/dist-cjs/client/api.js +14 -0
- package/dist-cjs/client/errors.js +33 -1
- package/dist-cjs/domain/pipeline.js +144 -0
- package/dist-cjs/domain/scenario/build.js +8 -0
- package/dist-cjs/resources/docs/overview.js +20 -0
- package/dist-cjs/resources/generated/aiPacks.js +6 -6
- package/dist-cjs/tools/catalog.js +5 -0
- package/dist-cjs/tools/collections.js +247 -15
- package/dist-cjs/tools/contracts.js +36 -0
- package/dist-cjs/tools/run.js +33 -4
- package/package.json +2 -2
package/dist/tools/run.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { buildScriptLayers, describeScriptLayer } from "callman-core";
|
|
3
3
|
import { ToolInputError } from "../client/errors.js";
|
|
4
|
-
import {
|
|
4
|
+
import { evaluateRunVerdict, resolveRunCriteria } from "../domain/pipeline.js";
|
|
5
|
+
import { resolvedSummary, resolveRef } from "../domain/resolve.js";
|
|
5
6
|
import { createRedactor } from "../lib/redact.js";
|
|
6
7
|
import { LIMITS, safeStringify } from "../lib/truncate.js";
|
|
7
8
|
import { executeCollection } from "../run/executeCollection.js";
|
|
@@ -67,6 +68,7 @@ export const prepareRun = async (ctx, ws, collectionId, environmentRef) => {
|
|
|
67
68
|
environment: bundle.environment ? { id: bundle.environment.id, name: bundle.environment.name } : null,
|
|
68
69
|
warnings,
|
|
69
70
|
redaction,
|
|
71
|
+
pipeline: bundle.pipeline ?? null,
|
|
70
72
|
};
|
|
71
73
|
};
|
|
72
74
|
export const registerRunTools = (server, ctx) => {
|
|
@@ -147,7 +149,7 @@ export const registerRunTools = (server, ctx) => {
|
|
|
147
149
|
}));
|
|
148
150
|
server.registerTool("run_collection", {
|
|
149
151
|
title: "Run a collection locally",
|
|
150
|
-
description: `Run a collection (or one folder of it, or specific requests) sequentially from this machine with an environment and the collection's variables, sharing variables between requests like the collection runner. Requests switched off for the runner are skipped unless named in \`only\`; data-driven contracts run once per row. Returns per-request results (as in run_request, values shown as {{key}}, with \`failure\` / \`diagnosis\` where something broke), a pass/fail summary
|
|
152
|
+
description: `Run a collection (or one folder of it, or specific requests) sequentially from this machine with an environment and the collection's variables, sharing variables between requests like the collection runner. Requests switched off for the runner are skipped unless named in \`only\`; data-driven contracts run once per row. Returns per-request results (as in run_request, values shown as {{key}}, with \`failure\` / \`diagnosis\` where something broke), a pass/fail summary, the variable names scripts changed and the \`verdict\` — the pass criteria callme run applies in CI: every executed request must pass, or \`passThreshold\` percent of them, and every \`criticalRequests\` entry. An on-prem pipeline collection runs its APPROVED version (not the draft) with its approved criteria (the inputs are then ignored, \`version\` says which version ran) and may refuse folder / partial runs. \`bail\` stops at the first failure (not with passThreshold). ${LOCAL_RUN_LIMITS} Needs requests:run.`,
|
|
151
153
|
inputSchema: {
|
|
152
154
|
workspace: workspaceArg,
|
|
153
155
|
collection: refArg("Collection"),
|
|
@@ -155,12 +157,25 @@ export const registerRunTools = (server, ctx) => {
|
|
|
155
157
|
only: z.array(z.string().min(1).max(500)).max(200).optional().describe("Run only these requests (ids or names)"),
|
|
156
158
|
environment: z.string().max(200).optional(),
|
|
157
159
|
bail: z.boolean().optional(),
|
|
160
|
+
passThreshold: z.number().int().min(1).max(100).optional().describe("The run passes when at least this percent of the executed requests passed (default: all must). Ignored for pipeline collections"),
|
|
161
|
+
criticalRequests: z.array(z.string().min(1).max(500)).max(200).optional().describe("Requests (ids or names) that must pass whatever the percentage. Ignored for pipeline collections"),
|
|
158
162
|
maxBodyBytes: maxBodyArg,
|
|
159
163
|
},
|
|
160
164
|
annotations: RUN,
|
|
161
|
-
}, guarded(async ({ workspace, collection, folder, only, environment, bail, maxBodyBytes }) => {
|
|
165
|
+
}, guarded(async ({ workspace, collection, folder, only, environment, bail, passThreshold, criticalRequests, maxBodyBytes }) => {
|
|
162
166
|
const { ws, value: resolved } = await findCollection(ctx, workspace, collection);
|
|
163
167
|
const prepared = await prepareRun(ctx, ws.id, resolved.item.id, environment);
|
|
168
|
+
// What decides the verdict: a pipeline collection's approved config,
|
|
169
|
+
// else the inputs. Critical requests are looked up in what runs.
|
|
170
|
+
const isPipeline = prepared.pipeline?.kind === "pipeline";
|
|
171
|
+
const criticalRequestIds = !isPipeline && criticalRequests && criticalRequests.length > 0
|
|
172
|
+
? [...new Set(criticalRequests.map((ref) => resolveRef("request", ref, prepared.collection.requests, { aliases: (request) => [`${request.method} ${request.url}`] }).item.id))]
|
|
173
|
+
: [];
|
|
174
|
+
const runCriteria = resolveRunCriteria(prepared.pipeline, {
|
|
175
|
+
passThreshold,
|
|
176
|
+
criticalRequestIds: isPipeline ? (criticalRequests ?? []) : criticalRequestIds,
|
|
177
|
+
bail,
|
|
178
|
+
});
|
|
164
179
|
let selection = null;
|
|
165
180
|
if (folder) {
|
|
166
181
|
const target = await resolveFolder(ctx, ws.id, resolved.item.id, folder);
|
|
@@ -176,6 +191,9 @@ export const registerRunTools = (server, ctx) => {
|
|
|
176
191
|
}
|
|
177
192
|
if (selection && selection.length === 0)
|
|
178
193
|
throw new ToolInputError("NOTHING_TO_RUN", "The selection contains no requests.");
|
|
194
|
+
if (selection && !runCriteria.allowFolderRuns) {
|
|
195
|
+
throw new ToolInputError("PIPELINE_FOLDER_RUN_NOT_ALLOWED", `This pipeline collection's approved config${runCriteria.version ? ` v${runCriteria.version.number}` : ""} runs the whole collection only: drop folder / only (run_request runs a single request), or allow folder runs in its pipelineConfig and get the change approved.`);
|
|
196
|
+
}
|
|
179
197
|
const outcome = await ctx.withRunLock(() => executeCollection({
|
|
180
198
|
collection: prepared.collection,
|
|
181
199
|
env: prepared.env,
|
|
@@ -183,13 +201,24 @@ export const registerRunTools = (server, ctx) => {
|
|
|
183
201
|
connections: prepared.connections,
|
|
184
202
|
only: selection,
|
|
185
203
|
includeDisabled: Boolean(only && only.length > 0),
|
|
186
|
-
bail: bail
|
|
204
|
+
bail: runCriteria.bail,
|
|
187
205
|
deadlineMs: ctx.config.runTimeoutMs,
|
|
188
206
|
}));
|
|
207
|
+
const verdict = evaluateRunVerdict({
|
|
208
|
+
results: outcome.results,
|
|
209
|
+
criteria: runCriteria.criteria,
|
|
210
|
+
collectionName: prepared.collection.name,
|
|
211
|
+
version: runCriteria.version?.number ?? null,
|
|
212
|
+
requests: prepared.collection.requests,
|
|
213
|
+
selection,
|
|
214
|
+
});
|
|
189
215
|
return ok(summarizeRun(outcome, maxBodyBytes ?? ctx.config.maxBodyBytes, {
|
|
190
|
-
collection: { id: resolved.item.id, name: resolved.item.name },
|
|
216
|
+
collection: { id: resolved.item.id, name: resolved.item.name, kind: runCriteria.kind },
|
|
217
|
+
...(runCriteria.version ? { version: runCriteria.version } : {}),
|
|
191
218
|
workspace: workspaceTag(ws),
|
|
192
219
|
environment: prepared.environment,
|
|
220
|
+
verdict,
|
|
221
|
+
...(runCriteria.notes.length > 0 ? { notes: runCriteria.notes } : {}),
|
|
193
222
|
warnings: prepared.warnings,
|
|
194
223
|
resolved: [resolvedSummary(collection, resolved)],
|
|
195
224
|
}, prepared.redaction));
|
package/dist/tools/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"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"}
|
package/dist-cjs/client/api.js
CHANGED
|
@@ -63,6 +63,17 @@ class CallmanApi {
|
|
|
63
63
|
deleteCollection(ws, id) {
|
|
64
64
|
return this.http.request("DELETE", `/collections/${id}`, { workspaceId: ws });
|
|
65
65
|
}
|
|
66
|
+
// On-prem pipeline collections: changes and deletion go through review;
|
|
67
|
+
// the decision itself is made by a person in the app (tokens are denied).
|
|
68
|
+
listCollectionApproverCandidates(ws, id, action) {
|
|
69
|
+
return this.http.request("GET", `/collections/${id}/review/approver-candidates`, { workspaceId: ws, query: { action } });
|
|
70
|
+
}
|
|
71
|
+
submitCollectionReview(ws, id, body) {
|
|
72
|
+
return this.http.request("POST", `/collections/${id}/review/submit`, { workspaceId: ws, body });
|
|
73
|
+
}
|
|
74
|
+
requestCollectionDeletion(ws, id, body) {
|
|
75
|
+
return this.http.request("POST", `/collections/${id}/deletion-request`, { workspaceId: ws, body });
|
|
76
|
+
}
|
|
66
77
|
folderTree(ws, collectionId) {
|
|
67
78
|
return this.http.request("GET", `/folders/tree/${collectionId}`, { workspaceId: ws });
|
|
68
79
|
}
|
|
@@ -130,6 +141,9 @@ class CallmanApi {
|
|
|
130
141
|
listConnections(ws, type) {
|
|
131
142
|
return this.http.request("GET", "/connections", { workspaceId: ws, query: type ? { type } : {} });
|
|
132
143
|
}
|
|
144
|
+
listConnectionRoutines(ws, id, query) {
|
|
145
|
+
return this.http.request("GET", `/connections/${id}/routines`, { workspaceId: ws, query });
|
|
146
|
+
}
|
|
133
147
|
// ── import ──────────────────────────────────────────────────────────
|
|
134
148
|
importJson(ws, body) {
|
|
135
149
|
return this.http.request("POST", "/import/json", { workspaceId: ws, body, timeoutMs: 120_000 });
|
|
@@ -133,7 +133,39 @@ const hintFor = (error) => {
|
|
|
133
133
|
case "UI_TEST_SCHEDULE_RUN_ACTIVE":
|
|
134
134
|
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.";
|
|
135
135
|
case "REVIEW_DISABLED_CLOUD":
|
|
136
|
-
return "Callman cloud has no review workflow — UI tests and
|
|
136
|
+
return "Callman cloud has no review workflow — UI tests, scenarios and collections run as saved; approvals and versions exist on on-prem installations only.";
|
|
137
|
+
// On-prem pipeline collections (reviewed, versioned; CI runs the approved version).
|
|
138
|
+
case "COLLECTION_NOT_APPROVED":
|
|
139
|
+
return "This pipeline collection has no approved version yet, and CI (callme run, run_collection) runs only approved versions. submit_collection, have an approver approve it in the Callman app, then run it again.";
|
|
140
|
+
case "PIPELINE_COLLECTION_REQUIRED":
|
|
141
|
+
return "The administrator allows CI runs on pipeline collections only. Turn this one into a pipeline collection (update_collection kind: \"pipeline\" with group), submit_collection, and have it approved.";
|
|
142
|
+
case "COLLECTION_DELETE_REQUIRES_REVIEW":
|
|
143
|
+
return "A pipeline collection is deleted through review: request_collection_deletion sends the request; it is deleted when an approver approves it in the Callman app.";
|
|
144
|
+
case "COLLECTION_KIND_CHANGE_REQUIRES_REVIEW":
|
|
145
|
+
return "Turning a pipeline collection back into a standard one goes through review — request the conversion in the Callman app.";
|
|
146
|
+
case "PIPELINE_COLLECTIONS_ONPREM_ONLY":
|
|
147
|
+
return "Pipeline collections exist on Callman on-prem only. Elsewhere set the pass criteria per run: run_collection passThreshold / criticalRequests, callme run --pass-threshold / --critical-request.";
|
|
148
|
+
case "COLLECTION_GROUP_REQUIRED":
|
|
149
|
+
return "Pass `group`: the group whose approvers review this pipeline collection (the groups you belong to are listed by list_scenarios `groups`).";
|
|
150
|
+
case "COLLECTION_GROUP_NOT_ALLOWED":
|
|
151
|
+
return "You cannot pick that group — choose one you belong to (list_scenarios `groups`).";
|
|
152
|
+
case "COLLECTION_GROUP_LOCKED":
|
|
153
|
+
return "The reviewing group is fixed once the collection has an approved version or an open review.";
|
|
154
|
+
case "PASS_THRESHOLD_BELOW_FLOOR":
|
|
155
|
+
return "The administrator set a minimum pass percentage for CI runs — use a minPassPercent at or above it (the message names it).";
|
|
156
|
+
case "PIPELINE_CRITICAL_REQUEST_INVALID":
|
|
157
|
+
case "PIPELINE_CRITICAL_REQUEST_DISABLED":
|
|
158
|
+
return "A critical request must be a request of this collection that runs in the collection runner (not switched off) — get_collection_tree lists them.";
|
|
159
|
+
case "NOT_A_PIPELINE_COLLECTION":
|
|
160
|
+
return "Only pipeline collections have a group, pass criteria and a review — update_collection kind: \"pipeline\" (with group) turns a collection into one (on-prem).";
|
|
161
|
+
case "COLLECTION_NO_CHANGES":
|
|
162
|
+
return "The draft is the same as the approved version — there is nothing to submit.";
|
|
163
|
+
case "COLLECTION_REVIEW_PENDING":
|
|
164
|
+
return "A review is already open for this collection. submit_collection with replace: true swaps your own submission for the current draft; someone else's must be decided first.";
|
|
165
|
+
case "COLLECTION_NO_APPROVERS":
|
|
166
|
+
return "Nobody can approve collections of this group yet — an administrator must flag an approver for the group (admin panel) before submit_collection works.";
|
|
167
|
+
case "REVIEW_REQUIRES_INTERACTIVE_SESSION":
|
|
168
|
+
return "Reviews are decided by a person in the Callman app. AI tools can submit (submit_collection) and request deletion, not approve or reject.";
|
|
137
169
|
case "SELF_APPROVAL_FORBIDDEN":
|
|
138
170
|
return "You cannot approve or reject your own UI test — another approver must.";
|
|
139
171
|
case "NOT_APPROVER":
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evaluateRunVerdict = exports.resolveRunCriteria = exports.mergePipelineConfig = exports.pipelineConfigArg = void 0;
|
|
4
|
+
const callman_core_1 = require("callman-core");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const strict_js_1 = require("../lib/strict.js");
|
|
7
|
+
const executeCollection_js_1 = require("../run/executeCollection.js");
|
|
8
|
+
// Pass criteria — when a collection run counts as passed — the same rule
|
|
9
|
+
// `callme run` applies in CI (callman-core evaluatePassCriteria). An on-prem
|
|
10
|
+
// pipeline collection carries its own, reviewed and approved with it; the
|
|
11
|
+
// bundle serves that approved config and it wins over whatever the caller
|
|
12
|
+
// asks for. Every other run builds the criteria from the tool's inputs; none
|
|
13
|
+
// = every executed request must pass.
|
|
14
|
+
// ── pipelineConfig argument (create_collection / update_collection) ──────
|
|
15
|
+
exports.pipelineConfigArg = (0, strict_js_1.strictObject)({
|
|
16
|
+
passCriteria: (0, strict_js_1.strictObject)({
|
|
17
|
+
mode: zod_1.z.enum(["all", "percentage"]).optional().describe('"all": every executed request must pass (default). "percentage": at least minPassPercent of them'),
|
|
18
|
+
minPassPercent: zod_1.z.number().int().min(1).max(100).optional().describe("1-100, read in percentage mode. The administrator may set a minimum"),
|
|
19
|
+
requiredRequests: zod_1.z
|
|
20
|
+
.array(zod_1.z.string().min(1).max(500))
|
|
21
|
+
.max(200)
|
|
22
|
+
.optional()
|
|
23
|
+
.describe("Critical requests (ids or names in this collection): they must pass whatever the percentage. Replaces the whole list; [] clears it"),
|
|
24
|
+
minExecuted: zod_1.z.number().int().min(1).max(100_000).optional().describe("Fewer executed requests than this fails the run (default 1)"),
|
|
25
|
+
}, "passCriteria key").optional(),
|
|
26
|
+
bail: zod_1.z.boolean().optional().describe("Stop at the first failed request (all mode only; ignored in percentage mode)"),
|
|
27
|
+
allowFolderRuns: zod_1.z.boolean().optional().describe("May CI run one folder of the collection (callme run --folder-id). Default false"),
|
|
28
|
+
}, "pipelineConfig key")
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("On-prem pipeline collections: the pass criteria CI applies (reviewed and approved with the collection). Omitted keys keep their current value (update) or the default (create).");
|
|
31
|
+
// The stored config with the input laid over it — the server stores the
|
|
32
|
+
// whole object, so a partial update must not reset the other fields.
|
|
33
|
+
// `resolveIds` turns request refs (ids or names) into ids.
|
|
34
|
+
const mergePipelineConfig = async (current, input, resolveIds) => {
|
|
35
|
+
const base = (0, callman_core_1.normalizePipelineCollectionConfig)(current);
|
|
36
|
+
const criteria = input.passCriteria ?? {};
|
|
37
|
+
const requiredRequestIds = criteria.requiredRequests !== undefined ? await resolveIds(criteria.requiredRequests) : base.passCriteria.requiredRequestIds;
|
|
38
|
+
const mode = criteria.mode ?? (criteria.minPassPercent !== undefined ? "percentage" : base.passCriteria.mode);
|
|
39
|
+
const passCriteria = (0, callman_core_1.normalizePipelinePassCriteria)({
|
|
40
|
+
mode,
|
|
41
|
+
minPassPercent: criteria.minPassPercent ?? (base.passCriteria.mode === "percentage" ? base.passCriteria.minPassPercent : 100),
|
|
42
|
+
requiredRequestIds,
|
|
43
|
+
minExecuted: criteria.minExecuted ?? base.passCriteria.minExecuted,
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
passCriteria,
|
|
47
|
+
bail: passCriteria.mode === "percentage" ? false : (input.bail ?? base.bail),
|
|
48
|
+
allowFolderRuns: input.allowFolderRuns ?? base.allowFolderRuns,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
exports.mergePipelineConfig = mergePipelineConfig;
|
|
52
|
+
const describeCriteria = (criteria) => {
|
|
53
|
+
const parts = [criteria.mode === "percentage" ? `threshold ${criteria.minPassPercent}%` : "all must pass"];
|
|
54
|
+
const critical = criteria.requiredRequestIds.length;
|
|
55
|
+
if (critical > 0)
|
|
56
|
+
parts.push(`${critical} critical request${critical === 1 ? "" : "s"}`);
|
|
57
|
+
if (criteria.minExecuted > 1)
|
|
58
|
+
parts.push(`at least ${criteria.minExecuted} requests`);
|
|
59
|
+
return parts.join(", ");
|
|
60
|
+
};
|
|
61
|
+
// The bundle's approved config for a pipeline collection, else the inputs
|
|
62
|
+
// (`criticalRequestIds` resolved by the caller; for a pipeline collection only
|
|
63
|
+
// their presence is read, to say they were ignored). The administrator's
|
|
64
|
+
// minimum pass percentage is applied either way.
|
|
65
|
+
const resolveRunCriteria = (pipeline, input) => {
|
|
66
|
+
const notes = [];
|
|
67
|
+
let criteria;
|
|
68
|
+
let bail;
|
|
69
|
+
let result;
|
|
70
|
+
if (pipeline?.kind === "pipeline") {
|
|
71
|
+
const config = (0, callman_core_1.normalizePipelineCollectionConfig)(pipeline.config);
|
|
72
|
+
const version = pipeline.version && typeof pipeline.version.number === "number"
|
|
73
|
+
? { number: pipeline.version.number, approvedAt: pipeline.version.approvedAt ?? null, approvedByLabel: pipeline.version.approvedByLabel ?? null }
|
|
74
|
+
: null;
|
|
75
|
+
const label = version ? `v${version.number}` : "(unversioned)";
|
|
76
|
+
const ignored = [
|
|
77
|
+
input.passThreshold !== undefined ? "passThreshold" : null,
|
|
78
|
+
input.criticalRequestIds.length > 0 ? "criticalRequests" : null,
|
|
79
|
+
input.bail === true ? "bail" : null,
|
|
80
|
+
].filter((name) => name !== null);
|
|
81
|
+
notes.push(`Pipeline collection: this run used its approved version ${label} (not the unapproved draft) and its approved pass criteria (${describeCriteria(config.passCriteria)}${config.bail ? ", bail" : ""}).`);
|
|
82
|
+
if (ignored.length > 0)
|
|
83
|
+
notes.push(`${ignored.join(", ")} ignored: the approved pipeline config ${label} decides.`);
|
|
84
|
+
criteria = config.passCriteria;
|
|
85
|
+
bail = config.bail;
|
|
86
|
+
result = { kind: "pipeline", version, allowFolderRuns: config.allowFolderRuns };
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
criteria = (0, callman_core_1.normalizePipelinePassCriteria)({
|
|
90
|
+
mode: input.passThreshold === undefined ? "all" : "percentage",
|
|
91
|
+
minPassPercent: input.passThreshold ?? 100,
|
|
92
|
+
requiredRequestIds: input.criticalRequestIds,
|
|
93
|
+
minExecuted: 1,
|
|
94
|
+
});
|
|
95
|
+
// A pass percentage needs the whole run.
|
|
96
|
+
bail = input.bail === true && criteria.mode !== "percentage";
|
|
97
|
+
if (input.bail === true && !bail)
|
|
98
|
+
notes.push("bail ignored: passThreshold needs every request to run.");
|
|
99
|
+
result = { kind: "standard", version: null, allowFolderRuns: true };
|
|
100
|
+
}
|
|
101
|
+
const floored = (0, callman_core_1.applyPassPercentFloor)(criteria, pipeline?.policy?.minPassPercentFloor);
|
|
102
|
+
if (floored.minPassPercent !== criteria.minPassPercent) {
|
|
103
|
+
notes.push(`Pass threshold raised from ${criteria.minPassPercent}% to ${floored.minPassPercent}%: the server's minimum for CI runs.`);
|
|
104
|
+
}
|
|
105
|
+
return { ...result, criteria: floored, bail, notes };
|
|
106
|
+
};
|
|
107
|
+
exports.resolveRunCriteria = resolveRunCriteria;
|
|
108
|
+
// One outcome per execution (a data-driven request has one per row; core
|
|
109
|
+
// counts the request once). `scopeRequestIds` = the requests a partial run
|
|
110
|
+
// covered; critical requests outside it are ignored, but an id the collection
|
|
111
|
+
// does not have at all still counts as not run.
|
|
112
|
+
const evaluateRunVerdict = (input) => {
|
|
113
|
+
const { criteria } = input;
|
|
114
|
+
const known = new Set(input.requests.map((request) => request.id));
|
|
115
|
+
const scopeRequestIds = input.selection
|
|
116
|
+
? [...input.selection, ...criteria.requiredRequestIds.filter((id) => !known.has(id))]
|
|
117
|
+
: undefined;
|
|
118
|
+
const outcomes = input.results.map((result) => result.executionControl?.skipped === true
|
|
119
|
+
? { requestId: result.requestId, passed: false, skipped: true }
|
|
120
|
+
: { requestId: result.requestId, passed: !(0, executeCollection_js_1.requestFailed)(result) });
|
|
121
|
+
const verdict = (0, callman_core_1.evaluatePassCriteria)(outcomes, criteria, scopeRequestIds ? { scopeRequestIds } : {});
|
|
122
|
+
const scope = scopeRequestIds ? new Set(scopeRequestIds) : null;
|
|
123
|
+
const names = new Map(input.requests.map((request) => [request.id, request.name]));
|
|
124
|
+
const failed = new Set(verdict.requiredFailed);
|
|
125
|
+
const missing = new Set(verdict.requiredMissing);
|
|
126
|
+
const criticalRequests = criteria.requiredRequestIds
|
|
127
|
+
.filter((id) => !scope || scope.has(id))
|
|
128
|
+
.map((id) => ({
|
|
129
|
+
id,
|
|
130
|
+
name: names.get(id) ?? null,
|
|
131
|
+
status: failed.has(id) ? "failed" : missing.has(id) ? "did_not_run" : "passed",
|
|
132
|
+
}));
|
|
133
|
+
const parts = [
|
|
134
|
+
`${input.collectionName}${input.version !== null ? ` v${input.version}` : ""}`,
|
|
135
|
+
`${verdict.passedCount}/${verdict.executed} passed${verdict.passRate !== null ? ` (${verdict.passRate.toFixed(1)}%)` : ""}`,
|
|
136
|
+
verdict.mode === "percentage" ? `threshold ${verdict.threshold}%` : "all must pass",
|
|
137
|
+
];
|
|
138
|
+
if (criticalRequests.length > 0) {
|
|
139
|
+
const okCount = criticalRequests.filter((entry) => entry.status === "passed").length;
|
|
140
|
+
parts.push(`critical ${okCount}/${criticalRequests.length} ${okCount === criticalRequests.length ? "✓" : "✗"}`);
|
|
141
|
+
}
|
|
142
|
+
return { ...verdict, line: `${parts.join(" · ")} → ${verdict.passed ? "PASS" : "FAIL"}`, criticalRequests };
|
|
143
|
+
};
|
|
144
|
+
exports.evaluateRunVerdict = evaluateRunVerdict;
|
|
@@ -41,6 +41,14 @@ exports.scenarioEnvironmentInputSchema = (0, strict_js_1.strictObject)({
|
|
|
41
41
|
exports.scenarioDatasetSchema = (0, strict_js_1.strictObject)({
|
|
42
42
|
columns: zod_1.z.array(zod_1.z.string().max(200)).max(200),
|
|
43
43
|
rows: zod_1.z.array(zod_1.z.record(zod_1.z.string().max(100_000))).max(10_000).describe("Each row: column → value; nodes read {{data.<column>}}; the scenario runs once per row"),
|
|
44
|
+
source: (0, strict_js_1.strictObject)({
|
|
45
|
+
type: zod_1.z.literal("db"),
|
|
46
|
+
connectionId: zod_1.z.string().max(200),
|
|
47
|
+
query: zod_1.z.string().min(1).max(100_000),
|
|
48
|
+
}, "dataset source field")
|
|
49
|
+
.nullable()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("Read the rows from this query when the run starts, instead of storing them. Columns are the query's column names (Oracle: uppercase). columns and rows may then be empty."),
|
|
44
52
|
}, "dataset field")
|
|
45
53
|
.nullable()
|
|
46
54
|
.describe("Data-driven runs: the whole scenario runs once per row (null removes the dataset)");
|
|
@@ -57,6 +57,26 @@ The token works in EVERY workspace the user belongs to (with their role in each)
|
|
|
57
57
|
- \`run_request\` / \`run_collection\` execute on the user's machine with real variable values;
|
|
58
58
|
you only get results and the names of variables scripts changed.
|
|
59
59
|
|
|
60
|
+
## Pipeline collections (on-prem)
|
|
61
|
+
On Callman on-prem a collection can be a **pipeline collection** (\`kind: "pipeline"\`, owned by a
|
|
62
|
+
review group): changes go through review like scenarios, approved versions are kept, and CI
|
|
63
|
+
(\`callme run\`, \`run_collection\`) runs only the active APPROVED version with its approved pass
|
|
64
|
+
criteria (\`pipelineConfig\`: threshold %, critical requests, bail, folder runs).
|
|
65
|
+
- \`get_collection\` / \`list_collections\` show \`kind\` and \`review\` (status, active version,
|
|
66
|
+
pending submission). Edits change the draft; nothing reaches CI until it is approved.
|
|
67
|
+
- Create one with \`create_collection { kind: "pipeline", group }\`, or turn a standard one into it
|
|
68
|
+
with \`update_collection { kind: "pipeline", group }\`; set the criteria with \`pipelineConfig\`
|
|
69
|
+
(omitted keys keep their value; critical requests by id or name).
|
|
70
|
+
- \`submit_collection\` sends the draft for review; \`request_collection_deletion\` asks to delete
|
|
71
|
+
it (\`delete_collection\` refuses pipeline collections). Approving is a person's decision in the
|
|
72
|
+
Callman app — there is no approve tool, and tokens are denied it.
|
|
73
|
+
- \`run_collection\` returns a \`verdict\` (\`Payments CI v4 · 17/20 passed (85.0%) · threshold 80% ·
|
|
74
|
+
critical 2/2 ✓ → PASS\`). For a pipeline collection the approved criteria decide (the
|
|
75
|
+
\`passThreshold\` / \`criticalRequests\` / \`bail\` inputs are ignored) and \`version\` says what ran;
|
|
76
|
+
for a standard collection those inputs set the criteria (default: every request must pass).
|
|
77
|
+
- A pipeline collection without an approved version cannot run (\`COLLECTION_NOT_APPROVED\`); an
|
|
78
|
+
administrator may allow CI on pipeline collections only (\`PIPELINE_COLLECTION_REQUIRED\`).
|
|
79
|
+
|
|
60
80
|
## Secrets
|
|
61
81
|
Environment and collection-variable values come back masked (\`••••ab\`) unless the token holds
|
|
62
82
|
\`environments:reveal\` and you ask for \`reveal: true\`. Never write a masked environment value back —
|