@talqing/mcp 0.1.0 → 0.3.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.md +36 -17
- package/SKILL.md +40 -16
- package/dist/index.d.ts +1 -1
- package/dist/index.js +26 -22
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/tools.json +488 -4499
package/README.md
CHANGED
|
@@ -9,13 +9,13 @@ the CoPilot can build, your coding agent can build.
|
|
|
9
9
|
|
|
10
10
|
## What you get
|
|
11
11
|
|
|
12
|
-
One operation for everything
|
|
13
|
-
their operation trees, integrations and triggers, knowledge
|
|
14
|
-
ready, carrier accounts and phone numbers, secrets, provider
|
|
15
|
-
|
|
16
|
-
transcripts, cost and latency. Each one
|
|
17
|
-
arguments mirror that HTTP call: path and
|
|
18
|
-
request body under `body`.
|
|
12
|
+
One operation for everything a workspace is built out of. Agents and agent
|
|
13
|
+
tasks, tools and their operation trees, integrations and triggers, knowledge
|
|
14
|
+
bases from crawl to ready, carrier accounts and phone numbers, secrets, provider
|
|
15
|
+
keys and webhooks; then placing outbound calls, running call and email batches,
|
|
16
|
+
talking to text agents, and reading back transcripts, cost and latency. Each one
|
|
17
|
+
maps to a Talqing API endpoint, and its arguments mirror that HTTP call: path and
|
|
18
|
+
query parameters at the top level, request body under `body`.
|
|
19
19
|
|
|
20
20
|
A few request types are large enough that carrying them in every tool that
|
|
21
21
|
accepts one would cost more context than the whole rest of the server — an
|
|
@@ -34,11 +34,19 @@ ready-to-paste command for each client — the snippets below are what it shows.
|
|
|
34
34
|
The token authenticates as you, acts with your current role, and reaches only
|
|
35
35
|
your workspace.
|
|
36
36
|
|
|
37
|
+
**`TALQING_BASE_URL` names a region** — `https://api.in.talqing.com`,
|
|
38
|
+
`https://api.us.talqing.com` — and everything this server can reach belongs to
|
|
39
|
+
that one: an agent, its calls, its phone numbers and its credit balance are all
|
|
40
|
+
the region's. One token reaches every region — it names your workspace, not a
|
|
41
|
+
place — so working in another region is the same token and a different base URL.
|
|
42
|
+
The dashboard's snippet always carries the region you are currently looking at;
|
|
43
|
+
switch region there and copy it again.
|
|
44
|
+
|
|
37
45
|
**Claude Code**
|
|
38
46
|
|
|
39
47
|
```bash
|
|
40
48
|
claude mcp add talqing \
|
|
41
|
-
-e TALQING_BASE_URL=https://api.
|
|
49
|
+
-e TALQING_BASE_URL=https://api.in.talqing.com \
|
|
42
50
|
-e TALQING_API_KEY=tq_your_token \
|
|
43
51
|
-- npx -y @talqing/mcp
|
|
44
52
|
```
|
|
@@ -47,7 +55,7 @@ claude mcp add talqing \
|
|
|
47
55
|
|
|
48
56
|
```bash
|
|
49
57
|
codex mcp add talqing \
|
|
50
|
-
--env TALQING_BASE_URL=https://api.
|
|
58
|
+
--env TALQING_BASE_URL=https://api.in.talqing.com \
|
|
51
59
|
--env TALQING_API_KEY=tq_your_token \
|
|
52
60
|
-- npx -y @talqing/mcp
|
|
53
61
|
```
|
|
@@ -59,7 +67,7 @@ codex mcp add talqing \
|
|
|
59
67
|
[mcp_servers.talqing]
|
|
60
68
|
command = "npx"
|
|
61
69
|
args = ["-y", "@talqing/mcp"]
|
|
62
|
-
env = { TALQING_BASE_URL = "https://api.
|
|
70
|
+
env = { TALQING_BASE_URL = "https://api.in.talqing.com", TALQING_API_KEY = "tq_your_token" }
|
|
63
71
|
```
|
|
64
72
|
|
|
65
73
|
**Any other MCP client** — a stdio server, configured the usual way:
|
|
@@ -71,7 +79,7 @@ env = { TALQING_BASE_URL = "https://api.your-talqing-host.com", TALQING_API_KEY
|
|
|
71
79
|
"command": "npx",
|
|
72
80
|
"args": ["-y", "@talqing/mcp"],
|
|
73
81
|
"env": {
|
|
74
|
-
"TALQING_BASE_URL": "https://api.
|
|
82
|
+
"TALQING_BASE_URL": "https://api.in.talqing.com",
|
|
75
83
|
"TALQING_API_KEY": "tq_your_token"
|
|
76
84
|
}
|
|
77
85
|
}
|
|
@@ -91,9 +99,20 @@ the rest, exactly as they would through the dashboard.
|
|
|
91
99
|
Operations are annotated so clients can tell reads from writes — `readOnlyHint`
|
|
92
100
|
on every GET, `destructiveHint` on every delete.
|
|
93
101
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
102
|
+
Four things are deliberately out of reach:
|
|
103
|
+
|
|
104
|
+
- **Sign-in, organizations, members and roles, and personal access tokens.**
|
|
105
|
+
Those live on a separate control API that this server holds no URL for, so an
|
|
106
|
+
AI builder cannot mint itself a credential, and who is in the workspace stays
|
|
107
|
+
where a human is in the loop.
|
|
108
|
+
- **Buying credits.** Reading the balance would be harmless; starting a payment
|
|
109
|
+
spends the workspace's money, and neither belongs on a coding agent's surface.
|
|
110
|
+
- **Streaming endpoints**, which are not tool-shaped. Every one has a polling
|
|
111
|
+
equivalent here — `list_conversation_items` for a conversation, `get_kb` for a
|
|
112
|
+
knowledge build — so nothing is unreachable.
|
|
113
|
+
- **Deleting a call or its recording.** Every other `delete_*` removes
|
|
114
|
+
configuration you could write again; this one destroys the record of something
|
|
115
|
+
that happened, and can take a contact's memory of past calls with it.
|
|
97
116
|
|
|
98
117
|
Some operations act on the real world. `create_outbound_call` rings a phone and
|
|
99
118
|
costs money, and a message to a connected channel is one somebody receives.
|
|
@@ -116,7 +135,7 @@ cd mcp && npm install && npm run build
|
|
|
116
135
|
"command": "node",
|
|
117
136
|
"args": ["/absolute/path/to/talqing/mcp/dist/index.js"],
|
|
118
137
|
"env": {
|
|
119
|
-
"TALQING_BASE_URL": "https://api.
|
|
138
|
+
"TALQING_BASE_URL": "https://api.in.talqing.com",
|
|
120
139
|
"TALQING_API_KEY": "tq_your_token"
|
|
121
140
|
}
|
|
122
141
|
}
|
|
@@ -135,8 +154,8 @@ cannot drift from the product:
|
|
|
135
154
|
PYTHONPATH=backend python openapi/export.py
|
|
136
155
|
```
|
|
137
156
|
|
|
138
|
-
`tools.json` comes from `backend/api/operations.py`, the same registry
|
|
139
|
-
CoPilot binds its tools from; `SKILL.md` comes from
|
|
157
|
+
`tools.json` comes from `backend/api/dataplane/operations.py`, the same registry
|
|
158
|
+
the CoPilot binds its tools from; `SKILL.md` comes from
|
|
140
159
|
`backend/services/copilot/skill.md`, the same text the CoPilot is prompted with.
|
|
141
160
|
Edit those, re-run the export, and both surfaces move together.
|
|
142
161
|
|
package/SKILL.md
CHANGED
|
@@ -27,6 +27,12 @@ request body under `body`. Every operation acts as the signed-in user, inside
|
|
|
27
27
|
their workspace only, with their role's permissions. Managing who is in the
|
|
28
28
|
workspace is the one thing that stays in the dashboard.
|
|
29
29
|
|
|
30
|
+
**Everything here belongs to one region.** A workspace exists in every region and
|
|
31
|
+
its resources do not: an agent, its calls, its phone numbers and its credit
|
|
32
|
+
balance all live in the region whose API you are pointed at. One token reaches
|
|
33
|
+
every region — it names the workspace, not a place — so working in another one is
|
|
34
|
+
the same token and a different base URL.
|
|
35
|
+
|
|
30
36
|
## What an agent is
|
|
31
37
|
|
|
32
38
|
An agent is a single object, `config`, plus what you attach to it:
|
|
@@ -35,7 +41,8 @@ An agent is a single object, `config`, plus what you attach to it:
|
|
|
35
41
|
- **`channel`** — `voice` (phone/web call), `video` (a voice agent wearing an
|
|
36
42
|
Anam avatar) or `text` (chat). The channel decides which model slots exist.
|
|
37
43
|
- **`prompt`** — the system prompt. This is where the agent's behaviour lives.
|
|
38
|
-
- **`greeting`** — the line spoken on connect
|
|
44
|
+
- **`greeting`** — the line spoken on connect, and on the way in from a
|
|
45
|
+
handoff. Voice and video only.
|
|
39
46
|
|
|
40
47
|
Both are personalized per session: `{{userdata.field}}` is substituted from
|
|
41
48
|
the session's userdata when the agent starts, so *"You are speaking with
|
|
@@ -152,8 +159,8 @@ An agent is a single object, `config`, plus what you attach to it:
|
|
|
152
159
|
`{"integration_id": "..."}` naming an active, MCP-capable integration. Which
|
|
153
160
|
of a server's tools may be called is the integration's own `allowed_tools`,
|
|
154
161
|
not this list. As with `tools`, an entry may instead carry `{"mcp": {name,
|
|
155
|
-
url, headers, allowed_tools}}`, which is created as a
|
|
156
|
-
and replaced by its id.
|
|
162
|
+
url, headers, allowed_tools, tools_namespace}}`, which is created as a
|
|
163
|
+
`custom_mcp` integration and replaced by its id.
|
|
157
164
|
- **`handoffs`** — where this agent may pass the conversation next, each
|
|
158
165
|
`{"name": "Billing", "agent_id": "...", "description": "...", "context":
|
|
159
166
|
"transcript" | "summary" | "none", "recent_turns": 2, "summary_prompt": "...",
|
|
@@ -617,7 +624,11 @@ instead.
|
|
|
617
624
|
`export default async function handler(input)`, where `input` is
|
|
618
625
|
`{args, tooldata, userdata, system_vars, vars, secrets}`, and return an object.
|
|
619
626
|
The sandbox has `console` and a guarded `fetch` for public http(s) URLs — no
|
|
620
|
-
Node APIs, no imports.
|
|
627
|
+
Node APIs, no imports. **That `fetch` is not how you call an API.** A plain
|
|
628
|
+
request/response call is an `http` operation: it costs no isolate, and the
|
|
629
|
+
person who owns this tool can read and edit it in the editor rather than
|
|
630
|
+
reading your TypeScript. Reach for `fetch` only for what `http` cannot say —
|
|
631
|
+
a second call that depends on the first, or a non-JSON response.
|
|
621
632
|
|
|
622
633
|
That input object is the whole interface: a code operation has **no template
|
|
623
634
|
syntax**. Write `input.system_vars.now`, never `{{system_vars.now}}` — braces
|
|
@@ -770,9 +781,10 @@ before hanging up — logging the outcome, posting a lead — goes **before** th
|
|
|
770
781
|
|
|
771
782
|
Each hook points at a **published tool id**, or null.
|
|
772
783
|
|
|
773
|
-
- **`on_enter`** — a session opens.
|
|
774
|
-
|
|
775
|
-
|
|
784
|
+
- **`on_enter`** — a session opens. It finishes *before* the greeting, which
|
|
785
|
+
waits for it and reads whatever it published to userdata; on text, when the
|
|
786
|
+
conversation window opens. A handoff target runs it and then speaks its own
|
|
787
|
+
greeting — or, having none, opens with a generated line instead.
|
|
776
788
|
- **`on_exit`** — the session closes: call end or handoff on voice and video;
|
|
777
789
|
on text, `end_call`, a closed window, or about a minute idle.
|
|
778
790
|
- **`on_user_turn_completed`** — after every user turn, before the LLM replies.
|
|
@@ -915,6 +927,14 @@ every turn, and a voice agent picking from ninety of them is slower and less
|
|
|
915
927
|
accurate than one picking from six. Unlike the attachment, that approval is
|
|
916
928
|
live: narrowing it reaches every already-published agent on its next turn.
|
|
917
929
|
|
|
930
|
+
The model does not see a server's tool names raw. Each is prefixed with the
|
|
931
|
+
integration's `tools_namespace` — `<namespace>_<tool>`, defaulting to the
|
|
932
|
+
provider key for a hosted provider and to nothing for a custom server. Read it
|
|
933
|
+
back off the integration, or read `exposed_name` from
|
|
934
|
+
`list_integration_mcp_tools`, and **write prompts against the exposed name**;
|
|
935
|
+
`allowed_tools` still approves the server's own names. Two attached servers
|
|
936
|
+
sharing a namespace fails publish.
|
|
937
|
+
|
|
918
938
|
**Channel integrations** (Telegram) deploy an agent to a messaging
|
|
919
939
|
channel through *triggers*, not MCP attachment. A trigger binds an inbound event
|
|
920
940
|
to a published text agent and decides what happens with the reply.
|
|
@@ -1018,8 +1038,9 @@ afterwards will not forgive us:
|
|
|
1018
1038
|
- **Every row runs the task as it stands right now.** Editing it while a batch
|
|
1019
1039
|
is drafting changes every row generated after that moment, and there is no way
|
|
1020
1040
|
to get the old wording back.
|
|
1021
|
-
- **
|
|
1022
|
-
|
|
1041
|
+
- **Talqing reports what it sent, not what landed.** Deliveries, bounces and
|
|
1042
|
+
spam complaints live in the Resend dashboard, and watching them there is how a
|
|
1043
|
+
sending domain survives.
|
|
1023
1044
|
|
|
1024
1045
|
### The column space
|
|
1025
1046
|
|
|
@@ -1091,9 +1112,6 @@ or on the first `configuration` failure (a deleted task, a field map an edit
|
|
|
1091
1112
|
broke) or the first account-level send failure (a revoked key, an unverified
|
|
1092
1113
|
domain) — because those will fail identically for every remaining row.
|
|
1093
1114
|
|
|
1094
|
-
`delivery_status` on a row is Resend's verdict, separate from ours: `sent` is
|
|
1095
|
-
what we did, `delivered` / `bounced` / `complained` is what happened next.
|
|
1096
|
-
|
|
1097
1115
|
## Knowledge bases
|
|
1098
1116
|
|
|
1099
1117
|
A knowledge base gives an agent grounded answers over crawled content. Attach
|
|
@@ -1244,11 +1262,17 @@ and the final `userdata` usually name the cause.
|
|
|
1244
1262
|
against rules you cannot check by reading a draft, so **never report a
|
|
1245
1263
|
validation result you did not get back from the operation**, and never answer
|
|
1246
1264
|
a request to validate by reasoning about the config instead of calling it.
|
|
1265
|
+
- **Fetch the shape before you call.** Your tools carry a name and a description
|
|
1266
|
+
but not their arguments: `describe_function('name')` returns the argument
|
|
1267
|
+
schema, and you call it before the first time you use a function. Ask for
|
|
1268
|
+
everything a step needs in one go — these can be called side by side — and
|
|
1269
|
+
once you have a shape it stays good for the rest of the conversation. Two
|
|
1270
|
+
functions carry their own shape because they would otherwise be uncallable:
|
|
1271
|
+
`describe_function` itself, and `describe_schema`.
|
|
1247
1272
|
- **Do not invent fields.** Author tools and configs through the exact schemas
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
reconstruct it from memory.
|
|
1273
|
+
you fetched. A field the schema does not have is rejected, and an argument
|
|
1274
|
+
whose description ends in `describe_schema('X')` carries a placeholder instead
|
|
1275
|
+
of its type — fetch that too, never reconstruct it from memory.
|
|
1252
1276
|
- **Say what the platform does not do.** Decline capabilities that do not exist
|
|
1253
1277
|
yet rather than approximating them.
|
|
1254
1278
|
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Talqing MCP server.
|
|
4
4
|
*
|
|
5
|
-
* Serves the platform's agent-building
|
|
5
|
+
* Serves the platform's agent-building functions to any MCP client and
|
|
6
6
|
* executes each call against the Talqing API with a personal access token. The
|
|
7
7
|
* tool list is `tools.json` and the instructions are `SKILL.md` — both generated
|
|
8
8
|
* from the same source as our own CoPilot's tools and prompt, so an agent
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Talqing MCP server.
|
|
4
4
|
*
|
|
5
|
-
* Serves the platform's agent-building
|
|
5
|
+
* Serves the platform's agent-building functions to any MCP client and
|
|
6
6
|
* executes each call against the Talqing API with a personal access token. The
|
|
7
7
|
* tool list is `tools.json` and the instructions are `SKILL.md` — both generated
|
|
8
8
|
* from the same source as our own CoPilot's tools and prompt, so an agent
|
|
@@ -28,25 +28,29 @@ function required(name, hint) {
|
|
|
28
28
|
throw new Error(`${name} is not set — ${hint}`);
|
|
29
29
|
return value;
|
|
30
30
|
}
|
|
31
|
-
const BASE_URL = required("TALQING_BASE_URL", "set it to your Talqing API URL, e.g. https://api.
|
|
32
|
-
const API_KEY = required("TALQING_API_KEY", "create a personal access token in the dashboard under
|
|
33
|
-
const { tools:
|
|
34
|
-
const byName = new Map(
|
|
31
|
+
const BASE_URL = required("TALQING_BASE_URL", "set it to your region's Talqing API URL, e.g. https://api.in.talqing.com").replace(/\/+$/, "");
|
|
32
|
+
const API_KEY = required("TALQING_API_KEY", "create a personal access token in the dashboard under Organization → API Tokens");
|
|
33
|
+
const { tools: functions } = JSON.parse(readPackageFile("tools.json"));
|
|
34
|
+
const byName = new Map(functions.map((fn) => [fn.name, fn]));
|
|
35
|
+
/* Read, not restated. A client shows this version when it reports the server it
|
|
36
|
+
connected to, and a second copy of the number is one `npm version` away from
|
|
37
|
+
being wrong. */
|
|
38
|
+
const { version: VERSION } = JSON.parse(readPackageFile("package.json"));
|
|
35
39
|
/** The skill, minus its frontmatter — handed to the client as server instructions. */
|
|
36
40
|
function instructions() {
|
|
37
41
|
const markdown = readPackageFile("SKILL.md");
|
|
38
42
|
const end = markdown.indexOf("\n---", 3);
|
|
39
43
|
return (markdown.startsWith("---") && end !== -1 ? markdown.slice(end + 4) : markdown).trim();
|
|
40
44
|
}
|
|
41
|
-
function describe(
|
|
45
|
+
function describe(fn) {
|
|
42
46
|
return {
|
|
43
|
-
name:
|
|
44
|
-
description: `${
|
|
45
|
-
inputSchema:
|
|
47
|
+
name: fn.name,
|
|
48
|
+
description: `${fn.method} ${fn.path}\n\n${fn.description}`,
|
|
49
|
+
inputSchema: fn.parameters,
|
|
46
50
|
annotations: {
|
|
47
|
-
readOnlyHint:
|
|
48
|
-
destructiveHint:
|
|
49
|
-
idempotentHint: ["GET", "PUT", "DELETE"].includes(
|
|
51
|
+
readOnlyHint: fn.read_only,
|
|
52
|
+
destructiveHint: fn.method === "DELETE",
|
|
53
|
+
idempotentHint: ["GET", "PUT", "DELETE"].includes(fn.method),
|
|
50
54
|
openWorldHint: false,
|
|
51
55
|
},
|
|
52
56
|
};
|
|
@@ -56,9 +60,9 @@ function describe(operation) {
|
|
|
56
60
|
* placeholders in the path are path parameters, `body` is the JSON body, and
|
|
57
61
|
* everything else left over is a query parameter.
|
|
58
62
|
*/
|
|
59
|
-
function requestFor(
|
|
63
|
+
function requestFor(fn, args) {
|
|
60
64
|
const remaining = { ...args };
|
|
61
|
-
const path =
|
|
65
|
+
const path = fn.path.replace(/\{([^}]+)\}/g, (_match, name) => {
|
|
62
66
|
const value = remaining[name];
|
|
63
67
|
if (value === undefined || value === null)
|
|
64
68
|
throw new Error(`${name} is required`);
|
|
@@ -76,7 +80,7 @@ function requestFor(operation, args) {
|
|
|
76
80
|
if (body !== undefined)
|
|
77
81
|
headers["content-type"] = "application/json";
|
|
78
82
|
return new Request(url, {
|
|
79
|
-
method:
|
|
83
|
+
method: fn.method,
|
|
80
84
|
headers,
|
|
81
85
|
body: body === undefined ? undefined : JSON.stringify(body),
|
|
82
86
|
});
|
|
@@ -88,12 +92,12 @@ function failure(message, errors = []) {
|
|
|
88
92
|
};
|
|
89
93
|
}
|
|
90
94
|
async function call(name, args) {
|
|
91
|
-
const
|
|
92
|
-
if (!
|
|
93
|
-
return failure(`unknown
|
|
95
|
+
const fn = byName.get(name);
|
|
96
|
+
if (!fn)
|
|
97
|
+
return failure(`unknown function: ${name}`);
|
|
94
98
|
let response;
|
|
95
99
|
try {
|
|
96
|
-
response = await fetch(requestFor(
|
|
100
|
+
response = await fetch(requestFor(fn, args));
|
|
97
101
|
}
|
|
98
102
|
catch (error) {
|
|
99
103
|
// A bad argument (missing path parameter) and an unreachable API both land
|
|
@@ -103,14 +107,14 @@ async function call(name, args) {
|
|
|
103
107
|
const text = await response.text();
|
|
104
108
|
if (!response.ok) {
|
|
105
109
|
// Errors already carry {detail: {message, errors}} — pass them through so
|
|
106
|
-
// one error shape reaches the model whichever
|
|
110
|
+
// one error shape reaches the model whichever function failed.
|
|
107
111
|
return { content: [{ type: "text", text: text || response.statusText }], isError: true };
|
|
108
112
|
}
|
|
109
113
|
return { content: [{ type: "text", text: text || "{}" }] };
|
|
110
114
|
}
|
|
111
|
-
const server = new Server({ name: "talqing", version:
|
|
115
|
+
const server = new Server({ name: "talqing", version: VERSION }, { capabilities: { tools: {} }, instructions: instructions() });
|
|
112
116
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
113
|
-
tools:
|
|
117
|
+
tools: functions.map(describe),
|
|
114
118
|
}));
|
|
115
119
|
server.setRequestHandler(CallToolRequestSchema, async (request) => call(request.params.name, (request.params.arguments ?? {})));
|
|
116
120
|
await server.connect(new StdioServerTransport());
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAGvB,MAAM,oCAAoC,CAAC;AAc5C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAEzE,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,kFAAkF;AAClF,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAY;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,QAAQ,GAAG,QAAQ,CACvB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED