callman-mcp 0.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/CHANGELOG.md +28 -0
- package/LICENSE +21 -0
- package/README.md +203 -0
- package/dist/client/api.d.ts +109 -0
- package/dist/client/api.d.ts.map +1 -0
- package/dist/client/api.js +180 -0
- package/dist/client/api.js.map +1 -0
- package/dist/client/errors.d.ts +27 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +98 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/http.d.ts +34 -0
- package/dist/client/http.d.ts.map +1 -0
- package/dist/client/http.js +121 -0
- package/dist/client/http.js.map +1 -0
- package/dist/client/types.d.ts +327 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +5 -0
- package/dist/client/types.js.map +1 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +69 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +35 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +91 -0
- package/dist/context.js.map +1 -0
- package/dist/domain/diagram/build.d.ts +260 -0
- package/dist/domain/diagram/build.d.ts.map +1 -0
- package/dist/domain/diagram/build.js +160 -0
- package/dist/domain/diagram/build.js.map +1 -0
- package/dist/domain/diagram/layout.d.ts +17 -0
- package/dist/domain/diagram/layout.d.ts.map +1 -0
- package/dist/domain/diagram/layout.js +61 -0
- package/dist/domain/diagram/layout.js.map +1 -0
- package/dist/domain/diagram/patch.d.ts +330 -0
- package/dist/domain/diagram/patch.d.ts.map +1 -0
- package/dist/domain/diagram/patch.js +176 -0
- package/dist/domain/diagram/patch.js.map +1 -0
- package/dist/domain/diagram/summarize.d.ts +41 -0
- package/dist/domain/diagram/summarize.d.ts.map +1 -0
- package/dist/domain/diagram/summarize.js +47 -0
- package/dist/domain/diagram/summarize.js.map +1 -0
- package/dist/domain/importDetect.d.ts +6 -0
- package/dist/domain/importDetect.d.ts.map +1 -0
- package/dist/domain/importDetect.js +32 -0
- package/dist/domain/importDetect.js.map +1 -0
- package/dist/domain/requestShape.d.ts +796 -0
- package/dist/domain/requestShape.d.ts.map +1 -0
- package/dist/domain/requestShape.js +250 -0
- package/dist/domain/requestShape.js.map +1 -0
- package/dist/domain/resolve.d.ts +30 -0
- package/dist/domain/resolve.d.ts.map +1 -0
- package/dist/domain/resolve.js +56 -0
- package/dist/domain/resolve.js.map +1 -0
- package/dist/domain/scenario/build.d.ts +270 -0
- package/dist/domain/scenario/build.d.ts.map +1 -0
- package/dist/domain/scenario/build.js +135 -0
- package/dist/domain/scenario/build.js.map +1 -0
- package/dist/domain/scenario/summarize.d.ts +206 -0
- package/dist/domain/scenario/summarize.d.ts.map +1 -0
- package/dist/domain/scenario/summarize.js +138 -0
- package/dist/domain/scenario/summarize.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cache.d.ts +12 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +40 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/ids.d.ts +5 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/ids.js +19 -0
- package/dist/lib/ids.js.map +1 -0
- package/dist/lib/log.d.ts +10 -0
- package/dist/lib/log.d.ts.map +1 -0
- package/dist/lib/log.js +25 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/mask.d.ts +24 -0
- package/dist/lib/mask.d.ts.map +1 -0
- package/dist/lib/mask.js +63 -0
- package/dist/lib/mask.js.map +1 -0
- package/dist/lib/pagination.d.ts +21 -0
- package/dist/lib/pagination.d.ts.map +1 -0
- package/dist/lib/pagination.js +40 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/truncate.d.ts +25 -0
- package/dist/lib/truncate.d.ts.map +1 -0
- package/dist/lib/truncate.js +45 -0
- package/dist/lib/truncate.js.map +1 -0
- package/dist/main.d.ts +9 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +12 -0
- package/dist/main.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +72 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/docs/diagramSchema.d.ts +2 -0
- package/dist/resources/docs/diagramSchema.d.ts.map +1 -0
- package/dist/resources/docs/diagramSchema.js +65 -0
- package/dist/resources/docs/diagramSchema.js.map +1 -0
- package/dist/resources/docs/overview.d.ts +2 -0
- package/dist/resources/docs/overview.d.ts.map +1 -0
- package/dist/resources/docs/overview.js +46 -0
- package/dist/resources/docs/overview.js.map +1 -0
- package/dist/resources/docs/requestSchema.d.ts +2 -0
- package/dist/resources/docs/requestSchema.d.ts.map +1 -0
- package/dist/resources/docs/requestSchema.js +70 -0
- package/dist/resources/docs/requestSchema.js.map +1 -0
- package/dist/resources/generated/aiPacks.d.ts +3 -0
- package/dist/resources/generated/aiPacks.d.ts.map +1 -0
- package/dist/resources/generated/aiPacks.js +11 -0
- package/dist/resources/generated/aiPacks.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +114 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/run/executeCollection.d.ts +19 -0
- package/dist/run/executeCollection.d.ts.map +1 -0
- package/dist/run/executeCollection.js +89 -0
- package/dist/run/executeCollection.js.map +1 -0
- package/dist/run/loadBundle.d.ts +9 -0
- package/dist/run/loadBundle.d.ts.map +1 -0
- package/dist/run/loadBundle.js +242 -0
- package/dist/run/loadBundle.js.map +1 -0
- package/dist/run/resolveTemplate.d.ts +2 -0
- package/dist/run/resolveTemplate.d.ts.map +1 -0
- package/dist/run/resolveTemplate.js +12 -0
- package/dist/run/resolveTemplate.js.map +1 -0
- package/dist/run/summarize.d.ts +73 -0
- package/dist/run/summarize.d.ts.map +1 -0
- package/dist/run/summarize.js +69 -0
- package/dist/run/summarize.js.map +1 -0
- package/dist/run/types.d.ts +46 -0
- package/dist/run/types.d.ts.map +1 -0
- package/dist/run/types.js +2 -0
- package/dist/run/types.js.map +1 -0
- package/dist/server.d.ts +23 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +25 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/catalog.d.ts +18 -0
- package/dist/tools/catalog.d.ts.map +1 -0
- package/dist/tools/catalog.js +66 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/collections.d.ts +4 -0
- package/dist/tools/collections.d.ts.map +1 -0
- package/dist/tools/collections.js +201 -0
- package/dist/tools/collections.js.map +1 -0
- package/dist/tools/diagrams.d.ts +4 -0
- package/dist/tools/diagrams.d.ts.map +1 -0
- package/dist/tools/diagrams.js +226 -0
- package/dist/tools/diagrams.js.map +1 -0
- package/dist/tools/environments.d.ts +4 -0
- package/dist/tools/environments.d.ts.map +1 -0
- package/dist/tools/environments.js +150 -0
- package/dist/tools/environments.js.map +1 -0
- package/dist/tools/import.d.ts +6 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +144 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +26 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/lookups.d.ts +33 -0
- package/dist/tools/lookups.d.ts.map +1 -0
- package/dist/tools/lookups.js +132 -0
- package/dist/tools/lookups.js.map +1 -0
- package/dist/tools/meta.d.ts +4 -0
- package/dist/tools/meta.d.ts.map +1 -0
- package/dist/tools/meta.js +78 -0
- package/dist/tools/meta.js.map +1 -0
- package/dist/tools/requests.d.ts +4 -0
- package/dist/tools/requests.d.ts.map +1 -0
- package/dist/tools/requests.js +247 -0
- package/dist/tools/requests.js.map +1 -0
- package/dist/tools/run.d.ts +4 -0
- package/dist/tools/run.d.ts.map +1 -0
- package/dist/tools/run.js +167 -0
- package/dist/tools/run.js.map +1 -0
- package/dist/tools/scenarios.d.ts +4 -0
- package/dist/tools/scenarios.d.ts.map +1 -0
- package/dist/tools/scenarios.js +242 -0
- package/dist/tools/scenarios.js.map +1 -0
- package/dist/tools/shared.d.ts +20 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +74 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/workspaces.d.ts +4 -0
- package/dist/tools/workspaces.d.ts.map +1 -0
- package/dist/tools/workspaces.js +80 -0
- package/dist/tools/workspaces.js.map +1 -0
- package/dist-cjs/client/api.js +183 -0
- package/dist-cjs/client/errors.js +104 -0
- package/dist-cjs/client/http.js +124 -0
- package/dist-cjs/client/types.js +5 -0
- package/dist-cjs/config.js +73 -0
- package/dist-cjs/context.js +94 -0
- package/dist-cjs/domain/diagram/build.js +164 -0
- package/dist-cjs/domain/diagram/layout.js +98 -0
- package/dist-cjs/domain/diagram/patch.js +179 -0
- package/dist-cjs/domain/diagram/summarize.js +52 -0
- package/dist-cjs/domain/importDetect.js +40 -0
- package/dist-cjs/domain/requestShape.js +260 -0
- package/dist-cjs/domain/resolve.js +63 -0
- package/dist-cjs/domain/scenario/build.js +140 -0
- package/dist-cjs/domain/scenario/summarize.js +144 -0
- package/dist-cjs/lib/cache.js +43 -0
- package/dist-cjs/lib/ids.js +24 -0
- package/dist-cjs/lib/log.js +28 -0
- package/dist-cjs/lib/mask.js +72 -0
- package/dist-cjs/lib/pagination.js +48 -0
- package/dist-cjs/lib/truncate.js +52 -0
- package/dist-cjs/main.js +31 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/prompts/index.js +75 -0
- package/dist-cjs/resources/docs/diagramSchema.js +67 -0
- package/dist-cjs/resources/docs/overview.js +48 -0
- package/dist-cjs/resources/docs/requestSchema.js +72 -0
- package/dist-cjs/resources/generated/aiPacks.js +13 -0
- package/dist-cjs/resources/index.js +117 -0
- package/dist-cjs/run/executeCollection.js +93 -0
- package/dist-cjs/run/loadBundle.js +246 -0
- package/dist-cjs/run/resolveTemplate.js +15 -0
- package/dist-cjs/run/summarize.js +73 -0
- package/dist-cjs/run/types.js +2 -0
- package/dist-cjs/server.js +28 -0
- package/dist-cjs/tools/catalog.js +69 -0
- package/dist-cjs/tools/collections.js +204 -0
- package/dist-cjs/tools/diagrams.js +229 -0
- package/dist-cjs/tools/environments.js +153 -0
- package/dist-cjs/tools/import.js +147 -0
- package/dist-cjs/tools/index.js +31 -0
- package/dist-cjs/tools/lookups.js +149 -0
- package/dist-cjs/tools/meta.js +81 -0
- package/dist-cjs/tools/requests.js +250 -0
- package/dist-cjs/tools/run.js +203 -0
- package/dist-cjs/tools/scenarios.js +245 -0
- package/dist-cjs/tools/shared.js +81 -0
- package/dist-cjs/tools/workspaces.js +83 -0
- package/package.json +80 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 — First release
|
|
4
|
+
|
|
5
|
+
An MCP server (stdio) that lets Claude Code, Claude Desktop, Cursor, OpenAI Codex and
|
|
6
|
+
Gemini CLI operate a Callman account through the REST API, with a personal token.
|
|
7
|
+
|
|
8
|
+
- **44 tools** across workspaces & members, collections/folders, requests (incl. atomic
|
|
9
|
+
bulk create), imports (Postman, OpenAPI, Insomnia, Bruno, Callman export, cURL, .http,
|
|
10
|
+
scenario exports), environments, scenarios (create/update with version check, server-side
|
|
11
|
+
run with polling, compact reports) and system-design diagrams (typed components, edge
|
|
12
|
+
semantics, automatic ELK layout, incremental patch, sharing).
|
|
13
|
+
- **Local execution** — `run_request` / `run_collection` fetch the pipeline bundle and run
|
|
14
|
+
through callman-core's runner on the user's machine; output never contains variable
|
|
15
|
+
values, and sensitive headers are masked. Disabled with `CALLMAN_ALLOW_RUN=0`.
|
|
16
|
+
- **Reference rebinding** everywhere: id → unique name → unique substring → candidates.
|
|
17
|
+
- **Guard rails**: `dryRun` previews, `confirm: true` on deletes, size-bounded outputs,
|
|
18
|
+
masked secrets, actionable error hints per backend error code, per-tool availability in
|
|
19
|
+
`whoami` from the token's scopes.
|
|
20
|
+
- **Resources** (docs generated from callman-core, the diagram component catalog, live
|
|
21
|
+
workspace data by URI) and **prompts** (import endpoints from code, design a system
|
|
22
|
+
diagram, create a scenario from a flow, document a collection).
|
|
23
|
+
- `callman-mcp doctor` — one-command connection check.
|
|
24
|
+
- ESM + CommonJS library entry (`createCallmanMcpServer`) with injectable `fetch` and
|
|
25
|
+
logger, so the same tool layer can be hosted over another transport.
|
|
26
|
+
|
|
27
|
+
Requires a Callman backend with personal tokens (`/api/personal-tokens`) and
|
|
28
|
+
`callman-core` ≥ 1.28.0. Node.js ≥ 20.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Callman
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# callman-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for [Callman](https://callman.io) — lets **Claude Code, Claude Desktop, Cursor,
|
|
4
|
+
OpenAI Codex and Gemini CLI** work inside your Callman account: build and organise
|
|
5
|
+
collections, import the endpoints found in your code, run requests, create and run test
|
|
6
|
+
scenarios, and draw system-design diagrams. Works with Callman cloud and on-prem.
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
AI tool ──stdio──▶ callman-mcp (this package, on your machine) ──HTTPS──▶ your Callman server
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Everything the AI tool does goes through the same REST API the desktop app uses, as **you**,
|
|
13
|
+
limited to the permissions of the token you created and your role in each workspace.
|
|
14
|
+
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
1. **Create a token** — Callman desktop app → profile menu → **AI tools** → *New token*.
|
|
18
|
+
Pick a preset (*Read only*, *Build collections*, *Full, no delete*, *Full*) or choose
|
|
19
|
+
permissions one by one. The token is shown once, together with a ready-to-paste config
|
|
20
|
+
for your tool.
|
|
21
|
+
2. **Add the server to your AI tool** (needs Node.js 20+):
|
|
22
|
+
|
|
23
|
+
**Claude Code**
|
|
24
|
+
```bash
|
|
25
|
+
claude mcp add callman --scope user -e CALLMAN_API_URL=https://api.callman.io -e CALLMAN_TOKEN=<PASTE_YOUR_TOKEN> -- npx -y callman-mcp
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Claude Desktop** (`claude_desktop_config.json`), **Cursor** (`~/.cursor/mcp.json`),
|
|
29
|
+
**Gemini CLI** (`~/.gemini/settings.json`)
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"mcpServers": {
|
|
33
|
+
"callman": {
|
|
34
|
+
"command": "npx",
|
|
35
|
+
"args": ["-y", "callman-mcp"],
|
|
36
|
+
"env": {
|
|
37
|
+
"CALLMAN_API_URL": "https://api.callman.io",
|
|
38
|
+
"CALLMAN_TOKEN": "<PASTE_YOUR_TOKEN>"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**OpenAI Codex** (`~/.codex/config.toml`)
|
|
46
|
+
```toml
|
|
47
|
+
[mcp_servers.callman]
|
|
48
|
+
command = "npx"
|
|
49
|
+
args = ["-y", "callman-mcp"]
|
|
50
|
+
|
|
51
|
+
[mcp_servers.callman.env]
|
|
52
|
+
CALLMAN_API_URL = "https://api.callman.io"
|
|
53
|
+
CALLMAN_TOKEN = "<PASTE_YOUR_TOKEN>"
|
|
54
|
+
```
|
|
55
|
+
3. **Check it** — `CALLMAN_API_URL=… CALLMAN_TOKEN=… npx -y callman-mcp doctor` prints the
|
|
56
|
+
server, your user, token scopes, workspaces and which tools the token can use. Then ask
|
|
57
|
+
your AI tool: *"list my Callman workspaces"*.
|
|
58
|
+
|
|
59
|
+
Things to try: *"add the endpoints in src/routes/users.ts to a new collection Users API"*,
|
|
60
|
+
*"run GET /users with the Staging environment"*, *"create a scenario that logs in, creates
|
|
61
|
+
an order and checks it appears"*, *"draw the architecture of this repo and share it with
|
|
62
|
+
the Team workspace"*.
|
|
63
|
+
|
|
64
|
+
### Run a local build (before it is published, or while developing it)
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
git clone … callman-mcp && cd callman-mcp
|
|
68
|
+
npm install --legacy-peer-deps && npm run build # → dist/index.js
|
|
69
|
+
```
|
|
70
|
+
Point the AI tool at the file instead of `npx -y callman-mcp`:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
claude mcp add callman --scope user -e CALLMAN_API_URL=http://localhost:8080 -e CALLMAN_TOKEN=<PASTE_YOUR_TOKEN> -- node /abs/path/to/callman-mcp/dist/index.js
|
|
74
|
+
```
|
|
75
|
+
(JSON configs: `"command": "node", "args": ["/abs/path/to/callman-mcp/dist/index.js"]`.)
|
|
76
|
+
Rebuild after changing the source; AI tools start a fresh process per session.
|
|
77
|
+
|
|
78
|
+
## Configuration
|
|
79
|
+
|
|
80
|
+
| Variable | Default | Meaning |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| `CALLMAN_API_URL` | `https://api.callman.io` | Server **origin**. On-prem: the address the desktop app uses (any path prefix is kept; a trailing `/api` is accepted). |
|
|
83
|
+
| `CALLMAN_TOKEN` | — | Personal token (`cm_pat_…`). Without it the server still starts; `whoami` explains how to set one. |
|
|
84
|
+
| `CALLMAN_TOKEN_FILE` | — | Read the token from a file instead (Docker/Kubernetes secrets). |
|
|
85
|
+
| `CALLMAN_WORKSPACE_ID` | — | Default workspace. Optional: with one workspace it is automatic; with several, tools take `workspace` (name or id). |
|
|
86
|
+
| `CALLMAN_ALLOW_RUN` | `1` | `0` removes `run_request` / `run_collection` (no local execution). |
|
|
87
|
+
| `CALLMAN_LOG_LEVEL` | `warn` | `silent`, `error`, `warn`, `info`, `debug` — to **stderr** (stdout is the protocol). |
|
|
88
|
+
| `CALLMAN_TIMEOUT_MS` | `30000` | Per API call. |
|
|
89
|
+
| `CALLMAN_RUN_TIMEOUT_MS` | `600000` | Budget for one local run. |
|
|
90
|
+
| `CALLMAN_MAX_BODY_BYTES` | `16384` | Response-body preview cap in run output (max 262144). |
|
|
91
|
+
|
|
92
|
+
## Tools (44) and the permission each needs
|
|
93
|
+
|
|
94
|
+
| Area | Tools | Scope |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| Meta | `whoami` | — |
|
|
97
|
+
| Workspaces | `list_workspaces`, `list_workspace_members` | `workspaces:read` (always on) |
|
|
98
|
+
| | `add_workspace_member`, `remove_workspace_member` | `members:manage` (+ owner role) |
|
|
99
|
+
| Collections | `list_collections`, `get_collection_tree`, `export_collection` | `collections:read` |
|
|
100
|
+
| | `create_collection`, `update_collection`, `create_folder`, `update_folder` | `collections:write` |
|
|
101
|
+
| | `delete_collection`, `delete_folder` | `collections:delete` |
|
|
102
|
+
| Requests | `search_requests`, `get_request` | `requests:read` |
|
|
103
|
+
| | `create_request`, `update_request`, `move_requests` | `requests:write` |
|
|
104
|
+
| | `create_requests_bulk` | `requests:write` (existing collection) / `import:write` (new collection, atomic) |
|
|
105
|
+
| | `delete_requests` | `requests:delete` |
|
|
106
|
+
| | `run_request`, `run_collection` | `requests:run` |
|
|
107
|
+
| Import | `import_content` (Postman, OpenAPI, Insomnia, Bruno, Callman export, cURL, .http) | `import:write` (`requests:write` for cURL/.http into an existing collection) |
|
|
108
|
+
| | `import_scenario` | `import:write` |
|
|
109
|
+
| Environments | `list_environments`, `get_environment` | `environments:read` (+ `environments:reveal` for values) |
|
|
110
|
+
| | `create_environment`, `set_environment_variables` | `environments:write` |
|
|
111
|
+
| | `delete_environment` | `environments:delete` |
|
|
112
|
+
| Scenarios | `list_scenarios`, `get_scenario`, `get_scenario_report` | `scenarios:read` |
|
|
113
|
+
| | `create_scenario`, `update_scenario` | `scenarios:write` |
|
|
114
|
+
| | `run_scenario` | `scenarios:run` |
|
|
115
|
+
| | `delete_scenario` | `scenarios:delete` |
|
|
116
|
+
| Diagrams | `list_diagrams`, `get_diagram` | `diagrams:read` |
|
|
117
|
+
| | `create_diagram`, `update_diagram`, `patch_diagram` | `diagrams:write` |
|
|
118
|
+
| | `share_diagram` | `diagrams:share` |
|
|
119
|
+
| | `delete_diagram` | `diagrams:delete` |
|
|
120
|
+
|
|
121
|
+
Conventions: names work wherever an id does (ambiguous names return candidates); big writes
|
|
122
|
+
take `dryRun: true`; deletions require `confirm: true`; every write reports what it resolved
|
|
123
|
+
(`resolved: [{ input, matched, id }]`); outputs are size-bounded and say when they truncate.
|
|
124
|
+
|
|
125
|
+
**Resources** — `callman://docs/overview`, `…/docs/request-schema`, `…/docs/scenario-nodes`,
|
|
126
|
+
`…/docs/scripting/{pm-api,db-queries,templating,sandbox}`, `…/docs/diagram-schema`,
|
|
127
|
+
`callman://diagram/components[/{category}]` (the component catalog, generated from
|
|
128
|
+
callman-core), and live data: `callman://workspaces`, `callman://workspace/{workspace}/collections`,
|
|
129
|
+
`…/environments`, `callman://collection/{collection}/tree`, `callman://request/{request}`,
|
|
130
|
+
`callman://environment/{environment}`, `callman://scenario/{scenario}`, `callman://diagram/{diagram}`.
|
|
131
|
+
|
|
132
|
+
**Prompts** — `import_endpoints_from_code`, `design_system_diagram`,
|
|
133
|
+
`create_scenario_from_flow`, `document_collection`.
|
|
134
|
+
|
|
135
|
+
## Security model
|
|
136
|
+
|
|
137
|
+
- **Your identity, narrowed.** A personal token acts as you in every workspace you belong
|
|
138
|
+
to, with your role there (a viewer's token cannot write), limited to its scopes. The
|
|
139
|
+
server enforces scopes on every route; areas outside the AI-tool surface (mocks,
|
|
140
|
+
connections, history, UI tests, admin) are refused.
|
|
141
|
+
- **Secrets stay masked.** Environment, global and scenario variable values come back as
|
|
142
|
+
`••••ab` unless the token holds `environments:reveal` **and** the call passes
|
|
143
|
+
`reveal: true`. Masked values can never be written back. Request auth secrets and
|
|
144
|
+
sensitive headers are masked by this server on the way to the model.
|
|
145
|
+
- **Local runs keep values local.** `run_request` / `run_collection` fetch the collection
|
|
146
|
+
bundle, resolve variables and send requests **on your machine** (the same engine as the
|
|
147
|
+
desktop app and `callme-cli`). The model receives status, timing, bounded bodies, test
|
|
148
|
+
results and the *names* of variables scripts changed — never values.
|
|
149
|
+
- **Deletes are opt-in twice**: a `*:delete` scope on the token and `confirm: true` on the call.
|
|
150
|
+
- Tokens always expire, are rate-limited per token, attributed in the audit trail, revocable
|
|
151
|
+
at any time in the desktop app, and the whole feature is behind the `mcp` feature flag an
|
|
152
|
+
administrator controls.
|
|
153
|
+
|
|
154
|
+
## On-prem
|
|
155
|
+
|
|
156
|
+
Use the address the desktop app uses (`http(s)://<host>[:port][/prefix]`). The `/api` path
|
|
157
|
+
must be reachable from the machine running the AI tool. Corporate TLS: add
|
|
158
|
+
`NODE_EXTRA_CA_CERTS=/path/to/ca.pem` to the server's `env`. Air-gapped: `npm pack
|
|
159
|
+
callman-mcp` on a connected machine, `npm i -g ./callman-mcp-<version>.tgz` on the target,
|
|
160
|
+
and use `callman-mcp` as the command instead of `npx -y callman-mcp`. The administrator
|
|
161
|
+
enables AI tools in the admin panel (feature flag **AI tools (MCP)**).
|
|
162
|
+
|
|
163
|
+
## Troubleshooting
|
|
164
|
+
|
|
165
|
+
| Symptom | Fix |
|
|
166
|
+
|---|---|
|
|
167
|
+
| `401` | Token missing, expired or revoked — create a new one and update the config. |
|
|
168
|
+
| `403 PAT_SCOPE_MISSING` | The message names the scope; create a token that has it. |
|
|
169
|
+
| `403 PAT_ROUTE_FORBIDDEN` | That area is not available to AI tools. |
|
|
170
|
+
| `403 FEATURE_DISABLED` | An administrator switched AI tools off. |
|
|
171
|
+
| `403` on a write | You are a viewer in that workspace. |
|
|
172
|
+
| "pass `workspace`" | Several workspaces and no default — name one, or set `CALLMAN_WORKSPACE_ID`. |
|
|
173
|
+
| Tool not listed in the client | Node 20+? Can `npx` reach the registry? Run `callman-mcp doctor`. |
|
|
174
|
+
| Changes not visible in the app | Switch back to the app (it refreshes on focus) or press Refresh in the diagram library. |
|
|
175
|
+
|
|
176
|
+
## Embedding
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
import { createCallmanMcpServer, resolveConfig } from "callman-mcp";
|
|
180
|
+
|
|
181
|
+
const { server } = createCallmanMcpServer({
|
|
182
|
+
config: resolveConfig({ env: { CALLMAN_API_URL: "…", CALLMAN_TOKEN: "…", CALLMAN_ALLOW_RUN: "0" } }),
|
|
183
|
+
fetch, // injectable
|
|
184
|
+
});
|
|
185
|
+
await server.connect(transport); // any MCP transport
|
|
186
|
+
```
|
|
187
|
+
ESM and CommonJS builds are shipped. The tool layer never reads the environment, the file
|
|
188
|
+
system or stdout — only the bin (`dist/index.js`) does.
|
|
189
|
+
|
|
190
|
+
## Development
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
nvm use # Node 22
|
|
194
|
+
npm install --legacy-peer-deps # npm 10's arborist trips over a dev-only peer set
|
|
195
|
+
npm run lint && npm run build && npm test && npm run smoke
|
|
196
|
+
```
|
|
197
|
+
`tests/fixtures/fake-backend.ts` is an in-memory Callman backend (envelope, scopes, masking,
|
|
198
|
+
pagination, CAS, runs); contract tests drive every tool through a real MCP client. `npm run
|
|
199
|
+
smoke` starts the built server over stdio. Shared logic (cURL/.http parsers, the diagram
|
|
200
|
+
document contract and component catalog, the request runner) comes from
|
|
201
|
+
[`callman-core`](https://www.npmjs.com/package/callman-core).
|
|
202
|
+
|
|
203
|
+
MIT
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { CallmanHttpClient } from "./http.js";
|
|
2
|
+
import type { ApiRequest, Collection, Diagram, Environment, FeatureMap, Folder, FolderTree, GlobalVariable, ImportResult, Paginated, PersonalTokenMe, PipelineBundle, RequestTreeItem, Scenario, ScenarioFolder, ScenarioImportResult, ScenarioRunListItem, ScenarioRunReport, ScenarioRunTrigger, Workspace, WorkspaceMember } from "./types.js";
|
|
3
|
+
export declare class CallmanApi {
|
|
4
|
+
readonly http: CallmanHttpClient;
|
|
5
|
+
constructor(http: CallmanHttpClient);
|
|
6
|
+
me(): Promise<PersonalTokenMe>;
|
|
7
|
+
features(): Promise<FeatureMap>;
|
|
8
|
+
listWorkspaces(): Promise<Workspace[]>;
|
|
9
|
+
listMembers(workspaceId: string): Promise<{
|
|
10
|
+
items: WorkspaceMember[];
|
|
11
|
+
}>;
|
|
12
|
+
addMember(workspaceId: string, body: {
|
|
13
|
+
email: string;
|
|
14
|
+
role: "owner" | "editor" | "viewer";
|
|
15
|
+
}): Promise<WorkspaceMember>;
|
|
16
|
+
removeMember(workspaceId: string, memberId: string): Promise<void>;
|
|
17
|
+
listCollections(ws: string, page?: number, limit?: number): Promise<Paginated<Collection>>;
|
|
18
|
+
listAllCollections(ws: string): Promise<Collection[]>;
|
|
19
|
+
getCollection(ws: string, id: string): Promise<Collection>;
|
|
20
|
+
createCollection(ws: string, body: {
|
|
21
|
+
name: string;
|
|
22
|
+
runnerSettings?: Record<string, boolean>;
|
|
23
|
+
}): Promise<Collection>;
|
|
24
|
+
updateCollection(ws: string, id: string, body: {
|
|
25
|
+
name?: string;
|
|
26
|
+
runnerSettings?: Record<string, boolean>;
|
|
27
|
+
}): Promise<Collection>;
|
|
28
|
+
deleteCollection(ws: string, id: string): Promise<unknown>;
|
|
29
|
+
folderTree(ws: string, collectionId: string): Promise<FolderTree>;
|
|
30
|
+
createFolder(ws: string, body: {
|
|
31
|
+
name: string;
|
|
32
|
+
collectionId: string;
|
|
33
|
+
parentId?: string | null;
|
|
34
|
+
}): Promise<Folder>;
|
|
35
|
+
updateFolder(ws: string, id: string, body: {
|
|
36
|
+
name?: string;
|
|
37
|
+
parentId?: string | null;
|
|
38
|
+
collectionId?: string;
|
|
39
|
+
}): Promise<Folder>;
|
|
40
|
+
deleteFolder(ws: string, id: string): Promise<unknown>;
|
|
41
|
+
exportCollection(ws: string, id: string, type: "internal" | "postman"): Promise<unknown>;
|
|
42
|
+
requestTree(ws: string, collectionId: string): Promise<RequestTreeItem[]>;
|
|
43
|
+
getRequest(ws: string, id: string): Promise<ApiRequest>;
|
|
44
|
+
createRequest(ws: string, body: Record<string, unknown>): Promise<ApiRequest>;
|
|
45
|
+
updateRequest(ws: string, id: string, body: Record<string, unknown>): Promise<ApiRequest>;
|
|
46
|
+
deleteRequest(ws: string, id: string): Promise<unknown>;
|
|
47
|
+
importJson(ws: string, body: {
|
|
48
|
+
format: string;
|
|
49
|
+
payload: unknown;
|
|
50
|
+
fallbackCollectionName?: string;
|
|
51
|
+
targetEnvironmentId?: string | null;
|
|
52
|
+
}): Promise<ImportResult>;
|
|
53
|
+
importScenario(ws: string, body: {
|
|
54
|
+
envelope: unknown;
|
|
55
|
+
name?: string;
|
|
56
|
+
folderId?: string | null;
|
|
57
|
+
connectionMap?: Record<string, unknown>;
|
|
58
|
+
}): Promise<ScenarioImportResult>;
|
|
59
|
+
listEnvironments(ws: string, reveal?: boolean): Promise<Paginated<Environment>>;
|
|
60
|
+
getEnvironment(ws: string, id: string, reveal?: boolean): Promise<Environment>;
|
|
61
|
+
createEnvironment(ws: string, body: {
|
|
62
|
+
name: string;
|
|
63
|
+
variables: Array<{
|
|
64
|
+
key: string;
|
|
65
|
+
value: string;
|
|
66
|
+
enabled?: boolean;
|
|
67
|
+
}>;
|
|
68
|
+
}): Promise<Environment>;
|
|
69
|
+
deleteEnvironment(ws: string, id: string): Promise<unknown>;
|
|
70
|
+
addEnvironmentVariable(ws: string, id: string, body: {
|
|
71
|
+
key: string;
|
|
72
|
+
value: string;
|
|
73
|
+
}): Promise<Environment>;
|
|
74
|
+
updateEnvironmentVariable(ws: string, id: string, key: string, body: {
|
|
75
|
+
value: string;
|
|
76
|
+
}): Promise<Environment>;
|
|
77
|
+
deleteEnvironmentVariable(ws: string, id: string, key: string): Promise<Environment>;
|
|
78
|
+
listGlobalVariables(ws: string, reveal?: boolean): Promise<GlobalVariable[]>;
|
|
79
|
+
listScenarios(ws: string | null): Promise<Scenario[]>;
|
|
80
|
+
listScenarioFolders(ws: string | null): Promise<ScenarioFolder[] | {
|
|
81
|
+
items: ScenarioFolder[];
|
|
82
|
+
}>;
|
|
83
|
+
getScenario(ws: string | null, id: string, reveal?: boolean): Promise<Scenario>;
|
|
84
|
+
createScenario(ws: string, body: Record<string, unknown>): Promise<Scenario>;
|
|
85
|
+
patchScenario(ws: string | null, id: string, body: Record<string, unknown>): Promise<Scenario>;
|
|
86
|
+
deleteScenario(ws: string | null, id: string): Promise<unknown>;
|
|
87
|
+
runScenario(ws: string | null, id: string, body: {
|
|
88
|
+
environmentId?: string;
|
|
89
|
+
}): Promise<ScenarioRunTrigger>;
|
|
90
|
+
listScenarioReports(ws: string | null, id: string, limit?: number): Promise<Paginated<ScenarioRunListItem>>;
|
|
91
|
+
getScenarioReport(ws: string | null, id: string, reportId: string): Promise<ScenarioRunReport>;
|
|
92
|
+
listDiagrams(): Promise<Diagram[]>;
|
|
93
|
+
getDiagram(id: string): Promise<Diagram>;
|
|
94
|
+
createDiagram(body: {
|
|
95
|
+
name: string;
|
|
96
|
+
document: unknown;
|
|
97
|
+
}): Promise<Diagram>;
|
|
98
|
+
updateDiagram(id: string, body: {
|
|
99
|
+
name?: string;
|
|
100
|
+
document?: unknown;
|
|
101
|
+
}): Promise<Diagram>;
|
|
102
|
+
deleteDiagram(id: string): Promise<unknown>;
|
|
103
|
+
shareDiagram(id: string, body: {
|
|
104
|
+
workspaceIds: string[];
|
|
105
|
+
editorIds: string[];
|
|
106
|
+
}): Promise<Diagram>;
|
|
107
|
+
pipelineBundle(ws: string, collectionId: string, environmentId: string | null): Promise<PipelineBundle>;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
// Typed endpoint functions — one per backend route the tools use. Thin on
|
|
2
|
+
// purpose: no business rules here, only paths, headers and shapes. `ws` is
|
|
3
|
+
// the workspace id for workspace-scoped routes.
|
|
4
|
+
export class CallmanApi {
|
|
5
|
+
http;
|
|
6
|
+
constructor(http) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
}
|
|
9
|
+
// ── identity ────────────────────────────────────────────────────────
|
|
10
|
+
me() {
|
|
11
|
+
return this.http.request("GET", "/personal-tokens/me");
|
|
12
|
+
}
|
|
13
|
+
features() {
|
|
14
|
+
return this.http.request("GET", "/features");
|
|
15
|
+
}
|
|
16
|
+
// ── workspaces ──────────────────────────────────────────────────────
|
|
17
|
+
listWorkspaces() {
|
|
18
|
+
return this.http.request("GET", "/workspaces");
|
|
19
|
+
}
|
|
20
|
+
listMembers(workspaceId) {
|
|
21
|
+
return this.http.request("GET", `/workspaces/${workspaceId}/members`);
|
|
22
|
+
}
|
|
23
|
+
addMember(workspaceId, body) {
|
|
24
|
+
return this.http.request("POST", `/workspaces/${workspaceId}/members`, { body });
|
|
25
|
+
}
|
|
26
|
+
removeMember(workspaceId, memberId) {
|
|
27
|
+
return this.http.request("DELETE", `/workspaces/${workspaceId}/members/${memberId}`);
|
|
28
|
+
}
|
|
29
|
+
// ── collections / folders ───────────────────────────────────────────
|
|
30
|
+
listCollections(ws, page = 1, limit = 100) {
|
|
31
|
+
return this.http.request("GET", "/collections", { workspaceId: ws, query: { page, limit } });
|
|
32
|
+
}
|
|
33
|
+
async listAllCollections(ws) {
|
|
34
|
+
const out = [];
|
|
35
|
+
let page = 1;
|
|
36
|
+
for (;;) {
|
|
37
|
+
const result = await this.listCollections(ws, page, 100);
|
|
38
|
+
out.push(...result.items);
|
|
39
|
+
if (page >= result.pagination.totalPages || result.items.length === 0)
|
|
40
|
+
break;
|
|
41
|
+
page += 1;
|
|
42
|
+
if (page > 50)
|
|
43
|
+
break; // 5 000 collections — more than any workspace has
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
getCollection(ws, id) {
|
|
48
|
+
return this.http.request("GET", `/collections/${id}`, { workspaceId: ws });
|
|
49
|
+
}
|
|
50
|
+
createCollection(ws, body) {
|
|
51
|
+
return this.http.request("POST", "/collections", { workspaceId: ws, body });
|
|
52
|
+
}
|
|
53
|
+
updateCollection(ws, id, body) {
|
|
54
|
+
return this.http.request("PATCH", `/collections/${id}`, { workspaceId: ws, body });
|
|
55
|
+
}
|
|
56
|
+
deleteCollection(ws, id) {
|
|
57
|
+
return this.http.request("DELETE", `/collections/${id}`, { workspaceId: ws });
|
|
58
|
+
}
|
|
59
|
+
folderTree(ws, collectionId) {
|
|
60
|
+
return this.http.request("GET", `/folders/tree/${collectionId}`, { workspaceId: ws });
|
|
61
|
+
}
|
|
62
|
+
createFolder(ws, body) {
|
|
63
|
+
return this.http.request("POST", "/folders", { workspaceId: ws, body });
|
|
64
|
+
}
|
|
65
|
+
updateFolder(ws, id, body) {
|
|
66
|
+
return this.http.request("PATCH", `/folders/${id}`, { workspaceId: ws, body });
|
|
67
|
+
}
|
|
68
|
+
deleteFolder(ws, id) {
|
|
69
|
+
return this.http.request("DELETE", `/folders/${id}`, { workspaceId: ws });
|
|
70
|
+
}
|
|
71
|
+
exportCollection(ws, id, type) {
|
|
72
|
+
return this.http.request("GET", `/export/${id}`, { workspaceId: ws, query: { type } });
|
|
73
|
+
}
|
|
74
|
+
// ── requests ────────────────────────────────────────────────────────
|
|
75
|
+
requestTree(ws, collectionId) {
|
|
76
|
+
return this.http.request("GET", "/requests/tree", { workspaceId: ws, query: { collectionId } });
|
|
77
|
+
}
|
|
78
|
+
getRequest(ws, id) {
|
|
79
|
+
return this.http.request("GET", `/requests/${id}`, { workspaceId: ws });
|
|
80
|
+
}
|
|
81
|
+
createRequest(ws, body) {
|
|
82
|
+
return this.http.request("POST", "/requests", { workspaceId: ws, body });
|
|
83
|
+
}
|
|
84
|
+
updateRequest(ws, id, body) {
|
|
85
|
+
return this.http.request("PATCH", `/requests/${id}`, { workspaceId: ws, body });
|
|
86
|
+
}
|
|
87
|
+
deleteRequest(ws, id) {
|
|
88
|
+
return this.http.request("DELETE", `/requests/${id}`, { workspaceId: ws });
|
|
89
|
+
}
|
|
90
|
+
// ── import ──────────────────────────────────────────────────────────
|
|
91
|
+
importJson(ws, body) {
|
|
92
|
+
return this.http.request("POST", "/import/json", { workspaceId: ws, body, timeoutMs: 120_000 });
|
|
93
|
+
}
|
|
94
|
+
importScenario(ws, body) {
|
|
95
|
+
return this.http.request("POST", "/import/scenario", { workspaceId: ws, body, timeoutMs: 120_000 });
|
|
96
|
+
}
|
|
97
|
+
// ── environments / globals ──────────────────────────────────────────
|
|
98
|
+
listEnvironments(ws, reveal = false) {
|
|
99
|
+
return this.http.request("GET", "/environments", {
|
|
100
|
+
workspaceId: ws,
|
|
101
|
+
query: { page: 1, limit: 100, ...(reveal ? { reveal: "true" } : {}) },
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
getEnvironment(ws, id, reveal = false) {
|
|
105
|
+
return this.http.request("GET", `/environments/${id}`, { workspaceId: ws, query: reveal ? { reveal: "true" } : {} });
|
|
106
|
+
}
|
|
107
|
+
createEnvironment(ws, body) {
|
|
108
|
+
return this.http.request("POST", "/environments", { workspaceId: ws, body });
|
|
109
|
+
}
|
|
110
|
+
deleteEnvironment(ws, id) {
|
|
111
|
+
return this.http.request("DELETE", `/environments/${id}`, { workspaceId: ws });
|
|
112
|
+
}
|
|
113
|
+
addEnvironmentVariable(ws, id, body) {
|
|
114
|
+
return this.http.request("POST", `/environments/${id}/variables`, { workspaceId: ws, body });
|
|
115
|
+
}
|
|
116
|
+
updateEnvironmentVariable(ws, id, key, body) {
|
|
117
|
+
return this.http.request("PATCH", `/environments/${id}/variables/${encodeURIComponent(key)}`, { workspaceId: ws, body });
|
|
118
|
+
}
|
|
119
|
+
deleteEnvironmentVariable(ws, id, key) {
|
|
120
|
+
return this.http.request("DELETE", `/environments/${id}/variables/${encodeURIComponent(key)}`, { workspaceId: ws });
|
|
121
|
+
}
|
|
122
|
+
listGlobalVariables(ws, reveal = false) {
|
|
123
|
+
return this.http.request("GET", "/variables/global", { workspaceId: ws, query: reveal ? { reveal: "true" } : {} });
|
|
124
|
+
}
|
|
125
|
+
// ── scenarios ───────────────────────────────────────────────────────
|
|
126
|
+
listScenarios(ws) {
|
|
127
|
+
return this.http.request("GET", "/scenarios", { workspaceId: ws });
|
|
128
|
+
}
|
|
129
|
+
listScenarioFolders(ws) {
|
|
130
|
+
return this.http.request("GET", "/scenario-folders", { workspaceId: ws });
|
|
131
|
+
}
|
|
132
|
+
getScenario(ws, id, reveal = false) {
|
|
133
|
+
return this.http.request("GET", `/scenarios/${id}`, { workspaceId: ws, query: reveal ? { reveal: "true" } : {} });
|
|
134
|
+
}
|
|
135
|
+
createScenario(ws, body) {
|
|
136
|
+
return this.http.request("POST", "/scenarios", { workspaceId: ws, body });
|
|
137
|
+
}
|
|
138
|
+
patchScenario(ws, id, body) {
|
|
139
|
+
return this.http.request("PATCH", `/scenarios/${id}`, { workspaceId: ws, body });
|
|
140
|
+
}
|
|
141
|
+
deleteScenario(ws, id) {
|
|
142
|
+
return this.http.request("DELETE", `/scenarios/${id}`, { workspaceId: ws });
|
|
143
|
+
}
|
|
144
|
+
runScenario(ws, id, body) {
|
|
145
|
+
return this.http.request("POST", `/scenarios/${id}/run-server`, { workspaceId: ws, body });
|
|
146
|
+
}
|
|
147
|
+
listScenarioReports(ws, id, limit = 20) {
|
|
148
|
+
return this.http.request("GET", `/scenarios/${id}/reports`, { workspaceId: ws, query: { page: 1, limit } });
|
|
149
|
+
}
|
|
150
|
+
getScenarioReport(ws, id, reportId) {
|
|
151
|
+
return this.http.request("GET", `/scenarios/${id}/reports/${reportId}`, { workspaceId: ws });
|
|
152
|
+
}
|
|
153
|
+
// ── diagrams (user-owned, not workspace-scoped) ─────────────────────
|
|
154
|
+
listDiagrams() {
|
|
155
|
+
return this.http.request("GET", "/diagrams");
|
|
156
|
+
}
|
|
157
|
+
getDiagram(id) {
|
|
158
|
+
return this.http.request("GET", `/diagrams/${id}`);
|
|
159
|
+
}
|
|
160
|
+
createDiagram(body) {
|
|
161
|
+
return this.http.request("POST", "/diagrams", { body });
|
|
162
|
+
}
|
|
163
|
+
updateDiagram(id, body) {
|
|
164
|
+
return this.http.request("PUT", `/diagrams/${id}`, { body });
|
|
165
|
+
}
|
|
166
|
+
deleteDiagram(id) {
|
|
167
|
+
return this.http.request("DELETE", `/diagrams/${id}`);
|
|
168
|
+
}
|
|
169
|
+
shareDiagram(id, body) {
|
|
170
|
+
return this.http.request("POST", `/diagrams/${id}/share`, { body });
|
|
171
|
+
}
|
|
172
|
+
// ── local run bundle ────────────────────────────────────────────────
|
|
173
|
+
pipelineBundle(ws, collectionId, environmentId) {
|
|
174
|
+
return this.http.request("GET", "/pipeline/bundle", {
|
|
175
|
+
workspaceId: ws,
|
|
176
|
+
query: { collectionId, ...(environmentId ? { environmentId } : {}) },
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare class CallmanApiError extends Error {
|
|
2
|
+
readonly status: number;
|
|
3
|
+
readonly code: string;
|
|
4
|
+
readonly details: unknown;
|
|
5
|
+
readonly method: string;
|
|
6
|
+
readonly path: string;
|
|
7
|
+
constructor(input: {
|
|
8
|
+
status: number;
|
|
9
|
+
code: string;
|
|
10
|
+
message: string;
|
|
11
|
+
details?: unknown;
|
|
12
|
+
method: string;
|
|
13
|
+
path: string;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export declare class CallmanNetworkError extends Error {
|
|
17
|
+
readonly apiUrl: string;
|
|
18
|
+
readonly cause?: unknown;
|
|
19
|
+
constructor(apiUrl: string, message: string, cause?: unknown);
|
|
20
|
+
}
|
|
21
|
+
export declare class ToolInputError extends Error {
|
|
22
|
+
readonly code: string;
|
|
23
|
+
readonly data: Record<string, unknown> | undefined;
|
|
24
|
+
constructor(code: string, message: string, data?: Record<string, unknown>);
|
|
25
|
+
}
|
|
26
|
+
export declare const hintFor: (error: CallmanApiError) => string;
|
|
27
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAGA,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,KAAK,EAAE;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd;CASF;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM7D;AAKD,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;gBAEvC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM1E;AAKD,eAAO,MAAM,OAAO,GAAI,OAAO,eAAe,KAAG,MAsDhD,CAAC"}
|