callman-mcp 0.3.0 → 0.5.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 (89) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +29 -7
  3. package/dist/client/api.d.ts +83 -1
  4. package/dist/client/api.d.ts.map +1 -1
  5. package/dist/client/api.js +105 -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 +231 -0
  11. package/dist/client/types.d.ts.map +1 -1
  12. package/dist/domain/diagram/patch.d.ts +2 -2
  13. package/dist/domain/uiTest/compose.d.ts +55 -0
  14. package/dist/domain/uiTest/compose.d.ts.map +1 -0
  15. package/dist/domain/uiTest/compose.js +228 -0
  16. package/dist/domain/uiTest/compose.js.map +1 -0
  17. package/dist/domain/uiTest/summarize.d.ts +273 -0
  18. package/dist/domain/uiTest/summarize.d.ts.map +1 -0
  19. package/dist/domain/uiTest/summarize.js +145 -0
  20. package/dist/domain/uiTest/summarize.js.map +1 -0
  21. package/dist/lib/truncate.d.ts +1 -1
  22. package/dist/lib/truncate.d.ts.map +1 -1
  23. package/dist/lib/truncate.js.map +1 -1
  24. package/dist/resources/docs/overview.d.ts +1 -1
  25. package/dist/resources/docs/overview.d.ts.map +1 -1
  26. package/dist/resources/docs/overview.js +12 -3
  27. package/dist/resources/docs/overview.js.map +1 -1
  28. package/dist/resources/docs/uiTests.d.ts +2 -0
  29. package/dist/resources/docs/uiTests.d.ts.map +1 -0
  30. package/dist/resources/docs/uiTests.js +101 -0
  31. package/dist/resources/docs/uiTests.js.map +1 -0
  32. package/dist/resources/generated/aiPacks.d.ts +1 -1
  33. package/dist/resources/generated/aiPacks.js +2 -2
  34. package/dist/resources/index.d.ts.map +1 -1
  35. package/dist/resources/index.js +13 -2
  36. package/dist/resources/index.js.map +1 -1
  37. package/dist/server.d.ts +1 -1
  38. package/dist/server.d.ts.map +1 -1
  39. package/dist/server.js +2 -2
  40. package/dist/server.js.map +1 -1
  41. package/dist/tools/catalog.d.ts +1 -1
  42. package/dist/tools/catalog.d.ts.map +1 -1
  43. package/dist/tools/catalog.js +31 -0
  44. package/dist/tools/catalog.js.map +1 -1
  45. package/dist/tools/index.d.ts.map +1 -1
  46. package/dist/tools/index.js +6 -0
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/lookups.d.ts +19 -1
  49. package/dist/tools/lookups.d.ts.map +1 -1
  50. package/dist/tools/lookups.js +77 -0
  51. package/dist/tools/lookups.js.map +1 -1
  52. package/dist/tools/shared.d.ts +5 -0
  53. package/dist/tools/shared.d.ts.map +1 -1
  54. package/dist/tools/shared.js +10 -0
  55. package/dist/tools/shared.js.map +1 -1
  56. package/dist/tools/uiTestAdmin.d.ts +4 -0
  57. package/dist/tools/uiTestAdmin.d.ts.map +1 -0
  58. package/dist/tools/uiTestAdmin.js +509 -0
  59. package/dist/tools/uiTestAdmin.js.map +1 -0
  60. package/dist/tools/uiTestRuns.d.ts +24 -0
  61. package/dist/tools/uiTestRuns.d.ts.map +1 -0
  62. package/dist/tools/uiTestRuns.js +367 -0
  63. package/dist/tools/uiTestRuns.js.map +1 -0
  64. package/dist/tools/uiTestShared.d.ts +236 -0
  65. package/dist/tools/uiTestShared.d.ts.map +1 -0
  66. package/dist/tools/uiTestShared.js +187 -0
  67. package/dist/tools/uiTestShared.js.map +1 -0
  68. package/dist/tools/uiTests.d.ts +4 -0
  69. package/dist/tools/uiTests.d.ts.map +1 -0
  70. package/dist/tools/uiTests.js +572 -0
  71. package/dist/tools/uiTests.js.map +1 -0
  72. package/dist-cjs/client/api.js +105 -0
  73. package/dist-cjs/client/errors.js +46 -11
  74. package/dist-cjs/domain/uiTest/compose.js +242 -0
  75. package/dist-cjs/domain/uiTest/summarize.js +155 -0
  76. package/dist-cjs/resources/docs/overview.js +12 -3
  77. package/dist-cjs/resources/docs/uiTests.js +103 -0
  78. package/dist-cjs/resources/generated/aiPacks.js +2 -2
  79. package/dist-cjs/resources/index.js +11 -0
  80. package/dist-cjs/server.js +2 -2
  81. package/dist-cjs/tools/catalog.js +31 -0
  82. package/dist-cjs/tools/index.js +6 -0
  83. package/dist-cjs/tools/lookups.js +83 -1
  84. package/dist-cjs/tools/shared.js +12 -1
  85. package/dist-cjs/tools/uiTestAdmin.js +512 -0
  86. package/dist-cjs/tools/uiTestRuns.js +372 -0
  87. package/dist-cjs/tools/uiTestShared.js +202 -0
  88. package/dist-cjs/tools/uiTests.js +575 -0
  89. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiTestShared.d.ts","sourceRoot":"","sources":["../../src/tools/uiTestShared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import { lintUiTestFlow } from "callman-core";
