@elastic.io/mcp 1.0.1-dev1 → 1.0.1-dev11
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/README.md +80 -99
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +3 -1
- package/dist/api/client.js.map +1 -1
- package/dist/api/verification.d.ts +6 -0
- package/dist/api/verification.d.ts.map +1 -0
- package/dist/api/verification.js +71 -0
- package/dist/api/verification.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -0
- package/dist/setup.d.ts +3 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +284 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +34 -2
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/flow-build.d.ts +18 -0
- package/dist/tools/flow-build.d.ts.map +1 -0
- package/dist/tools/flow-build.js +291 -0
- package/dist/tools/flow-build.js.map +1 -0
- package/dist/tools/flow-evidence.d.ts +62 -0
- package/dist/tools/flow-evidence.d.ts.map +1 -0
- package/dist/tools/flow-evidence.js +128 -0
- package/dist/tools/flow-evidence.js.map +1 -0
- package/dist/tools/flow-state-machine.d.ts +68 -0
- package/dist/tools/flow-state-machine.d.ts.map +1 -0
- package/dist/tools/flow-state-machine.js +292 -0
- package/dist/tools/flow-state-machine.js.map +1 -0
- package/dist/tools/handlers/auth.d.ts.map +1 -1
- package/dist/tools/handlers/auth.js +10 -144
- package/dist/tools/handlers/auth.js.map +1 -1
- package/dist/tools/handlers/component.d.ts.map +1 -1
- package/dist/tools/handlers/component.js +26 -6
- package/dist/tools/handlers/component.js.map +1 -1
- package/dist/tools/handlers/data-sample.d.ts.map +1 -1
- package/dist/tools/handlers/data-sample.js +36 -5
- package/dist/tools/handlers/data-sample.js.map +1 -1
- package/dist/tools/handlers/dynamic.d.ts.map +1 -1
- package/dist/tools/handlers/dynamic.js +42 -13
- package/dist/tools/handlers/dynamic.js.map +1 -1
- package/dist/tools/handlers/flow.d.ts.map +1 -1
- package/dist/tools/handlers/flow.js +144 -616
- package/dist/tools/handlers/flow.js.map +1 -1
- package/dist/tools/handlers/log.d.ts.map +1 -1
- package/dist/tools/handlers/log.js.map +1 -1
- package/dist/tools/handlers/raw.d.ts.map +1 -1
- package/dist/tools/handlers/raw.js +3 -0
- package/dist/tools/handlers/raw.js.map +1 -1
- package/dist/tools/handlers/search.d.ts.map +1 -1
- package/dist/tools/handlers/search.js +31 -0
- package/dist/tools/handlers/search.js.map +1 -1
- package/dist/tools/handlers/session.d.ts.map +1 -1
- package/dist/tools/handlers/session.js +7 -1
- package/dist/tools/handlers/session.js.map +1 -1
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +7 -2
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/types.d.ts +6 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/validation.d.ts +16 -1
- package/dist/tools/validation.d.ts.map +1 -1
- package/dist/tools/validation.js +163 -141
- package/dist/tools/validation.js.map +1 -1
- package/package.json +5 -3
- package/resources/docs/flow-creation-stages.md +195 -0
- package/resources/docs/flow-state-machine-audit.md +162 -0
package/README.md
CHANGED
|
@@ -1,138 +1,119 @@
|
|
|
1
1
|
# elastic.io Model Context Protocol (MCP) Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
An MCP server that connects AI assistants to the **elastic.io** iPaaS platform — letting them discover, build, modify, and debug integration flows directly.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
It is published on npm as `@elastic.io/mcp` and can be run directly via `npx @elastic.io/mcp`.
|
|
5
|
+
Published on npm as `@elastic.io/mcp`.
|
|
8
6
|
|
|
9
7
|
---
|
|
10
8
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
This server implements the **Model Context Protocol (MCP)**, a standard protocol that lets LLMs securely query and mutate data in external systems.
|
|
14
|
-
|
|
15
|
-
Specifically, this server acts as an intelligent intermediary between an LLM agent and the elastic.io integration platform, exposing 36 distinct tools that translate high-level requests into raw API operations. It allows LLMs to list components, discover credentials, create and manage flows, build mappings with JSONata expressions, debug individual flow steps, manage data samples, analyze run-time logs, and more.
|
|
16
|
-
|
|
17
|
-
---
|
|
9
|
+
## Quick Start
|
|
18
10
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
The server runs in **Stdio mode**: the LLM client starts the server as a subprocess, and communication occurs over standard input/output streams.
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
LLM Client (Cursor/Claude Code/Claude Desktop) <--> [stdin / stdout] <--> MCP Server
|
|
25
|
-
```
|
|
11
|
+
### Prerequisites
|
|
26
12
|
|
|
27
|
-
|
|
13
|
+
1. **Node.js 22+** — download from [nodejs.org](https://nodejs.org/)
|
|
14
|
+
2. **A desktop AI client** — install one of the supported clients (see below)
|
|
15
|
+
3. **elastic.io credentials** — your account email and API key
|
|
28
16
|
|
|
29
|
-
###
|
|
30
|
-
* **State-Machine Verification:** To prevent the LLM from configuring flows using cached or hallucinated IDs, the validation engine enforces that components and credentials must be fetched/discovered in the current session before they can be configured in a graph.
|
|
31
|
-
* **JSONata Safety Checks:** The server reviews generated mappings, warning the LLM if it wraps JSONata mappers in outer quotes (making them strings) or references variables directly instead of using `$getPassthrough().step_id.body.field`.
|
|
32
|
-
* **Token Optimization:** Component details are retrieved in two steps to prevent token bloat. Large metadata objects and enums are dynamically pruned when they exceed limits.
|
|
17
|
+
### One-Command Setup
|
|
33
18
|
|
|
34
|
-
|
|
19
|
+
Run this in your terminal — it will detect your installed AI clients and configure them automatically:
|
|
35
20
|
|
|
36
|
-
## Execution Process & Requirements
|
|
37
|
-
|
|
38
|
-
### Requirements
|
|
39
|
-
* **Node.js** (version 18 or higher)
|
|
40
|
-
* **npm** or yarn
|
|
41
|
-
* **Embedding Provider API Key** (required for creating documentation and flow sample embeddings, e.g. Gemini).
|
|
42
|
-
* **Vector Store URL and API Key** (for semantic search capabilities, e.g. Qdrant).
|
|
43
|
-
|
|
44
|
-
### Local Setup
|
|
45
|
-
1. Clone this repository and install dependencies:
|
|
46
|
-
```bash
|
|
47
|
-
npm install
|
|
48
|
-
```
|
|
49
|
-
2. Copy `.env.example` to `.env` and fill out your variables:
|
|
50
|
-
```bash
|
|
51
|
-
cp .env.example .env
|
|
52
|
-
```
|
|
53
|
-
3. Build the project:
|
|
54
|
-
```bash
|
|
55
|
-
npm run build
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Running the Server
|
|
59
|
-
To run the server locally inside your IDE (e.g. Cursor or Claude Desktop):
|
|
60
|
-
```bash
|
|
61
|
-
node dist/index.js
|
|
62
21
|
```
|
|
63
|
-
|
|
64
|
-
#### Using npx (no local clone needed)
|
|
65
|
-
If the package is published to npm, you can run it directly:
|
|
66
|
-
```bash
|
|
67
|
-
ELASTICIO_API_EMAIL="your_email@example.com" \
|
|
68
|
-
ELASTICIO_API_KEY="your_api_key" \
|
|
69
|
-
npx @elastic.io/mcp
|
|
22
|
+
npx -y @elastic.io/mcp setup
|
|
70
23
|
```
|
|
71
24
|
|
|
72
|
-
|
|
25
|
+
Works on macOS, Linux, and Windows. The setup wizard will:
|
|
26
|
+
1. Check your Node.js version (22+ required)
|
|
27
|
+
2. Ask for your elastic.io email and API key
|
|
28
|
+
3. Detect which AI clients are installed on your machine
|
|
29
|
+
4. Resolve the full path to `node`/`npx` (handles NVM, fnm, Homebrew, etc.)
|
|
30
|
+
5. Write the MCP config files with correct paths for each client
|
|
31
|
+
|
|
32
|
+
After setup, **restart your AI client** — the elastic.io tools will appear in the chat.
|
|
33
|
+
|
|
34
|
+
### Supported Clients
|
|
35
|
+
|
|
36
|
+
| Client | macOS | Windows | Linux |
|
|
37
|
+
|---|---|---|---|
|
|
38
|
+
| [Claude Desktop](https://claude.ai/download) | `~/Library/Application Support/Claude/claude_desktop_config.json` | `%APPDATA%\Claude\claude_desktop_config.json` | `~/.config/Claude/claude_desktop_config.json` |
|
|
39
|
+
| [Claude Code](https://claude.ai/code) | `~/.claude.json` | `%USERPROFILE%\.claude.json` | `~/.claude.json` |
|
|
40
|
+
| [ChatGPT / Codex](https://openai.com/chatgpt/desktop/) | `~/.codex/config.toml` | `%USERPROFILE%\.codex\config.toml` | `~/.codex/config.toml` |
|
|
41
|
+
| [Cursor](https://cursor.com/) | `~/.cursor/mcp.json` | `%USERPROFILE%\.cursor\mcp.json` | `~/.cursor/mcp.json` |
|
|
42
|
+
| [Windsurf](https://codeium.com/windsurf) | `~/.codeium/windsurf/mcp_config.json` | `%USERPROFILE%\.codeium\windsurf\mcp_config.json` | `~/.codeium/windsurf/mcp_config.json` |
|
|
43
|
+
| [VS Code (Copilot)](https://code.visualstudio.com/) | `~/Library/Application Support/Code/User/mcp.json` | `%APPDATA%\Code\User\mcp.json` | `~/.config/Code/User/mcp.json` |
|
|
44
|
+
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `~/.gemini/settings.json` | `%USERPROFILE%\.gemini\settings.json` | `~/.gemini/settings.json` |
|
|
45
|
+
| [Zed](https://zed.dev/) | `~/.config/zed/settings.json` | — | `~/.config/zed/settings.json` |
|
|
46
|
+
| [Trae (ByteDance)](https://www.trae.ai/) | `~/.trae/mcp.json` | `%USERPROFILE%\.trae\mcp.json` | `~/.trae/mcp.json` |
|
|
47
|
+
| [Cline (VS Code)](https://github.com/cline/cline) | VS Code globalStorage | VS Code globalStorage | VS Code globalStorage |
|
|
48
|
+
| [Qwen Code](https://qwenlm.github.io/) | `~/.qwen/settings.json` | `%USERPROFILE%\.qwen\settings.json` | `~/.qwen/settings.json` |
|
|
49
|
+
| [Kimi Code](https://kimi.moonshot.cn/) | `~/.kimi-code/mcp.json` | `%USERPROFILE%\.kimi-code\mcp.json` | `~/.kimi-code/mcp.json` |
|
|
50
|
+
| [DeepSeek](https://www.deepseek.com/) | `~/.deepseek/mcp.json` | `%USERPROFILE%\.deepseek\mcp.json` | `~/.deepseek/mcp.json` |
|
|
51
|
+
|
|
52
|
+
### Manual Configuration
|
|
53
|
+
|
|
54
|
+
If you prefer to configure manually, add the following to your client's MCP config file:
|
|
73
55
|
|
|
74
|
-
| Variable | Required | Description |
|
|
75
|
-
|---|---|---|
|
|
76
|
-
| `ELASTICIO_API_EMAIL` | Yes | Your elastic.io account email |
|
|
77
|
-
| `ELASTICIO_API_KEY` | Yes | Your elastic.io API key |
|
|
78
|
-
| `ELASTICIO_API_BASE_URL` | No | API base URL (default: `https://api.elastic.io/v2`) |
|
|
79
|
-
|
|
80
|
-
Semantic search (documentation, flow samples) is handled server-side through the elastic.io API — no additional configuration needed.
|
|
81
|
-
|
|
82
|
-
#### Client Configuration
|
|
83
|
-
Configure your client configuration file (e.g., `mcp_config.json`) to invoke this command, providing the required environment variables:
|
|
84
|
-
|
|
85
|
-
**Using npx (recommended):**
|
|
86
56
|
```json
|
|
87
57
|
{
|
|
88
58
|
"mcpServers": {
|
|
89
|
-
"elasticio
|
|
59
|
+
"elasticio": {
|
|
90
60
|
"command": "npx",
|
|
91
61
|
"args": ["-y", "@elastic.io/mcp"],
|
|
92
62
|
"env": {
|
|
93
63
|
"ELASTICIO_API_EMAIL": "your_email@example.com",
|
|
94
|
-
"ELASTICIO_API_KEY": "your_api_key"
|
|
64
|
+
"ELASTICIO_API_KEY": "your_api_key",
|
|
65
|
+
"ELASTICIO_API_BASE_URL": "https://api.elastic.io/v2"
|
|
95
66
|
}
|
|
96
67
|
}
|
|
97
68
|
}
|
|
98
69
|
}
|
|
99
70
|
```
|
|
100
71
|
|
|
101
|
-
**
|
|
72
|
+
> **Note:** ChatGPT / Codex uses TOML format — use `npx -y @elastic.io/mcp setup` for automatic configuration.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## How It Works
|
|
77
|
+
|
|
78
|
+
The AI client starts the MCP server as a subprocess and communicates over stdin/stdout:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
AI Client (Claude/ChatGPT/Cursor/...) <--> [stdin / stdout] <--> MCP Server <--> elastic.io API
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The server exposes 36 tools that let the AI: list components, discover credentials, create and manage flows, build JSONata mappings, debug flow steps, manage data samples, analyze logs, and more.
|
|
85
|
+
|
|
86
|
+
### Local Semantic Search
|
|
87
|
+
|
|
88
|
+
By default, documentation and flow sample searches are routed through the elastic.io platform API. To use a local Qdrant vector store and Gemini embeddings instead, pass these environment variables to the server:
|
|
89
|
+
|
|
102
90
|
```json
|
|
103
91
|
{
|
|
104
92
|
"mcpServers": {
|
|
105
|
-
"elasticio
|
|
106
|
-
"command": "
|
|
107
|
-
"args": ["/
|
|
108
|
-
"cwd": "/path/to/project",
|
|
93
|
+
"elasticio": {
|
|
94
|
+
"command": "npx",
|
|
95
|
+
"args": ["-y", "@elastic.io/mcp"],
|
|
109
96
|
"env": {
|
|
110
97
|
"ELASTICIO_API_EMAIL": "your_email@example.com",
|
|
111
|
-
"ELASTICIO_API_KEY": "your_api_key"
|
|
98
|
+
"ELASTICIO_API_KEY": "your_api_key",
|
|
99
|
+
"ELASTICIO_MCP_LOCAL_SEARCH": "true",
|
|
100
|
+
"EMBEDDING_PROVIDER_API_KEY": "your_gemini_api_key",
|
|
101
|
+
"VECTOR_STORE_URL": "https://your-qdrant-instance.cloud.qdrant.io",
|
|
102
|
+
"VECTOR_STORE_API_KEY": "your_qdrant_api_key"
|
|
112
103
|
}
|
|
113
104
|
}
|
|
114
105
|
}
|
|
115
106
|
}
|
|
116
107
|
```
|
|
117
108
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
* **
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
* **Ingest Flow Templates:** Parses the local JSON templates located in `resources/flow-examples/` and uploads them to the Qdrant `flow_samples` collection:
|
|
131
|
-
```bash
|
|
132
|
-
node dist/scripts/ingest_flow_examples.js
|
|
133
|
-
```
|
|
134
|
-
* **Verify Search:** Runs test search queries against Qdrant to confirm embeddings were correctly indexed:
|
|
135
|
-
```bash
|
|
136
|
-
node dist/scripts/test_search.js --query "your query string" --collection "flow_samples"
|
|
137
|
-
```
|
|
138
|
-
|
|
109
|
+
| Variable | Required | Description |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| `ELASTICIO_MCP_LOCAL_SEARCH` | yes | Enables local vector search (any truthy value) |
|
|
112
|
+
| `EMBEDDING_PROVIDER_API_KEY` | yes | Google Gemini API key for generating embeddings |
|
|
113
|
+
| `VECTOR_STORE_URL` | yes | Qdrant instance URL |
|
|
114
|
+
| `VECTOR_STORE_API_KEY` | no | Qdrant API key (if authentication is enabled) |
|
|
115
|
+
|
|
116
|
+
### Built-in Safeguards
|
|
117
|
+
* **State-Machine Verification** — components and credentials must be discovered in the current session before they can be used, preventing hallucinated IDs.
|
|
118
|
+
* **JSONata Safety Checks** — warns when mappings have common mistakes (quoted expressions, missing `$getPassthrough()` calls).
|
|
119
|
+
* **Token Optimization** — large metadata and enums are dynamically pruned to stay within context limits.
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA+B7C,qBAAa,iBAAkB,SAAQ,KAAK;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,CAAC;gBAET,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM;CAQnF;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAK5B;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA+B7C,qBAAa,iBAAkB,SAAQ,KAAK;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,CAAC;gBAET,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM;CAQnF;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAK5B;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAyF5F"}
|
package/dist/api/client.js
CHANGED
|
@@ -79,7 +79,9 @@ export function createElasticioClient(authHeader, apiBaseUrl) {
|
|
|
79
79
|
const configWithRetry = config;
|
|
80
80
|
configWithRetry.__retryCount = configWithRetry.__retryCount || 0;
|
|
81
81
|
const maxRetries = 3;
|
|
82
|
-
|
|
82
|
+
// A timeout on a write is ambiguous: replaying POST/PATCH can duplicate effects.
|
|
83
|
+
const safeToRetry = ['get', 'head', 'options'].includes(String(config.method || 'get').toLowerCase());
|
|
84
|
+
if (safeToRetry && (isRateLimit || isTransientError || isNetworkOrTimeout) && configWithRetry.__retryCount < maxRetries) {
|
|
83
85
|
configWithRetry.__retryCount += 1;
|
|
84
86
|
const delay = Math.pow(2, configWithRetry.__retryCount) * 1000;
|
|
85
87
|
logger.warn(`[HTTP Retry] ${isNetworkOrTimeout ? 'Network/Timeout Error' : `Status ${status}`} on ${config.method?.toUpperCase()} ${config.url}. Retrying in ${delay / 1000}s (Attempt ${configWithRetry.__retryCount}/${maxRetries})...`);
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
import { type Verification } from '../tools/flow-evidence.js';
|
|
3
|
+
export declare function isNotReady(error: any): boolean;
|
|
4
|
+
/** One strict implementation used both by the credential tool and pre-publish/start checks. */
|
|
5
|
+
export declare function verifyCredentials(client: AxiosInstance, args: any): Promise<Verification>;
|
|
6
|
+
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/api/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE/E,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE9C;AAED,+FAA+F;AAC/F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAoD/F"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { deserializeJsonApi } from './jsonapi.js';
|
|
2
|
+
import { executionResult } from '../tools/flow-evidence.js';
|
|
3
|
+
export function isNotReady(error) {
|
|
4
|
+
return error?.statusCode === 409 || error?.response?.status === 409 || /409|not ready/i.test(error?.message || '');
|
|
5
|
+
}
|
|
6
|
+
/** One strict implementation used both by the credential tool and pre-publish/start checks. */
|
|
7
|
+
export async function verifyCredentials(client, args) {
|
|
8
|
+
const { workspaceId, componentId, versionId = 'latest', credentialId, secretId, fields = {}, logLevel = 'info' } = args;
|
|
9
|
+
if (!workspaceId || !componentId || (!credentialId && !secretId) || (credentialId && secretId)) {
|
|
10
|
+
throw new Error('Provide workspaceId, componentId and exactly one credentialId or secretId.');
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
let verifyFields;
|
|
14
|
+
if (credentialId) {
|
|
15
|
+
const response = await client.get(`/credentials/${credentialId}`);
|
|
16
|
+
const credential = deserializeJsonApi(response.data);
|
|
17
|
+
verifyFields = { ...(credential?.keys || credential?.attributes?.keys || {}), ...fields };
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const response = await client.get(`/workspaces/${workspaceId}/secrets/${secretId}`);
|
|
21
|
+
const secret = deserializeJsonApi(response.data);
|
|
22
|
+
if (secret?.state && secret.state !== 'ready')
|
|
23
|
+
return { ok: false, status: 'FAILED', error: `Secret state is ${secret.state}.` };
|
|
24
|
+
const credentials = secret?.credentials || secret?.attributes?.credentials || {};
|
|
25
|
+
const descResponse = await client.get(`/components/${componentId}/versions/${versionId}/descriptor`);
|
|
26
|
+
const descriptor = deserializeJsonApi(descResponse.data);
|
|
27
|
+
if (!descriptor)
|
|
28
|
+
throw new Error('Credential descriptor is unavailable.');
|
|
29
|
+
const special = Object.entries(descriptor.credentials?.fields || {})
|
|
30
|
+
.find(([, field]) => field?.viewClass === 'HTTPAuthView' || field?.viewClass === 'OAuthFieldView')?.[0];
|
|
31
|
+
if (special) {
|
|
32
|
+
const { fields: extraFields, ...authData } = credentials;
|
|
33
|
+
const { [special]: overrides, ...otherOverrides } = fields;
|
|
34
|
+
verifyFields = { [special]: { ...authData, ...overrides }, ...extraFields, ...otherOverrides };
|
|
35
|
+
}
|
|
36
|
+
else
|
|
37
|
+
verifyFields = { ...credentials, ...fields };
|
|
38
|
+
}
|
|
39
|
+
const response = await client.post(`/components/${componentId}/versions/${versionId}/verify-credential`, {
|
|
40
|
+
data: { type: 'verify-credential', attributes: { fields: verifyFields, log_level: logLevel },
|
|
41
|
+
relationships: { workspace: { data: { id: workspaceId, type: 'workspace' } } } },
|
|
42
|
+
});
|
|
43
|
+
const executionId = response.data?.data?.id;
|
|
44
|
+
if (!executionId)
|
|
45
|
+
return { ok: false, status: 'UNKNOWN', error: 'Verification returned no execution ID.' };
|
|
46
|
+
for (let attempt = 0; attempt < 5; attempt++) {
|
|
47
|
+
if (attempt)
|
|
48
|
+
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
49
|
+
try {
|
|
50
|
+
const response = await client.get(`/exec/result/${executionId}`);
|
|
51
|
+
const parsed = executionResult(response.data);
|
|
52
|
+
if (parsed.status === 'PENDING')
|
|
53
|
+
continue;
|
|
54
|
+
if (parsed.status === 'VERIFIED' && parsed.value?.verified === true) {
|
|
55
|
+
return { ok: true, status: 'VERIFIED', executionId, checkedAt: Date.now() };
|
|
56
|
+
}
|
|
57
|
+
return { ok: false, status: parsed.status === 'UNKNOWN' ? 'UNKNOWN' : 'FAILED', executionId,
|
|
58
|
+
error: parsed.error || String(parsed.value?.reason || parsed.value?.message || 'Verification did not explicitly return verified: true.') };
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (!isNotReady(error))
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { ok: false, status: 'PENDING', executionId, error: 'Verification timed out while still pending; retry verification before publishing.' };
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return { ok: false, status: 'UNKNOWN', error: `Verification could not complete: ${error.message}` };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/api/verification.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,YAAY,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AAoQA,wBAAsB,QAAQ,kBA4D7B"}
|