@o-t-p-y/mcp 0.3.3 → 0.4.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/README.fa.md +114 -0
- package/README.md +14 -9
- package/dist/index.d.ts +74 -0
- package/dist/index.js +91 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.fa.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<div dir="rtl">
|
|
2
|
+
|
|
3
|
+
# @o-t-p-y/mcp
|
|
4
|
+
|
|
5
|
+
سرور رسمی Model Context Protocol (MCP) برای [OTPy.ir](https://otpy.ir) — تعامل با حساب OTPy، مشاهده مصرف، ارسال کد آزمایشی و مدیریت کلیدها مستقیماً از داخل دستیارهای هوش مصنوعی.
|
|
6
|
+
|
|
7
|
+
## دو نوع اعتبار
|
|
8
|
+
|
|
9
|
+
این سرور میتواند از دو اعتبار متفاوت استفاده کند که هر کدام کاربرد جدایی دارند:
|
|
10
|
+
|
|
11
|
+
| اعتبار | متغیر محیطی / فلگ | کاربرد |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| **کلید API** (پروژهمحور) | `OTPY_API_KEY` / `--api-key` | احراز هویت API پیامک و مصرف: `get_usage`، `send_test_otp`، `verify_test_otp`. همان کلید `otpy_...` است که برای ارسال OTP واقعی در محصول استفاده میکنید. |
|
|
14
|
+
| **کلید کاربری** (کاربرمحور) | `OTPY_USER_KEY` / `--user-key` | احراز هویت خواندن پروژه و کنترل زندهی اسکوپ ابزارهای صورتحساب/نوشتن. این سکرت جداگانهی `otpy_uk_...` را از صفحهی **Integration** (`/integrate`) در [dash.otpy.ir](https://dash.otpy.ir) بگیرید. |
|
|
15
|
+
|
|
16
|
+
ابزارهای فقط-خواندنیِ APIمحور (`get_usage` و `get_integration_snippet`) فقط کلید API میخواهند. خواندن پروژهها (`list_projects` و `list_otp_messages`) به کلید کاربری فعال نیاز دارد و `list_transactions` علاوه بر آن اسکوپ `billing` میخواهد. هر ابزارِ نیازمند کلید کاربری، بدون آن رد میشود.
|
|
17
|
+
|
|
18
|
+
## نصب / راهاندازی
|
|
19
|
+
|
|
20
|
+
### Cursor
|
|
21
|
+
|
|
22
|
+
به فایل `.cursor/mcp.json` یا Cursor Settings → MCP اضافه کنید:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"mcpServers": {
|
|
27
|
+
"otpy": {
|
|
28
|
+
"command": "npx",
|
|
29
|
+
"args": ["-y", "@o-t-p-y/mcp"],
|
|
30
|
+
"env": {
|
|
31
|
+
"OTPY_API_KEY": "otpy_your_api_key_here",
|
|
32
|
+
"OTPY_USER_KEY": "otpy_uk_your_user_key_here"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Claude Desktop
|
|
40
|
+
|
|
41
|
+
به `claude_desktop_config.json` اضافه کنید:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"mcpServers": {
|
|
46
|
+
"otpy": {
|
|
47
|
+
"command": "npx",
|
|
48
|
+
"args": ["-y", "@o-t-p-y/mcp"],
|
|
49
|
+
"env": {
|
|
50
|
+
"OTPY_API_KEY": "otpy_your_api_key_here",
|
|
51
|
+
"OTPY_USER_KEY": "otpy_uk_your_user_key_here"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
میتوانید اسنیپت آماده MCP را مستقیماً از صفحهی **Integration** (`/integrate`) در [dash.otpy.ir](https://dash.otpy.ir) کپی کنید.
|
|
59
|
+
|
|
60
|
+
## مدل اسکوپ (`user_keys`)
|
|
61
|
+
|
|
62
|
+
هر کلید کاربری دقیقاً دو اسکوپ مستقل دارد — `write` و `billing` — بهعلاوه فلگ `root` که همیشه بهصورت مشتق `write AND billing` محاسبه میشود و هرگز مستقیم تنظیم نمیشود. هیچ مجوز سوم جداگانهای وجود ندارد.
|
|
63
|
+
|
|
64
|
+
| اسکوپ | دسترسی |
|
|
65
|
+
|---|---|
|
|
66
|
+
| `write` | `send_test_otp`، `verify_test_otp`، `create_api_key` |
|
|
67
|
+
| `billing` | `get_balance`، `list_api_keys`، `list_transactions` |
|
|
68
|
+
| `root` (مشتق: هر دو فعال) | همه موارد بالا — فقط مخفف «هر دو را دارد»، نه اسکوپ جدا |
|
|
69
|
+
|
|
70
|
+
کلید کاربری با اسکوپهای موردنیاز را در صفحهی **Integration** (`/integrate`) داشبورد بسازید (ساخت/لیست/لغو و تغییر `write`/`billing` همه آنجاست). سکرت خام `otpy_uk_...` فقط یک بار هنگام ساخت نمایش داده میشود — بلافاصله آن را در `OTPY_USER_KEY` کپی کنید.
|
|
71
|
+
|
|
72
|
+
### تأیید اسکوپ چگونه کار میکند
|
|
73
|
+
|
|
74
|
+
هر فراخوانی ابزارِ محافظتشده با `write` یا `billing` یک **درخواست شبکه واقعی و زنده** به `GET /v1/user-keys/self` روی API میزند و `OTPY_USER_KEY` شما را بهعنوان Bearer ارائه میدهد. API آن را هش کرده و ردیف زنده جدول `user_keys` را بررسی میکند — اسکوپهای این اعتبار هرگز نمیتوانند بهصورت محلی جعل یا دور زده شوند. اگر کلید لغو شود یا اسکوپهایش در داشبورد کم شود، همان فراخوانی بعدی بلافاصله آن را منعکس میکند؛ هیچ کش محلی از اسکوپها وجود ندارد.
|
|
75
|
+
|
|
76
|
+
**هیچ دورزدن سمت کلاینتی وجود ندارد.** نسخههای قبلی این سرور فلگ محلی `OTPY_MCP_WRITE` / `--write` داشتند که فقط در کانفیگ همین پروسه زندگی میکرد — هرگز سمت سرور تأیید نمیشد، پس هر کسی با دسترسی به env کلاینت خودش میتوانست آن را ست کند و گیت ابزارهای نوشتن را دور بزند. آن فلگ کاملاً حذف شده است. اگر هنوز `OTPY_MCP_WRITE`/`--write` در کانفیگ قدیمی دارید، الان کاملاً بیاثر است: `parseConfig` اصلاً آن را نمیخواند، و تنها چیزی که دسترسی write/billing میدهد یک `user_key` واقعی با اسکوپ متناظر است که در هر فراخوانی از طریق شبکه تأیید میشود.
|
|
77
|
+
|
|
78
|
+
اگر اصلاً `OTPY_USER_KEY` تنظیم نشده باشد، همه ابزارهای کاربرمحور رد میشوند (fail closed) — فقط ابزارهای بدون اسکوپ (`get_usage`، `get_integration_snippet`) با کلید API پروژه کار میکنند.
|
|
79
|
+
|
|
80
|
+
### گرنتهای پروژه
|
|
81
|
+
|
|
82
|
+
یک کلید کاربری میتواند به پروژههای مشخص محدود شود (`user_project_grants`، در همان صفحهی Integration). قاعده:
|
|
83
|
+
|
|
84
|
+
- **صفر ردیف گرنت** → نامحدود: کلید روی هر پروژهای که مالکش به آن دسترسی دارد کار میکند.
|
|
85
|
+
- **یک یا چند ردیف گرنت** → محدود به دقیقاً همان شناسههای پروژه.
|
|
86
|
+
|
|
87
|
+
هر فراخوانی ابزاری که آرگومان `project_id` دارد، این را همراه با چک اسکوپ بررسی میکند (همان درخواست شبکه زنده) و اگر کلید به آن پروژه گرنت نشده باشد، فراخوانی رد میشود.
|
|
88
|
+
|
|
89
|
+
## ابزارها
|
|
90
|
+
|
|
91
|
+
| ابزار | اسکوپ لازم | توضیح |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| `get_usage` | ندارد | مصرف امروز یا بازهی شامل ابتدا و انتها تا ۹۰ روز |
|
|
94
|
+
| `list_projects` | کلید کاربری | فهرست پروژههای قابل مشاهده برای کلید کاربری |
|
|
95
|
+
| `list_otp_messages` | کلید کاربری | فهرست پیامکها؛ status داخلی است و `verified_at` تایید را مشخص میکند، نه تحویل اپراتور |
|
|
96
|
+
| `list_transactions` | `billing` | فهرست تراکنشهای کیف پول به تومان |
|
|
97
|
+
| `get_balance` | `billing` | موجودی فعلی کیف پول |
|
|
98
|
+
| `list_api_keys` | `billing` | لیست کلیدهای API پروژه و محدودیتها |
|
|
99
|
+
| `get_integration_snippet` | ندارد | تولید اسنیپت کد آماده (nodejs، python، go، php، curl، csharp) |
|
|
100
|
+
| `send_test_otp` | `write` | ارسال کد OTP آزمایشی به یک شماره |
|
|
101
|
+
| `verify_test_otp` | `write` | تایید کد OTP آزمایشی |
|
|
102
|
+
| `create_api_key` | `write` | ساخت کلید API جدید با محدودیتهای دلخواه |
|
|
103
|
+
|
|
104
|
+
اسنیپتهای ادغام همیشه `OTPY_API_KEY` را از محیط اجرا میخوانند؛ سرور MCP هرگز کلید API خام پیکربندیشده را داخل کد تولیدشده قرار نمیدهد.
|
|
105
|
+
|
|
106
|
+
## مستندات بیشتر
|
|
107
|
+
|
|
108
|
+
ویکی کامل (انگلیسی و فارسی) در [github.com/o-t-p-y/mcp/wiki](https://github.com/o-t-p-y/mcp/wiki) — از جمله راهنمای نصب، مرجع ابزارها و مدل اسکوپ.
|
|
109
|
+
|
|
110
|
+
## مجوز
|
|
111
|
+
|
|
112
|
+
MIT © [OTPy.ir](https://otpy.ir)
|
|
113
|
+
|
|
114
|
+
</div>
|
package/README.md
CHANGED
|
@@ -8,10 +8,10 @@ This server can use up to two different OTPy credentials, each for a different p
|
|
|
8
8
|
|
|
9
9
|
| Credential | Env var / flag | What it's for |
|
|
10
10
|
|---|---|---|
|
|
11
|
-
| **API key** (project-scoped) | `OTPY_API_KEY` / `--api-key` |
|
|
12
|
-
| **User key** (user-scoped) | `OTPY_USER_KEY` / `--user-key` |
|
|
11
|
+
| **API key** (project-scoped) | `OTPY_API_KEY` / `--api-key` | Authenticates the OTP API and usage calls: `get_usage`, `send_test_otp`, `verify_test_otp`. This is the same `otpy_...` key you use to send real OTPs from your product. |
|
|
12
|
+
| **User key** (user-scoped) | `OTPY_USER_KEY` / `--user-key` | Authenticates project reads and provides live scope gating for billing/write tools. This is a separate `otpy_uk_...` secret, obtained from the **Integration** page (`/integrate`) on [dash.otpy.ir](https://dash.otpy.ir). |
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
The API-key-only tools are `get_usage` and `get_integration_snippet`. Project reads (`list_projects`, `list_otp_messages`) use the enabled user key, while `list_transactions` also requires its `billing` scope. Any tool that requires a user key is denied outright if none is configured.
|
|
15
15
|
|
|
16
16
|
## Installation / Setup
|
|
17
17
|
|
|
@@ -53,7 +53,7 @@ Add to `claude_desktop_config.json`:
|
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
You can also copy the pre-configured MCP snippet directly from the **
|
|
56
|
+
You can also copy the pre-configured MCP snippet directly from the **Integration** page (`/integrate`) on [dash.otpy.ir](https://dash.otpy.ir).
|
|
57
57
|
|
|
58
58
|
## Scope model (`user_keys`)
|
|
59
59
|
|
|
@@ -62,10 +62,10 @@ Every user key has exactly two independently toggleable scopes, `write` and `bil
|
|
|
62
62
|
| Scope | Grants |
|
|
63
63
|
|---|---|
|
|
64
64
|
| `write` | `send_test_otp`, `verify_test_otp`, `create_api_key` |
|
|
65
|
-
| `billing` | `get_balance`, `list_api_keys` |
|
|
65
|
+
| `billing` | `get_balance`, `list_api_keys`, `list_transactions` |
|
|
66
66
|
| `root` (derived: `write` and `billing` both true) | Everything above — not a separate scope, just shorthand for "has both". |
|
|
67
67
|
|
|
68
|
-
Create a user key with the scopes you need on the **
|
|
68
|
+
Create a user key with the scopes you need on the **Integration** page (`/integrate`) of [dash.otpy.ir](https://dash.otpy.ir) (create/list/revoke and toggling `write`/`billing` all live there). The raw `otpy_uk_...` secret is shown exactly once at creation time — copy it into `OTPY_USER_KEY` immediately.
|
|
69
69
|
|
|
70
70
|
### How scope verification actually works
|
|
71
71
|
|
|
@@ -73,11 +73,11 @@ Every call to a `write`- or `billing`-gated tool makes a **real, live network re
|
|
|
73
73
|
|
|
74
74
|
**There is no client-side override of any kind.** Earlier versions of this server had a local `OTPY_MCP_WRITE` / `--write` flag that only ever lived in this process's own config — it was never verified against the server, so anyone with shell/env access to their own MCP client could set it and bypass write-tool gating entirely. That flag has been removed outright (not deprecated, not silently downgraded to "restrict only" — deleted). If you still have `OTPY_MCP_WRITE`/`--write` set in an old config, it is now a complete no-op: `parseConfig` doesn't read it at all, and the only thing that can grant write/billing access is a real `user_key` with the matching scope, verified over the network on every call.
|
|
75
75
|
|
|
76
|
-
If no `OTPY_USER_KEY` is configured at all, every
|
|
76
|
+
If no `OTPY_USER_KEY` is configured at all, every user-key tool is denied (fails closed) — only the unscoped read tools (`get_usage`, `get_integration_snippet`) keep working with the project API key.
|
|
77
77
|
|
|
78
78
|
### Project grants
|
|
79
79
|
|
|
80
|
-
A user key can optionally be restricted to specific projects (`user_project_grants`, set on the same
|
|
80
|
+
A user key can optionally be restricted to specific projects (`user_project_grants`, set on the same Integration page). The rule:
|
|
81
81
|
|
|
82
82
|
- **Zero grant rows** → unrestricted: the key can act on any project its owner can reach.
|
|
83
83
|
- **One or more grant rows** → restricted to exactly those project ids.
|
|
@@ -88,7 +88,10 @@ Whenever a tool call includes a `project_id` argument, the server checks this al
|
|
|
88
88
|
|
|
89
89
|
| Tool | Required scope | Description |
|
|
90
90
|
|---|---|---|
|
|
91
|
-
| `get_usage` | none |
|
|
91
|
+
| `get_usage` | none | Today's usage, or usage for an inclusive date range up to 90 days |
|
|
92
|
+
| `list_projects` | user key | List projects visible to the user key |
|
|
93
|
+
| `list_otp_messages` | user key | List messages; status is internal and `verified_at` marks verification, not carrier delivery |
|
|
94
|
+
| `list_transactions` | `billing` | List wallet ledger transactions in tomans |
|
|
92
95
|
| `get_balance` | `billing` | Current wallet balance and pricing details |
|
|
93
96
|
| `list_api_keys` | `billing` | List project API keys and limits |
|
|
94
97
|
| `get_integration_snippet` | none | Generate copyable code snippets |
|
|
@@ -96,6 +99,8 @@ Whenever a tool call includes a `project_id` argument, the server checks this al
|
|
|
96
99
|
| `verify_test_otp` | `write` | Verify a test OTP code |
|
|
97
100
|
| `create_api_key` | `write` | Create a new API key with custom limits |
|
|
98
101
|
|
|
102
|
+
Integration snippets always read `OTPY_API_KEY` from the runtime environment; the MCP server never embeds the configured raw API key in generated code.
|
|
103
|
+
|
|
99
104
|
## License
|
|
100
105
|
|
|
101
106
|
MIT © [OTPy.ir](https://otpy.ir)
|
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,38 @@ export declare const TOOLS: ({
|
|
|
12
12
|
inputSchema: {
|
|
13
13
|
type: string;
|
|
14
14
|
properties: {
|
|
15
|
+
from: {
|
|
16
|
+
type: string;
|
|
17
|
+
format: string;
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
to: {
|
|
21
|
+
type: string;
|
|
22
|
+
format: string;
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
project_id?: undefined;
|
|
26
|
+
limit?: undefined;
|
|
27
|
+
language?: undefined;
|
|
28
|
+
phone?: undefined;
|
|
29
|
+
code?: undefined;
|
|
30
|
+
name?: undefined;
|
|
31
|
+
limit_daily_otp?: undefined;
|
|
32
|
+
limit_weekly_otp?: undefined;
|
|
33
|
+
limit_monthly_otp?: undefined;
|
|
34
|
+
};
|
|
35
|
+
required: never[];
|
|
36
|
+
};
|
|
37
|
+
} | {
|
|
38
|
+
name: string;
|
|
39
|
+
description: string;
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: string;
|
|
42
|
+
properties: {
|
|
43
|
+
from?: undefined;
|
|
44
|
+
to?: undefined;
|
|
15
45
|
project_id?: undefined;
|
|
46
|
+
limit?: undefined;
|
|
16
47
|
language?: undefined;
|
|
17
48
|
phone?: undefined;
|
|
18
49
|
code?: undefined;
|
|
@@ -33,6 +64,37 @@ export declare const TOOLS: ({
|
|
|
33
64
|
type: string;
|
|
34
65
|
description: string;
|
|
35
66
|
};
|
|
67
|
+
limit: {
|
|
68
|
+
type: string;
|
|
69
|
+
minimum: number;
|
|
70
|
+
maximum: number;
|
|
71
|
+
description: string;
|
|
72
|
+
};
|
|
73
|
+
from?: undefined;
|
|
74
|
+
to?: undefined;
|
|
75
|
+
language?: undefined;
|
|
76
|
+
phone?: undefined;
|
|
77
|
+
code?: undefined;
|
|
78
|
+
name?: undefined;
|
|
79
|
+
limit_daily_otp?: undefined;
|
|
80
|
+
limit_weekly_otp?: undefined;
|
|
81
|
+
limit_monthly_otp?: undefined;
|
|
82
|
+
};
|
|
83
|
+
required: string[];
|
|
84
|
+
};
|
|
85
|
+
} | {
|
|
86
|
+
name: string;
|
|
87
|
+
description: string;
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: string;
|
|
90
|
+
properties: {
|
|
91
|
+
project_id: {
|
|
92
|
+
type: string;
|
|
93
|
+
description: string;
|
|
94
|
+
};
|
|
95
|
+
from?: undefined;
|
|
96
|
+
to?: undefined;
|
|
97
|
+
limit?: undefined;
|
|
36
98
|
language?: undefined;
|
|
37
99
|
phone?: undefined;
|
|
38
100
|
code?: undefined;
|
|
@@ -54,7 +116,10 @@ export declare const TOOLS: ({
|
|
|
54
116
|
enum: string[];
|
|
55
117
|
description: string;
|
|
56
118
|
};
|
|
119
|
+
from?: undefined;
|
|
120
|
+
to?: undefined;
|
|
57
121
|
project_id?: undefined;
|
|
122
|
+
limit?: undefined;
|
|
58
123
|
phone?: undefined;
|
|
59
124
|
code?: undefined;
|
|
60
125
|
name?: undefined;
|
|
@@ -74,7 +139,10 @@ export declare const TOOLS: ({
|
|
|
74
139
|
type: string;
|
|
75
140
|
description: string;
|
|
76
141
|
};
|
|
142
|
+
from?: undefined;
|
|
143
|
+
to?: undefined;
|
|
77
144
|
project_id?: undefined;
|
|
145
|
+
limit?: undefined;
|
|
78
146
|
language?: undefined;
|
|
79
147
|
code?: undefined;
|
|
80
148
|
name?: undefined;
|
|
@@ -98,7 +166,10 @@ export declare const TOOLS: ({
|
|
|
98
166
|
type: string;
|
|
99
167
|
description: string;
|
|
100
168
|
};
|
|
169
|
+
from?: undefined;
|
|
170
|
+
to?: undefined;
|
|
101
171
|
project_id?: undefined;
|
|
172
|
+
limit?: undefined;
|
|
102
173
|
language?: undefined;
|
|
103
174
|
name?: undefined;
|
|
104
175
|
limit_daily_otp?: undefined;
|
|
@@ -133,6 +204,9 @@ export declare const TOOLS: ({
|
|
|
133
204
|
type: string;
|
|
134
205
|
description: string;
|
|
135
206
|
};
|
|
207
|
+
from?: undefined;
|
|
208
|
+
to?: undefined;
|
|
209
|
+
limit?: undefined;
|
|
136
210
|
language?: undefined;
|
|
137
211
|
phone?: undefined;
|
|
138
212
|
code?: undefined;
|
package/dist/index.js
CHANGED
|
@@ -24,13 +24,45 @@ export function parseConfig(args = process.argv.slice(2), env = process.env) {
|
|
|
24
24
|
export const TOOLS = [
|
|
25
25
|
{
|
|
26
26
|
name: "get_usage",
|
|
27
|
-
description: "Get
|
|
27
|
+
description: "Get OTP usage statistics. Without dates, values cover today. With both from and to (required together), free_used_today and paid_today are totals for the inclusive range up to 90 days, while free_quota_today and daily_limit remain the current plan limits.",
|
|
28
28
|
inputSchema: {
|
|
29
29
|
type: "object",
|
|
30
|
-
properties: {
|
|
30
|
+
properties: {
|
|
31
|
+
from: { type: "string", format: "date", description: "Inclusive start date (YYYY-MM-DD); required together with to." },
|
|
32
|
+
to: { type: "string", format: "date", description: "Inclusive end date (YYYY-MM-DD); required together with from." },
|
|
33
|
+
},
|
|
31
34
|
required: [],
|
|
32
35
|
},
|
|
33
36
|
},
|
|
37
|
+
{
|
|
38
|
+
name: "list_projects",
|
|
39
|
+
description: "List the projects visible to the configured OTPY_USER_KEY. This is a read-only user-key operation.",
|
|
40
|
+
inputSchema: { type: "object", properties: {}, required: [] },
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "list_otp_messages",
|
|
44
|
+
description: "List recent OTP messages for a project. Requires an enabled OTPY_USER_KEY, but no write or billing scope. Status is internal processing state and does not provide carrier delivery receipts; verified_at marks user verification.",
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: "object",
|
|
47
|
+
properties: {
|
|
48
|
+
project_id: { type: "string", description: "Project ID." },
|
|
49
|
+
limit: { type: "integer", minimum: 1, maximum: 100, description: "Number of messages to return (default 50, maximum 100)." },
|
|
50
|
+
},
|
|
51
|
+
required: ["project_id"],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: "list_transactions",
|
|
56
|
+
description: "List recent wallet ledger transactions for a project. Requires an enabled OTPY_USER_KEY with the billing scope. Amounts are in tomans.",
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
project_id: { type: "string", description: "Project ID." },
|
|
61
|
+
limit: { type: "integer", minimum: 1, maximum: 100, description: "Number of transactions to return (default 50, maximum 100)." },
|
|
62
|
+
},
|
|
63
|
+
required: ["project_id"],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
34
66
|
{
|
|
35
67
|
name: "get_balance",
|
|
36
68
|
description: "Get the current wallet balance for a project. Requires a user_key with the 'billing' scope (see README).",
|
|
@@ -112,7 +144,8 @@ const WRITE_TOOLS = ["send_test_otp", "verify_test_otp", "create_api_key"];
|
|
|
112
144
|
// Tools requiring the `billing` scope on the presented user_key.
|
|
113
145
|
// Mapping per the plan: billing -> get_balance/list_api_keys/topup endpoints.
|
|
114
146
|
// `root` is never a separate gate -- it is just "has both write AND billing".
|
|
115
|
-
const BILLING_TOOLS = ["get_balance", "list_api_keys"];
|
|
147
|
+
const BILLING_TOOLS = ["get_balance", "list_api_keys", "list_transactions"];
|
|
148
|
+
const USER_KEY_TOOLS = ["list_projects", "list_otp_messages", "list_transactions"];
|
|
116
149
|
/**
|
|
117
150
|
* Real, server-verified scope check -- a live network call to
|
|
118
151
|
* GET /v1/user-keys/self (packages/db/migrations/0018_user_key_authenticate.sql
|
|
@@ -170,23 +203,24 @@ function scopeDeniedResult(text) {
|
|
|
170
203
|
export async function handleToolCall(name, args, config, fetchFn = globalThis.fetch) {
|
|
171
204
|
const needsWrite = WRITE_TOOLS.includes(name);
|
|
172
205
|
const needsBilling = BILLING_TOOLS.includes(name);
|
|
173
|
-
|
|
206
|
+
const needsUserKey = USER_KEY_TOOLS.includes(name);
|
|
207
|
+
if (needsWrite || needsBilling || needsUserKey) {
|
|
174
208
|
const projectId = typeof args.project_id === "string" ? args.project_id : undefined;
|
|
175
209
|
const verification = await verifyUserKeyScopes(config, fetchFn, projectId);
|
|
176
210
|
if (!verification.ok) {
|
|
177
|
-
return scopeDeniedResult(`❌ Could not verify this MCP connection's user_key scopes: ${verification.reason}\nConfigure a valid user_key (OTPY_USER_KEY / --user-key), obtained from the "
|
|
211
|
+
return scopeDeniedResult(`❌ Could not verify this MCP connection's user_key scopes: ${verification.reason}\nConfigure a valid user_key (OTPY_USER_KEY / --user-key), obtained from the "Integration" page at https://dash.otpy.ir/integrate.`);
|
|
178
212
|
}
|
|
179
213
|
if (!verification.scopes.enabled) {
|
|
180
|
-
return scopeDeniedResult(`❌ No valid user_key is configured for this MCP connection.\nThis tool requires a user_key with the required scope. Create one on the "
|
|
214
|
+
return scopeDeniedResult(`❌ No valid user_key is configured for this MCP connection.\nThis tool requires a user_key with the required scope. Create one on the "Integration" page at https://dash.otpy.ir/integrate and set OTPY_USER_KEY (or --user-key).`);
|
|
181
215
|
}
|
|
182
216
|
if (needsWrite && !verification.scopes.write) {
|
|
183
|
-
return scopeDeniedResult(`❌ This MCP connection's user_key does not have the 'write' scope.\nWrite actions (sending test OTPs, creating/modifying keys) require a user_key with write enabled. Configure this on the "
|
|
217
|
+
return scopeDeniedResult(`❌ This MCP connection's user_key does not have the 'write' scope.\nWrite actions (sending test OTPs, creating/modifying keys) require a user_key with write enabled. Configure this on the "Integration" page at https://dash.otpy.ir/integrate.`);
|
|
184
218
|
}
|
|
185
219
|
if (needsBilling && !verification.scopes.billing) {
|
|
186
|
-
return scopeDeniedResult(`❌ This MCP connection's user_key does not have the 'billing' scope.\nBilling-related reads (balance, API key listing) require a user_key with billing enabled. Configure this on the "
|
|
220
|
+
return scopeDeniedResult(`❌ This MCP connection's user_key does not have the 'billing' scope.\nBilling-related reads (balance, API key listing) require a user_key with billing enabled. Configure this on the "Integration" page at https://dash.otpy.ir/integrate.`);
|
|
187
221
|
}
|
|
188
222
|
if (projectId && verification.projectAllowed === false) {
|
|
189
|
-
return scopeDeniedResult(`❌ This MCP connection's user_key is not granted access to project ${projectId}.\nEither omit project_id, or grant this user_key access to that project on the "
|
|
223
|
+
return scopeDeniedResult(`❌ This MCP connection's user_key is not granted access to project ${projectId}.\nEither omit project_id, or grant this user_key access to that project on the "Integration" page at https://dash.otpy.ir/integrate.`);
|
|
190
224
|
}
|
|
191
225
|
}
|
|
192
226
|
if (name === "get_usage") {
|
|
@@ -194,11 +228,51 @@ export async function handleToolCall(name, args, config, fetchFn = globalThis.fe
|
|
|
194
228
|
return { isError: true, content: [{ type: "text", text: "Error: OTPY_API_KEY is not configured." }] };
|
|
195
229
|
}
|
|
196
230
|
try {
|
|
197
|
-
const
|
|
231
|
+
const url = new URL(`${config.baseUrl}/v1/usage`);
|
|
232
|
+
if (typeof args.from === "string")
|
|
233
|
+
url.searchParams.set("from", args.from);
|
|
234
|
+
if (typeof args.to === "string")
|
|
235
|
+
url.searchParams.set("to", args.to);
|
|
236
|
+
const res = await fetchFn(url.toString(), {
|
|
198
237
|
headers: { authorization: `Bearer ${config.apiKey}` },
|
|
199
238
|
});
|
|
200
239
|
const data = await res.json();
|
|
201
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
240
|
+
return { isError: !res.ok, content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
return { isError: true, content: [{ type: "text", text: `Network error: ${String(err)}` }] };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (name === "list_projects") {
|
|
247
|
+
try {
|
|
248
|
+
const res = await fetchFn(`${config.baseUrl}/v1/mcp-scope/projects`, {
|
|
249
|
+
headers: { authorization: `Bearer ${config.userKey}` },
|
|
250
|
+
});
|
|
251
|
+
const data = await res.json();
|
|
252
|
+
return { isError: !res.ok, content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
return { isError: true, content: [{ type: "text", text: `Network error: ${String(err)}` }] };
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (name === "list_otp_messages" || name === "list_transactions") {
|
|
259
|
+
const projectId = typeof args.project_id === "string" && args.project_id ? args.project_id : null;
|
|
260
|
+
if (!projectId) {
|
|
261
|
+
return { isError: true, content: [{ type: "text", text: "Error: project_id is required." }] };
|
|
262
|
+
}
|
|
263
|
+
const limit = typeof args.limit === "number" ? args.limit : 50;
|
|
264
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > 100) {
|
|
265
|
+
return { isError: true, content: [{ type: "text", text: "Error: limit must be an integer between 1 and 100." }] };
|
|
266
|
+
}
|
|
267
|
+
const endpoint = name === "list_otp_messages" ? "otp-messages" : "ledger";
|
|
268
|
+
const url = new URL(`${config.baseUrl}/v1/mcp-scope/projects/${encodeURIComponent(projectId)}/${endpoint}`);
|
|
269
|
+
url.searchParams.set("limit", String(limit));
|
|
270
|
+
try {
|
|
271
|
+
const res = await fetchFn(url.toString(), {
|
|
272
|
+
headers: { authorization: `Bearer ${config.userKey}` },
|
|
273
|
+
});
|
|
274
|
+
const data = await res.json();
|
|
275
|
+
return { isError: !res.ok, content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
202
276
|
}
|
|
203
277
|
catch (err) {
|
|
204
278
|
return { isError: true, content: [{ type: "text", text: `Network error: ${String(err)}` }] };
|
|
@@ -224,25 +298,24 @@ export async function handleToolCall(name, args, config, fetchFn = globalThis.fe
|
|
|
224
298
|
}
|
|
225
299
|
if (name === "get_integration_snippet") {
|
|
226
300
|
const lang = String(args.language || "nodejs");
|
|
227
|
-
const key = config.apiKey || "otpy_your_api_key";
|
|
228
301
|
let snippet = "";
|
|
229
302
|
if (lang === "python") {
|
|
230
|
-
snippet = `import requests\nres = requests.post("https://api.otpy.ir/v1/otp/send", json={"phone": "09123456789"}, headers={"Authorization": "Bearer
|
|
303
|
+
snippet = `import os\nimport requests\n\nres = requests.post("https://api.otpy.ir/v1/otp/send", json={"phone": "09123456789"}, headers={"Authorization": f"Bearer {os.environ['OTPY_API_KEY']}"})\nprint(res.json())`;
|
|
231
304
|
}
|
|
232
305
|
else if (lang === "curl") {
|
|
233
|
-
snippet = `curl -X POST https://api.otpy.ir/v1/otp/send -H "Authorization: Bearer $
|
|
306
|
+
snippet = `curl -X POST https://api.otpy.ir/v1/otp/send -H "Authorization: Bearer $OTPY_API_KEY" -H "Content-Type: application/json" -d '{"phone": "09123456789"}'`;
|
|
234
307
|
}
|
|
235
308
|
else if (lang === "go") {
|
|
236
|
-
snippet = `package main\n\nimport (\n\t"bytes"\n\t"encoding/json"\n\t"fmt"\n\t"net/http"\n)\n\nfunc main() {\n\tpayload, _ := json.Marshal(map[string]string{"phone": "09123456789"})\n\treq, _ := http.NewRequest("POST", "https://api.otpy.ir/v1/otp/send", bytes.NewBuffer(payload))\n\treq.Header.Set("Authorization", "Bearer
|
|
309
|
+
snippet = `package main\n\nimport (\n\t"bytes"\n\t"encoding/json"\n\t"fmt"\n\t"net/http"\n\t"os"\n)\n\nfunc main() {\n\tpayload, _ := json.Marshal(map[string]string{"phone": "09123456789"})\n\treq, _ := http.NewRequest("POST", "https://api.otpy.ir/v1/otp/send", bytes.NewBuffer(payload))\n\treq.Header.Set("Authorization", "Bearer "+os.Getenv("OTPY_API_KEY"))\n\treq.Header.Set("Content-Type", "application/json")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n\tvar result map[string]any\n\tjson.NewDecoder(resp.Body).Decode(&result)\n\tfmt.Println(result)\n}`;
|
|
237
310
|
}
|
|
238
311
|
else if (lang === "php") {
|
|
239
|
-
snippet = `<?php\nuse Illuminate\\Support\\Facades\\Http;\n\n$response = Http::withToken('
|
|
312
|
+
snippet = `<?php\nuse Illuminate\\Support\\Facades\\Http;\n\n$response = Http::withToken(env('OTPY_API_KEY', ''))\n ->acceptJson()\n ->post('https://api.otpy.ir/v1/otp/send', [\n 'phone' => '09123456789',\n ]);\n\nreturn $response->json();`;
|
|
240
313
|
}
|
|
241
314
|
else if (lang === "csharp") {
|
|
242
|
-
snippet = `using System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\nusing var client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue("Bearer", "
|
|
315
|
+
snippet = `using System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\nusing var client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("OTPY_API_KEY"));\n\nvar content = new StringContent(\n "{\\"phone\\":\\"09123456789\\"}",\n Encoding.UTF8,\n "application/json");\n\nvar response = await client.PostAsync("https://api.otpy.ir/v1/otp/send", content);\nvar body = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(body);`;
|
|
243
316
|
}
|
|
244
317
|
else {
|
|
245
|
-
snippet = `import { OtpyClient } from "@o-t-p-y/sdk";\nconst otpy = new OtpyClient({ apiKey:
|
|
318
|
+
snippet = `import { OtpyClient } from "@o-t-p-y/sdk";\nconst otpy = new OtpyClient({ apiKey: process.env.OTPY_API_KEY! });\nawait otpy.sendOtp("09123456789");`;
|
|
246
319
|
}
|
|
247
320
|
return { content: [{ type: "text", text: snippet }] };
|
|
248
321
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,+EAA+E;AAC/E,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAuBjH,MAAM,UAAU,WAAW,CACzB,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACtC,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,MAAM,GACV,CAAC,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,YAAY;QAChB,EAAE,CAAC;IAEL,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,OAAO,GACX,CAAC,aAAa,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,aAAa;QACjB,EAAE,CAAC;IAEL,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,OAAO,GACX,CAAC,aAAa,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,aAAa;QACjB,qBAAqB,CAAC;IAExB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,0GAA0G;QAC5G,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;aAC3D;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,oIAAoI;QACtI,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;aAC3D;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,4GAA4G;QACzH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;oBACzD,WAAW,EAAE,8BAA8B;iBAC5C;aACF;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;aACtF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,yIAAyI;QAC3I,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;aAC3D;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SAC5B;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,8JAA8J;QAChK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;gBAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;gBAClD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBAC7E,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBAC/E,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;SACjC;KACF;CACF,CAAC;AAEF,+DAA+D;AAC/D,MAAM,WAAW,GAAG,CAAC,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAC3E,iEAAiE;AACjE,8EAA8E;AAC9E,8EAA8E;AAC9E,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAavD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAuB,EACvB,UAAwB,UAAU,CAAC,KAAK,EACxC,SAAkB;IAElB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;YACrE,cAAc,EAAE,IAAI;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;QAC3D,IAAI,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE7D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACxC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,OAAO,EAAE,EAAE;SACvD,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sEAAsE,EAAE,CAAC;QACvG,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iDAAiD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAC/F,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAM7B,CAAC;QAEF,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC;QAC7E,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B;YACD,cAAc,EAAE,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;SACxF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kDAAkD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IAChG,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAA6B,EAC7B,MAAuB,EACvB,UAAwB,UAAU,CAAC,KAAK;IAExC,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAE3E,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,iBAAiB,CACtB,6DAA6D,YAAY,CAAC,MAAM,uHAAuH,CACxM,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,iBAAiB,CACtB,qNAAqN,CACtN,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7C,OAAO,iBAAiB,CACtB,qOAAqO,CACtO,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO,iBAAiB,CACtB,+NAA+N,CAChO,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,IAAI,YAAY,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;YACvD,OAAO,iBAAiB,CACtB,qEAAqE,SAAS,0HAA0H,CACzM,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC,EAAE,CAAC;QACxG,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,WAAW,EAAE;gBACtD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QAClG,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;QAChG,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;YAC9D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBACxC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,OAAO,EAAE,EAAE;aACvD,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,mBAAmB,CAAC;QACjD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,GAAG,4IAA4I,GAAG,wBAAwB,CAAC;QACpL,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,GAAG,0EAA0E,GAAG,qEAAqE,CAAC;QAC/J,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,2TAA2T,GAAG,6QAA6Q,CAAC;QACxlB,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,GAAG,kFAAkF,GAAG,kJAAkJ,CAAC;QACpP,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,kNAAkN,GAAG,uSAAuS,CAAC;QACzgB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,sFAAsF,GAAG,2CAA2C,CAAC;QACjJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,CAAC,EAAE,CAAC;QAC7G,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,cAAc,EAAE;gBACzD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;oBACxC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;aAChC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,gBAAgB,EAAE;gBAC3D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;oBACxC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACtC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QAClG,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;QAChG,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,0BAA0B,SAAS,WAAW,EAAE;gBACzF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,OAAO,EAAE,EAAE;aACvD,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QAClG,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;QAChG,CAAC;QACD,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,CAAU,EAAE,CAAC;YACxF,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,0BAA0B,SAAS,WAAW,EAAE;gBACzF,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,CAAC,OAAO,EAAE;oBACzC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAA0B,WAAW,EAAE,EACvC,QAA+B,OAAO,CAAC,KAAK,EAC5C,SAAgC,OAAO,CAAC,MAAM;IAE9C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,OAAoF,CAAC;QACzF,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE;aAChD,CAAC,GAAG,IAAI,CACV,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QAE5B,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,MAAM,EAAE;oBACN,eAAe,EAAE,YAAY;oBAC7B,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC3B,UAAU,EAAE;wBACV,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,cAAc;qBACxB;iBACF;aACF,CAAC,GAAG,IAAI,CACV,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,2BAA2B,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;aACzB,CAAC,GAAG,IAAI,CACV,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAE,OAAO,CAAC,MAA4B,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC3E,MAAM,QAAQ,GAAG,CAAE,OAAO,CAAC,MAAkD,EAAE,SAAS;gBACtF,EAAE,CAA4B,CAAC;YAEjC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,MAAM,EAAE,GAAG;aACZ,CAAC,GAAG,IAAI,CACV,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,OAAO,CAAC,MAAM,EAAE,EAAE;SACxE,CAAC,GAAG,IAAI,CACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzE,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,cAAc,EAAE,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|