2
+ import { z } from "zod";
3
+ import { CallmanApiError, ToolInputError } from "../client/errors.js";
4
+ import { resolveRef } from "../domain/resolve.js";
5
+ import { maskedDatasetKeys, settingsView } from "../domain/uiTest/summarize.js";
6
+ import { strictObject } from "../lib/strict.js";
7
+ import { clipBytes, LIMITS } from "../lib/truncate.js";
8
+ import { loadConnections, loadUiTestFolders, loadUiTests } from "./lookups.js";
9
+ import { ok } from "./shared.js";
10
+ // Shared by the UI-test tool modules: argument schemas, the lint context
11
+ // (library names + workspace connections), the full-state upsert with its
12
+ // masked-value guard and version conflict, and the flow detail view.
13
+ export const PLATFORMS = ["web", "android", "ios"];
14
+ export const TEST_TYPES = ["regression", "smoke", "sanity", "integration", "e2e", "functional", "acceptance"];
15
+ export const SEVERITIES = ["critical", "high-risk", "major", "minor"];
16
+ export const platformArg = z.enum(PLATFORMS);
17
+ export const flowArg = z.string().min(1).max(500).describe("UI test (flow) id or name");
18
+ export const stepInputSchema = z.union([z.string().min(1).max(20_000), z.record(z.unknown())]);
19
+ export const stepsArg = z
20
+ .union([z.string().max(1_000_000), z.array(stepInputSchema).max(1000)])
21
+ .describe('The flow\'s own steps: a YAML list (`- tapOn: "Login"` lines) or an array of steps — objects ({ tapOn: "Login" }, { assertVisible: { text: "Welcome", label: "Welcome shown" } }), bare command names ("launchApp") or YAML snippets. Step reference: callman://docs/ui-test-steps');
22
+ export const datasetSourceSchema = strictObject({
23
+ kind: z.literal("db").optional(),
24
+ connection: z.string().min(1).max(200).describe("Workspace connection id or name (list_connections)"),
25
+ query: z.string().min(1).max(10_000),
26
+ column: z.string().max(200).optional().describe("Column to read (default: the first)"),
27
+ }, "dataset source field");
28
+ export const runSettingsSchema = strictObject({
29
+ screenshotOnSuccess: z.boolean().nullable().optional(),
30
+ screenshotOnFailure: z.boolean().nullable().optional(),
31
+ autoRetryTransient: z.boolean().nullable().optional(),
32
+ captureNetwork: z.boolean().nullable().optional(),
33
+ }, "run setting").describe("Per-flow run toggles; null = the shared default");
34
+ export const headerArg = z
35
+ .record(z.unknown())
36
+ .optional()
37
+ .describe("Extra header keys (appActivity, deviceName, env, tags, onFlowStart …; null removes one). url/appId have their own arguments");
38
+ export const groupArg = z
39
+ .string()
40
+ .max(200)
41
+ .optional()
42
+ .describe('On-prem: the group that owns it (name or id, or "personal"). Needed when you belong to several groups; ignored on cloud');
43
+ export const resolveGroupId = async (ctx, ws, ref) => {
44
+ if (!ref)
45
+ return {};
46
+ if (ref.trim().toLowerCase() === "personal")
47
+ return { id: "personal" };
48
+ const { items } = await ctx.api.listMyScenarioGroups(ws);
49
+ if (items.length === 0)
50
+ return { note: "Groups exist only on-prem — `group` was ignored." };
51
+ return { id: resolveRef("group", ref, items).item.id };
52
+ };
53
+ export const lintContext = async (ctx, workspaceId) => {
54
+ const [flows, connections] = await Promise.all([
55
+ loadUiTests(ctx),
56
+ // A token without requests:read / scenarios:read cannot list connections —
57
+ // then the connection check is skipped, not failed.
58
+ loadConnections(ctx, workspaceId).catch(() => null),
59
+ ]);
60
+ return { flowNames: [...new Set(flows.map((flow) => flow.name))], connections };
61
+ };
62
+ export const lintFlow = (content, platform, context, datasetKeys) => lintUiTestFlow(content, {
63
+ platform,
64
+ knownFlowNames: context.flowNames,
65
+ ...(context.connections ? { knownConnections: context.connections.flatMap((connection) => [connection.name, connection.id]) } : {}),
66
+ datasetKeys,
67
+ });
68
+ export const lintView = (lint, context) => ({
69
+ ok: lint.ok,
70
+ errors: lint.errors,
71
+ warnings: lint.warnings,
72
+ ...(context && !context.connections ? { note: "Connection names were not checked (the token cannot list connections)." } : {}),
73
+ });
74
+ export const refuseLintErrors = (lint, force, content) => {
75
+ if (lint.ok || force)
76
+ return;
77
+ throw new ToolInputError("UI_TEST_LINT_FAILED", `The flow has ${lint.errors.length} error${lint.errors.length === 1 ? "" : "s"} the engine would trip on — fix them (callman://docs/ui-test-steps), or pass force: true to save anyway.`, {
78
+ errors: lint.errors,
79
+ warnings: lint.warnings,
80
+ content: clipBytes(content, 8_000).text,
81
+ });
82
+ };
83
+ export const resolveDatasetSources = async (ctx, ws, sources, current = {}) => {
84
+ const out = { ...current };
85
+ const entries = Object.entries(sources);
86
+ const connections = entries.some(([, source]) => source) ? await loadConnections(ctx, ws) : [];
87
+ for (const [key, source] of entries) {
88
+ if (!source) {
89
+ delete out[key];
90
+ continue;
91
+ }
92
+ const connection = resolveRef("connection", source.connection, connections, { describe: (entry) => ({ type: entry.type }) }).item;
93
+ if (connection.type !== "database") {
94
+ throw new ToolInputError("CONNECTION_WRONG_TYPE", `Dataset source "${key}": "${connection.name}" is a ${connection.type} connection — a dataset source needs a database connection.`);
95
+ }
96
+ out[key] = { kind: "db", connection: connection.id, query: source.query, ...(source.column ? { column: source.column } : {}) };
97
+ }
98
+ return out;
99
+ };
100
+ // ── the full-state upsert ──────────────────────────────────────────────
101
+ const UPSERT_FIELDS = ["name", "description", "platform", "content", "testType", "severity", "tags", "folderId", "dataset", "datasetSources", "dismissPopups", "browserKind", "headless", "runSettings"];
102
+ // The backend accepts null for "clear" on description / folderId / browserKind /
103
+ // headless / runSettings, but testType and severity are optional, not nullable.
104
+ const NOT_NULLABLE = new Set(["testType", "severity"]);
105
+ export const upsertBodyOf = (flow) => {
106
+ const body = { clientId: flow.clientId };
107
+ for (const field of UPSERT_FIELDS) {
108
+ const value = flow[field];
109
+ if (value === undefined || (value === null && NOT_NULLABLE.has(field)))
110
+ continue;
111
+ body[field] = value;
112
+ }
113
+ return body;
114
+ };
115
+ /** Refuses masked values the CALLER supplied. Masks read back from the flow
116
+ * itself may be sent unchanged: the backend keeps the stored secret when a
117
+ * value equals the mask of what is stored under that key. */
118
+ export const refuseMaskedDataset = (dataset) => {
119
+ const keys = maskedDatasetKeys(dataset);
120
+ if (keys.length === 0)
121
+ return;
122
+ throw new ToolInputError("MASKED_VALUE", `Masked values cannot be saved (dataset keys: ${keys.join(", ")}). Supply the real values, or leave those keys out to keep what is stored.`, { keys });
123
+ };
124
+ export const saveFlow = async (ctx, ws, body, options = {}) => {
125
+ try {
126
+ const flow = await ctx.api.upsertUiTest(ws, { ...body, ...(options.expectedVersion !== undefined ? { expectedVersion: options.expectedVersion } : {}), ...(options.force ? { force: true } : {}) });
127
+ ctx.invalidate("uitests:");
128
+ return { flow };
129
+ }
130
+ catch (error) {
131
+ if (error instanceof CallmanApiError && error.code === "UI_TEST_SCENARIO_VERSION_CONFLICT") {
132
+ const details = (error.details ?? {});
133
+ return {
134
+ conflict: {
135
+ conflict: true,
136
+ code: error.code,
137
+ message: error.message,
138
+ currentVersion: details.currentVersion ?? details.currentScenario?.version ?? null,
139
+ hint: "Someone saved the flow since you read it. Re-read it (get_ui_test), reapply your change and retry with expectedVersion = currentVersion — or force: true to overwrite.",
140
+ },
141
+ };
142
+ }
143
+ throw error;
144
+ }
145
+ };
146
+ export const conflictResult = (conflict) => ok(conflict);
147
+ // ── views ──────────────────────────────────────────────────────────────
148
+ export const connectionNames = (connections) => new Map((connections ?? []).map((connection) => [connection.id, connection.name]));
149
+ export const flowDetailView = async (ctx, flow, lint, context, options) => {
150
+ const folders = await loadUiTestFolders(ctx).catch(() => []);
151
+ const folder = flow.folderId ? folders.find((entry) => entry.id === flow.folderId) : undefined;
152
+ const names = connectionNames(context.connections);
153
+ const workspace = options.workspaces.find((entry) => entry.id === flow.workspaceId);
154
+ const content = flow.content ?? "";
155
+ const clipped = clipBytes(content, LIMITS.SCENARIO_FULL);
156
+ const masked = maskedDatasetKeys(flow.dataset);
157
+ return {
158
+ id: flow.clientId,
159
+ name: flow.name,
160
+ platform: flow.platform,
161
+ workspace: { id: flow.workspaceId, name: workspace?.name ?? null },
162
+ folder: folder ? { id: folder.id, path: folder.path } : null,
163
+ ...(flow.groupName ? { group: flow.groupName } : {}),
164
+ description: flow.description ?? null,
165
+ testType: flow.testType ?? null,
166
+ severity: flow.severity ?? null,
167
+ tags: flow.tags ?? [],
168
+ version: flow.version ?? null,
169
+ ...(flow.reviewStatus ? { reviewStatus: flow.reviewStatus, approvedVersion: flow.approvedVersion ?? null, activeVersionNumber: flow.activeVersionNumber ?? null, ...(flow.reviewNote ? { reviewNote: flow.reviewNote } : {}) } : {}),
170
+ header: lint.header,
171
+ settings: settingsView(flow),
172
+ dataset: flow.dataset ?? {},
173
+ ...(masked.length > 0 ? { datasetMasked: masked } : {}),
174
+ datasetSources: Object.fromEntries(Object.entries(flow.datasetSources ?? {}).map(([key, source]) => [key, { ...source, ...(names.get(source.connection) ? { connectionName: names.get(source.connection) } : {}) }])),
175
+ preconditions: lint.preconditions,
176
+ steps: lint.steps,
177
+ lint: lintView(lint, context),
178
+ ...(options.includeContent === false ? {} : { content: clipped.text, ...(clipped.truncated ? { contentTruncated: true, contentBytes: clipped.totalBytes } : {}) }),
179
+ ...(masked.length > 0 && options.reveal ? { note: "Secret dataset values stayed masked: the token lacks environments:reveal." } : {}),
180
+ };
181
+ };
182
+ export const workspaceIdOf = (flow) => {
183
+ if (!flow.workspaceId)
184
+ throw new ToolInputError("UI_TEST_WORKSPACE_UNKNOWN", `The server did not say which workspace "${flow.name}" is in.`);
185
+ return flow.workspaceId;
186
+ };
187
+ //# sourceMappingURL=uiTestShared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiTestShared.js","sourceRoot":"","sources":["../../src/tools/uiTestShared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ToolContext } from "../context.js";
3
+ export declare const registerUiTestTools: (server: McpServer, ctx: ToolContext) => void;
4
+ //# sourceMappingURL=uiTests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiTests.d.ts","sourceRoot":"","sources":["../../src/tools/uiTests.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAwEjD,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,EAAE,KAAK,WAAW,KAAG,IAojBzE,CAAC"}