plugin-nilyo 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/README.md ADDED
@@ -0,0 +1,79 @@
1
+ # plugin-nilyo
2
+
3
+ Give an ElizaOS agent access to the user's own LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts through [Nilyo](https://nilyo.com) — a remote MCP that bridges those accounts through [Unipile](https://www.unipile.com)'s connection layer. The agent never receives provider credentials; it calls structured Nilyo tools and gets back structured results.
4
+
5
+ ## Prerequisites
6
+
7
+ 1. Create a personal Nilyo token from https://nilyo.com/account -> **Agent access**.
8
+ 2. Connect the LinkedIn/WhatsApp/Instagram/Telegram/Email/Calendar accounts you want the agent to use, from the same Nilyo account.
9
+
10
+ ## Install
11
+
12
+ ```bash
13
+ elizaos plugins add plugin-nilyo
14
+ ```
15
+
16
+ Or add it to your character/agent config directly:
17
+
18
+ ```json
19
+ {
20
+ "plugins": ["plugin-nilyo"],
21
+ "settings": {
22
+ "secrets": {
23
+ "NILYO_API_TOKEN": "your Nilyo personal token"
24
+ }
25
+ }
26
+ }
27
+ ```
28
+
29
+ | Variable | Required | Description |
30
+ | ----------------- | -------- | ----------------------------------------------------------------------------- |
31
+ | `NILYO_API_TOKEN` | Yes | Personal token from https://nilyo.com/account -> Agent access. |
32
+ | `NILYO_BASE_URL` | No | Defaults to `https://nilyo.com`. Only change for a Nilyo staging environment. |
33
+
34
+ Every action `validate()`s against `NILYO_API_TOKEN` being set, so the agent simply won't offer Nilyo actions until it is configured.
35
+
36
+ ## Actions
37
+
38
+ | Action | What it does |
39
+ | -------------------------------- | -------------------------------------------------------------------------------------------------- |
40
+ | `NILYO_LIST_ACCOUNTS` | Lists connected accounts (provider, display name, status). |
41
+ | `NILYO_LINKEDIN_GET_PROFILE` | Resolves a LinkedIn profile from a URL/identifier to the stable provider ID other actions need. |
42
+ | `NILYO_LINKEDIN_SEARCH_PEOPLE` | Searches LinkedIn people by keywords. |
43
+ | `NILYO_LINKEDIN_SEND_INVITATION` | Sends a LinkedIn connection invitation to an already-resolved provider ID. |
44
+ | `NILYO_MESSAGING_SEND_TO_CONTACT`| Sends a WhatsApp/Instagram/Telegram message to a person by name or phone number. |
45
+ | `NILYO_MESSAGING_LIST_CHATS` | Lists recent chats, optionally filtered to unread. |
46
+ | `NILYO_EMAIL_LIST` | Lists recent emails from the connected Gmail/Outlook/IMAP mailbox. |
47
+ | `NILYO_EMAIL_SEND` | Sends an email. |
48
+ | `NILYO_CALENDAR_LIST_CALENDARS` | Lists the connected calendars. |
49
+ | `NILYO_CALL_TOOL` | Escape hatch: calls any Nilyo MCP tool by exact name for everything the actions above don't cover (invitations list, post comments/reactions, IMAP folders, webhook destinations, billing, etc). |
50
+
51
+ A `NILYO_CONNECTED_ACCOUNTS` provider also injects the connected accounts into context, so the agent knows what's available without an explicit action call, and can disambiguate when more than one account of the same provider is connected.
52
+
53
+ ## Example prompts
54
+
55
+ - "Which accounts are connected to Nilyo?"
56
+ - "Who do I know at Stripe on LinkedIn?"
57
+ - "Send Julien a WhatsApp saying the meeting moved to 3pm."
58
+ - "What's in my inbox?"
59
+ - "List my pending LinkedIn invitations." (via `NILYO_CALL_TOOL` -> `linkedin_list_invitations`)
60
+
61
+ ## Notes for chaining
62
+
63
+ Structured next-step results from Nilyo (`connect_account`, `reconnect_account`, `subscribe`, …) are surfaced as a normal reply rather than an error — they are guidance for the user, not a failure. Never invent a LinkedIn/provider ID: resolve one first with `NILYO_LINKEDIN_GET_PROFILE` or `NILYO_LINKEDIN_SEARCH_PEOPLE` (or the matching tool via `NILYO_CALL_TOOL`) before using it in a write action.
64
+
65
+ ## Development
66
+
67
+ ```bash
68
+ bun install
69
+ bun run build
70
+ bun test # component tests (mocked runtime)
71
+ elizaos test e2e # e2e tests (real runtime)
72
+ elizaos dev # hot-reload against a local agent
73
+ ```
74
+
75
+ ## Links
76
+
77
+ - Nilyo: https://nilyo.com
78
+ - Agent setup guide: https://nilyo.com/setup-for-agents
79
+ - Source: https://github.com/arnaudh458/plugin-nilyo
package/dist/index.js ADDED
@@ -0,0 +1,508 @@
1
+ // src/plugin.ts
2
+ import { logger as logger3 } from "@elizaos/core";
3
+ import { z } from "zod";
4
+
5
+ // src/actions.ts
6
+ import { logger } from "@elizaos/core";
7
+
8
+ // src/nilyoClient.ts
9
+ function compact(input) {
10
+ const out = {};
11
+ for (const [key, value] of Object.entries(input)) {
12
+ if (value === undefined || value === null || value === "")
13
+ continue;
14
+ if (Array.isArray(value) && value.length === 0)
15
+ continue;
16
+ out[key] = value;
17
+ }
18
+ return out;
19
+ }
20
+ async function nilyoRpc(runtime, method, params = {}) {
21
+ const token = runtime.getSetting("NILYO_API_TOKEN");
22
+ if (!token) {
23
+ throw new Error("NILYO_API_TOKEN is not configured. Create a personal token from https://nilyo.com/account -> Agent access and set it in this character/agent config.");
24
+ }
25
+ const baseUrl = String(runtime.getSetting("NILYO_BASE_URL") || "https://nilyo.com").replace(/\/$/, "");
26
+ const response = await fetch(`${baseUrl}/mcp`, {
27
+ method: "POST",
28
+ headers: {
29
+ "Content-Type": "application/json",
30
+ Authorization: `Bearer ${token}`
31
+ },
32
+ body: JSON.stringify({ jsonrpc: "2.0", id: Date.now(), method, params })
33
+ });
34
+ if (!response.ok) {
35
+ throw new Error(`Nilyo MCP request failed: ${response.status} ${response.statusText}`);
36
+ }
37
+ const json = await response.json();
38
+ if (json.error) {
39
+ throw new Error(json.error.message ?? "Nilyo MCP error");
40
+ }
41
+ return json.result ?? {};
42
+ }
43
+ async function nilyoTool(runtime, name, args) {
44
+ const result = await nilyoRpc(runtime, "tools/call", { name, arguments: args });
45
+ const content = result.content ?? [];
46
+ const text = content.find((item) => item.type === "text")?.text ?? "";
47
+ if (result.isError) {
48
+ const structured = result.structuredContent;
49
+ const error = structured?.error ?? {};
50
+ const nextTools = error.next_tools;
51
+ throw new Error(`${String(error.message ?? text ?? "Nilyo tool failed")}${nextTools ? ` (next: ${nextTools.join(", ")})` : ""}`);
52
+ }
53
+ if (result.structuredContent !== undefined && result.structuredContent !== null) {
54
+ return result.structuredContent;
55
+ }
56
+ try {
57
+ return JSON.parse(text);
58
+ } catch {
59
+ return { text };
60
+ }
61
+ }
62
+
63
+ // src/params.ts
64
+ import {
65
+ composePromptFromState,
66
+ ModelType,
67
+ parseKeyValueXml
68
+ } from "@elizaos/core";
69
+ async function extractParams(runtime, state, instructions) {
70
+ const template = `# Task: Extract parameters for a Nilyo agent action
71
+
72
+ # Recent Messages:
73
+ {{recentMessages}}
74
+
75
+ # Instructions:
76
+ ${instructions}
77
+
78
+ Do NOT include any thinking, reasoning, or <think> sections in your response. Go directly to the XML
79
+ response format without any preamble or explanation. Leave a field empty (\`<field></field>\`) rather
80
+ than guessing when the conversation does not say.`;
81
+ const prompt = composePromptFromState({ state, template });
82
+ const raw = await runtime.useModel(ModelType.TEXT_SMALL, { prompt, stopSequences: [] });
83
+ return parseKeyValueXml(raw);
84
+ }
85
+
86
+ // src/actions.ts
87
+ var hasToken = async (runtime) => Boolean(runtime.getSetting("NILYO_API_TOKEN"));
88
+ async function respond(runtime, message, actionName, callback, run) {
89
+ try {
90
+ const result = await run();
91
+ const nextAction = result.action;
92
+ const text = nextAction ? `${String(result.title ?? "Next step needed")}: ${String(result.message ?? "")}` : summarize(result);
93
+ if (callback) {
94
+ await callback({ text, actions: [actionName], source: message.content.source });
95
+ }
96
+ return { text, success: true, data: result };
97
+ } catch (error) {
98
+ logger.error({ error, actionName }, "Nilyo action failed");
99
+ const text = error instanceof Error ? error.message : String(error);
100
+ if (callback) {
101
+ await callback({ text: `Nilyo: ${text}`, actions: [actionName], source: message.content.source });
102
+ }
103
+ return { success: false, error: error instanceof Error ? error : new Error(text) };
104
+ }
105
+ }
106
+ function summarize(result) {
107
+ if (Array.isArray(result))
108
+ return JSON.stringify(result.slice(0, 20));
109
+ return JSON.stringify(result);
110
+ }
111
+ var listAccountsAction = {
112
+ name: "NILYO_LIST_ACCOUNTS",
113
+ similes: ["LIST_CONNECTED_ACCOUNTS", "WHICH_ACCOUNTS"],
114
+ description: "List the LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts connected to Nilyo, with their display name, provider and connection status.",
115
+ validate: hasToken,
116
+ handler: async (runtime, message, _state, _options, callback) => respond(runtime, message, "NILYO_LIST_ACCOUNTS", callback, () => nilyoTool(runtime, "list_connected_accounts", {})),
117
+ examples: [
118
+ [
119
+ { name: "{{userName}}", content: { text: "Which accounts are connected to Nilyo?" } },
120
+ { name: "{{agentName}}", content: { text: "You have LinkedIn and WhatsApp connected.", actions: ["NILYO_LIST_ACCOUNTS"] } }
121
+ ]
122
+ ]
123
+ };
124
+ var linkedinGetProfileAction = {
125
+ name: "NILYO_LINKEDIN_GET_PROFILE",
126
+ similes: ["GET_LINKEDIN_PROFILE", "LOOKUP_LINKEDIN"],
127
+ description: "Resolve a LinkedIn profile from a profile URL, public identifier or name mentioned in the conversation; returns the stable provider ID used by other LinkedIn actions.",
128
+ validate: hasToken,
129
+ handler: async (runtime, message, state, _options, callback) => {
130
+ if (!state)
131
+ return { success: false, error: new Error("State is required") };
132
+ const params = await extractParams(runtime, state, `Extract the LinkedIn profile the user wants (a linkedin.com/in/... URL, or a public identifier).
133
+ <response>
134
+ <profileUrlOrId>the URL or identifier, empty if not found</profileUrlOrId>
135
+ </response>`);
136
+ if (!params?.profileUrlOrId) {
137
+ const text = "I need a LinkedIn profile URL or identifier to look someone up.";
138
+ if (callback)
139
+ await callback({ text, actions: ["NILYO_LINKEDIN_GET_PROFILE"], source: message.content.source });
140
+ return { success: false, text };
141
+ }
142
+ return respond(runtime, message, "NILYO_LINKEDIN_GET_PROFILE", callback, () => nilyoTool(runtime, "linkedin_get_profile", { user_id_or_url: params.profileUrlOrId }));
143
+ },
144
+ examples: [
145
+ [
146
+ { name: "{{userName}}", content: { text: "Look up https://www.linkedin.com/in/jane-doe/ on LinkedIn" } },
147
+ { name: "{{agentName}}", content: { text: "Jane Doe, VP Engineering at Acme.", actions: ["NILYO_LINKEDIN_GET_PROFILE"] } }
148
+ ]
149
+ ]
150
+ };
151
+ var linkedinSearchPeopleAction = {
152
+ name: "NILYO_LINKEDIN_SEARCH_PEOPLE",
153
+ similes: ["SEARCH_LINKEDIN", "FIND_ON_LINKEDIN"],
154
+ description: "Search LinkedIn people by keywords (name, company, role) using the connected LinkedIn account.",
155
+ validate: hasToken,
156
+ handler: async (runtime, message, state, _options, callback) => {
157
+ if (!state)
158
+ return { success: false, error: new Error("State is required") };
159
+ const params = await extractParams(runtime, state, `Extract the LinkedIn people-search keywords (name, company, role, etc).
160
+ <response>
161
+ <keywords>the search keywords, empty if not found</keywords>
162
+ </response>`);
163
+ if (!params?.keywords) {
164
+ const text = "Who or what should I search for on LinkedIn?";
165
+ if (callback)
166
+ await callback({ text, actions: ["NILYO_LINKEDIN_SEARCH_PEOPLE"], source: message.content.source });
167
+ return { success: false, text };
168
+ }
169
+ return respond(runtime, message, "NILYO_LINKEDIN_SEARCH_PEOPLE", callback, () => nilyoTool(runtime, "linkedin_search_people", { keywords: params.keywords }));
170
+ },
171
+ examples: [
172
+ [
173
+ { name: "{{userName}}", content: { text: "Who do I know at Stripe on LinkedIn?" } },
174
+ { name: "{{agentName}}", content: { text: "Found 3 people at Stripe in your network.", actions: ["NILYO_LINKEDIN_SEARCH_PEOPLE"] } }
175
+ ]
176
+ ]
177
+ };
178
+ var linkedinSendInvitationAction = {
179
+ name: "NILYO_LINKEDIN_SEND_INVITATION",
180
+ similes: ["CONNECT_ON_LINKEDIN", "SEND_LINKEDIN_INVITE"],
181
+ description: "Send a LinkedIn connection invitation to a stable provider user ID (resolve it first with NILYO_LINKEDIN_GET_PROFILE or NILYO_LINKEDIN_SEARCH_PEOPLE — never invent an ID).",
182
+ validate: hasToken,
183
+ handler: async (runtime, message, state, _options, callback) => {
184
+ if (!state)
185
+ return { success: false, error: new Error("State is required") };
186
+ const params = await extractParams(runtime, state, `Extract the LinkedIn invitation details from the conversation. The user ID must be a stable
187
+ provider ID already resolved earlier in the conversation (from a profile lookup or search result),
188
+ never a URL, a name, or something invented.
189
+ <response>
190
+ <userId>the resolved LinkedIn provider user ID, empty if not found</userId>
191
+ <message>optional invitation note, empty if none</message>
192
+ </response>`);
193
+ if (!params?.userId) {
194
+ const text = "I need a resolved LinkedIn provider ID (look the profile up first) before I can send an invitation.";
195
+ if (callback)
196
+ await callback({ text, actions: ["NILYO_LINKEDIN_SEND_INVITATION"], source: message.content.source });
197
+ return { success: false, text };
198
+ }
199
+ return respond(runtime, message, "NILYO_LINKEDIN_SEND_INVITATION", callback, () => nilyoTool(runtime, "linkedin_send_invitation", compact({ user_id: params.userId, message: params.message })));
200
+ },
201
+ examples: [
202
+ [
203
+ { name: "{{userName}}", content: { text: "Send her a connection request saying it was great meeting at the conference" } },
204
+ { name: "{{agentName}}", content: { text: "Invitation sent.", actions: ["NILYO_LINKEDIN_SEND_INVITATION"] } }
205
+ ]
206
+ ]
207
+ };
208
+ var messagingSendToContactAction = {
209
+ name: "NILYO_MESSAGING_SEND_TO_CONTACT",
210
+ similes: ["SEND_WHATSAPP", "SEND_INSTAGRAM_DM", "SEND_TELEGRAM"],
211
+ description: "Send a WhatsApp, Instagram or Telegram message to a person by name or phone number. Sends only when exactly one person matches; otherwise returns candidates to disambiguate.",
212
+ validate: hasToken,
213
+ handler: async (runtime, message, state, _options, callback) => {
214
+ if (!state)
215
+ return { success: false, error: new Error("State is required") };
216
+ const params = await extractParams(runtime, state, `Extract the details to send a WhatsApp/Instagram/Telegram message.
217
+ <response>
218
+ <provider>whatsapp, instagram or telegram — empty if not stated (defaults to whatsapp)</provider>
219
+ <name>recipient name or phone number, empty if not found</name>
220
+ <text>the message text to send, empty if not found</text>
221
+ </response>`);
222
+ if (!params?.name || !params?.text) {
223
+ const text = "Who should I message, and what should I say?";
224
+ if (callback)
225
+ await callback({ text, actions: ["NILYO_MESSAGING_SEND_TO_CONTACT"], source: message.content.source });
226
+ return { success: false, text };
227
+ }
228
+ return respond(runtime, message, "NILYO_MESSAGING_SEND_TO_CONTACT", callback, () => nilyoTool(runtime, "messaging_send_to_contact", compact({ provider: params.provider || "whatsapp", name: params.name, text: params.text })));
229
+ },
230
+ examples: [
231
+ [
232
+ { name: "{{userName}}", content: { text: "Send Julien a WhatsApp saying the meeting moved to 3pm" } },
233
+ { name: "{{agentName}}", content: { text: "Sent to Julien on WhatsApp.", actions: ["NILYO_MESSAGING_SEND_TO_CONTACT"] } }
234
+ ]
235
+ ]
236
+ };
237
+ var messagingListChatsAction = {
238
+ name: "NILYO_MESSAGING_LIST_CHATS",
239
+ similes: ["LIST_WHATSAPP_CHATS", "LIST_CONVERSATIONS"],
240
+ description: "List recent WhatsApp, Instagram or Telegram chats, optionally filtered to unread only.",
241
+ validate: hasToken,
242
+ handler: async (runtime, message, state, _options, callback) => {
243
+ if (!state)
244
+ return { success: false, error: new Error("State is required") };
245
+ const params = await extractParams(runtime, state, `Extract chat-list filters.
246
+ <response>
247
+ <provider>whatsapp, instagram or telegram — empty if not stated (every connected provider)</provider>
248
+ <isUnread>true if the user only wants unread chats, otherwise empty</isUnread>
249
+ </response>`);
250
+ return respond(runtime, message, "NILYO_MESSAGING_LIST_CHATS", callback, () => nilyoTool(runtime, "messaging_list_chats", compact({ provider: params?.provider, is_unread: params?.isUnread === "true" ? true : undefined, limit: 50 })));
251
+ },
252
+ examples: [
253
+ [
254
+ { name: "{{userName}}", content: { text: "Show me my unread WhatsApp chats" } },
255
+ { name: "{{agentName}}", content: { text: "You have 4 unread WhatsApp chats.", actions: ["NILYO_MESSAGING_LIST_CHATS"] } }
256
+ ]
257
+ ]
258
+ };
259
+ var emailListAction = {
260
+ name: "NILYO_EMAIL_LIST",
261
+ similes: ["LIST_EMAILS", "CHECK_INBOX"],
262
+ description: "List recent emails from the connected Gmail, Outlook or IMAP mailbox.",
263
+ validate: hasToken,
264
+ handler: async (runtime, message, state, _options, callback) => {
265
+ const params = state ? await extractParams(runtime, state, `Extract an optional exact folder ID if the user named one (from a prior email_list_folders result).
266
+ <response>
267
+ <folderId>the exact folder ID, empty if not stated (defaults to the inbox)</folderId>
268
+ </response>`) : null;
269
+ return respond(runtime, message, "NILYO_EMAIL_LIST", callback, () => nilyoTool(runtime, "email_list_messages", compact({ folder_id: params?.folderId, limit: 20 })));
270
+ },
271
+ examples: [
272
+ [
273
+ { name: "{{userName}}", content: { text: "What's in my inbox?" } },
274
+ { name: "{{agentName}}", content: { text: "You have 5 new emails, the latest from Acme Billing.", actions: ["NILYO_EMAIL_LIST"] } }
275
+ ]
276
+ ]
277
+ };
278
+ var emailSendAction = {
279
+ name: "NILYO_EMAIL_SEND",
280
+ similes: ["SEND_EMAIL", "REPLY_TO_EMAIL"],
281
+ description: "Send an email from the connected Gmail, Outlook or IMAP mailbox.",
282
+ validate: hasToken,
283
+ handler: async (runtime, message, state, _options, callback) => {
284
+ if (!state)
285
+ return { success: false, error: new Error("State is required") };
286
+ const params = await extractParams(runtime, state, `Extract the email to send.
287
+ <response>
288
+ <to>comma-separated recipient addresses, empty if not found</to>
289
+ <cc>comma-separated CC addresses, empty if none</cc>
290
+ <bcc>comma-separated BCC addresses, empty if none</bcc>
291
+ <subject>the subject line, empty if not found</subject>
292
+ <body>the plain-text body, empty if not found</body>
293
+ </response>`);
294
+ if (!params?.to || !params?.body) {
295
+ const text = "Who should I email, and what should it say?";
296
+ if (callback)
297
+ await callback({ text, actions: ["NILYO_EMAIL_SEND"], source: message.content.source });
298
+ return { success: false, text };
299
+ }
300
+ const addresses = (value) => value.split(",").map((email) => email.trim()).filter(Boolean).map((email) => ({ email }));
301
+ return respond(runtime, message, "NILYO_EMAIL_SEND", callback, () => nilyoTool(runtime, "email_send", compact({
302
+ to: addresses(params.to),
303
+ cc: params.cc ? addresses(params.cc) : undefined,
304
+ bcc: params.bcc ? addresses(params.bcc) : undefined,
305
+ subject: params.subject,
306
+ plain_text: params.body
307
+ })));
308
+ },
309
+ examples: [
310
+ [
311
+ { name: "{{userName}}", content: { text: "Email jane@acme.com subject Follow-up saying thanks for the call today" } },
312
+ { name: "{{agentName}}", content: { text: "Email sent to jane@acme.com.", actions: ["NILYO_EMAIL_SEND"] } }
313
+ ]
314
+ ]
315
+ };
316
+ var calendarListCalendarsAction = {
317
+ name: "NILYO_CALENDAR_LIST_CALENDARS",
318
+ similes: ["LIST_CALENDARS"],
319
+ description: "List the calendars available on the connected calendar account.",
320
+ validate: hasToken,
321
+ handler: async (runtime, message, _state, _options, callback) => respond(runtime, message, "NILYO_CALENDAR_LIST_CALENDARS", callback, () => nilyoTool(runtime, "calendar_list_calendars", {})),
322
+ examples: [
323
+ [
324
+ { name: "{{userName}}", content: { text: "What calendars do I have connected?" } },
325
+ { name: "{{agentName}}", content: { text: 'You have "Work" and "Personal" calendars connected.', actions: ["NILYO_CALENDAR_LIST_CALENDARS"] } }
326
+ ]
327
+ ]
328
+ };
329
+ var callToolAction = {
330
+ name: "NILYO_CALL_TOOL",
331
+ similes: ["NILYO_TOOL", "CALL_NILYO_TOOL"],
332
+ description: "Call any Nilyo MCP tool by exact name for requests the other Nilyo actions do not cover (invitations list, post comments/reactions, IMAP folders, webhook destinations, billing, etc). Use exact provider IDs already resolved in the conversation; never invent one.",
333
+ validate: hasToken,
334
+ handler: async (runtime, message, state, _options, callback) => {
335
+ if (!state)
336
+ return { success: false, error: new Error("State is required") };
337
+ const params = await extractParams(runtime, state, `Extract the exact Nilyo MCP tool name to call and its JSON arguments object.
338
+ <response>
339
+ <toolName>exact tool name, e.g. linkedin_list_invitations, empty if unclear</toolName>
340
+ <argumentsJson>a JSON object of arguments, {} if none</argumentsJson>
341
+ </response>`);
342
+ if (!params?.toolName) {
343
+ const text = "Which Nilyo tool should I call?";
344
+ if (callback)
345
+ await callback({ text, actions: ["NILYO_CALL_TOOL"], source: message.content.source });
346
+ return { success: false, text };
347
+ }
348
+ let args = {};
349
+ try {
350
+ args = params.argumentsJson ? JSON.parse(params.argumentsJson) : {};
351
+ } catch {
352
+ const text = `Could not parse the arguments for ${params.toolName} as JSON.`;
353
+ if (callback)
354
+ await callback({ text, actions: ["NILYO_CALL_TOOL"], source: message.content.source });
355
+ return { success: false, text };
356
+ }
357
+ return respond(runtime, message, "NILYO_CALL_TOOL", callback, () => nilyoTool(runtime, params.toolName, args));
358
+ },
359
+ examples: [
360
+ [
361
+ { name: "{{userName}}", content: { text: "List my pending LinkedIn invitations" } },
362
+ { name: "{{agentName}}", content: { text: "You have 2 pending invitations.", actions: ["NILYO_CALL_TOOL"] } }
363
+ ]
364
+ ]
365
+ };
366
+ var nilyoActions = [
367
+ listAccountsAction,
368
+ linkedinGetProfileAction,
369
+ linkedinSearchPeopleAction,
370
+ linkedinSendInvitationAction,
371
+ messagingSendToContactAction,
372
+ messagingListChatsAction,
373
+ emailListAction,
374
+ emailSendAction,
375
+ calendarListCalendarsAction,
376
+ callToolAction
377
+ ];
378
+
379
+ // src/provider.ts
380
+ import { logger as logger2 } from "@elizaos/core";
381
+ var connectedAccountsProvider = {
382
+ name: "NILYO_CONNECTED_ACCOUNTS",
383
+ description: "The LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts connected to Nilyo",
384
+ dynamic: true,
385
+ get: async (runtime, _message, _state) => {
386
+ if (!runtime.getSetting("NILYO_API_TOKEN")) {
387
+ return { text: "", values: {}, data: {} };
388
+ }
389
+ try {
390
+ const result = await nilyoTool(runtime, "list_connected_accounts", {});
391
+ const accounts = Array.isArray(result) ? result : result.accounts ?? [];
392
+ if (accounts.length === 0) {
393
+ return { text: "No Nilyo accounts are connected yet.", values: { nilyoAccounts: [] }, data: { accounts } };
394
+ }
395
+ const lines = accounts.map((a) => `- ${String(a.provider ?? "?")}: ${String(a.name ?? a.display_name ?? a.unipile_account_id ?? "?")}`);
396
+ return {
397
+ text: `Connected Nilyo accounts:
398
+ ${lines.join(`
399
+ `)}`,
400
+ values: { nilyoAccounts: accounts },
401
+ data: { accounts }
402
+ };
403
+ } catch (error) {
404
+ logger2.warn({ error }, "NILYO_CONNECTED_ACCOUNTS provider failed");
405
+ return { text: "", values: {}, data: {} };
406
+ }
407
+ }
408
+ };
409
+
410
+ // src/tests.ts
411
+ var NilyoPluginTestSuite = {
412
+ name: "plugin_nilyo_test_suite",
413
+ tests: [
414
+ {
415
+ name: "nilyo_actions_are_registered",
416
+ fn: async (runtime) => {
417
+ const expected = [
418
+ "NILYO_LIST_ACCOUNTS",
419
+ "NILYO_LINKEDIN_GET_PROFILE",
420
+ "NILYO_LINKEDIN_SEARCH_PEOPLE",
421
+ "NILYO_LINKEDIN_SEND_INVITATION",
422
+ "NILYO_MESSAGING_SEND_TO_CONTACT",
423
+ "NILYO_MESSAGING_LIST_CHATS",
424
+ "NILYO_EMAIL_LIST",
425
+ "NILYO_EMAIL_SEND",
426
+ "NILYO_CALENDAR_LIST_CALENDARS",
427
+ "NILYO_CALL_TOOL"
428
+ ];
429
+ const registered = new Set((runtime.actions ?? []).map((a) => a.name));
430
+ for (const name of expected) {
431
+ if (!registered.has(name)) {
432
+ throw new Error(`Expected action ${name} to be registered in the runtime`);
433
+ }
434
+ }
435
+ }
436
+ },
437
+ {
438
+ name: "nilyo_connected_accounts_provider_is_registered",
439
+ fn: async (runtime) => {
440
+ const registered = (runtime.providers ?? []).some((p) => p.name === "NILYO_CONNECTED_ACCOUNTS");
441
+ if (!registered) {
442
+ throw new Error("Expected NILYO_CONNECTED_ACCOUNTS provider to be registered in the runtime");
443
+ }
444
+ }
445
+ },
446
+ {
447
+ name: "nilyo_actions_are_gated_on_NILYO_API_TOKEN",
448
+ fn: async (runtime) => {
449
+ const action = (runtime.actions ?? []).find((a) => a.name === "NILYO_LIST_ACCOUNTS");
450
+ if (!action)
451
+ throw new Error("NILYO_LIST_ACCOUNTS action not found");
452
+ const hasToken = Boolean(runtime.getSetting("NILYO_API_TOKEN"));
453
+ const valid = await action.validate(runtime, {}, undefined);
454
+ if (valid !== hasToken) {
455
+ throw new Error(`Expected NILYO_LIST_ACCOUNTS.validate() (${valid}) to match whether NILYO_API_TOKEN is set (${hasToken})`);
456
+ }
457
+ }
458
+ }
459
+ ]
460
+ };
461
+
462
+ // src/plugin.ts
463
+ var configSchema = z.object({
464
+ NILYO_API_TOKEN: z.string().min(1, "NILYO_API_TOKEN is required").optional().transform((val) => {
465
+ if (!val) {
466
+ logger3.warn("NILYO_API_TOKEN is not set — create a personal token from https://nilyo.com/account -> Agent access to enable Nilyo actions.");
467
+ }
468
+ return val;
469
+ }),
470
+ NILYO_BASE_URL: z.string().url().optional()
471
+ });
472
+ var nilyoPlugin = {
473
+ name: "plugin-nilyo",
474
+ description: "Give the agent access to the user's own LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts through Nilyo.",
475
+ config: {
476
+ NILYO_API_TOKEN: process.env.NILYO_API_TOKEN,
477
+ NILYO_BASE_URL: process.env.NILYO_BASE_URL
478
+ },
479
+ async init(config) {
480
+ logger3.debug("Nilyo plugin initialized");
481
+ try {
482
+ const validatedConfig = await configSchema.parseAsync(config);
483
+ for (const [key, value] of Object.entries(validatedConfig)) {
484
+ if (value)
485
+ process.env[key] = value;
486
+ }
487
+ } catch (error) {
488
+ if (error instanceof z.ZodError) {
489
+ const errorMessages = error.issues?.map((e) => e.message)?.join(", ") || "Unknown validation error";
490
+ throw new Error(`Invalid Nilyo plugin configuration: ${errorMessages}`);
491
+ }
492
+ throw new Error(`Invalid Nilyo plugin configuration: ${error instanceof Error ? error.message : String(error)}`);
493
+ }
494
+ },
495
+ actions: nilyoActions,
496
+ providers: [connectedAccountsProvider],
497
+ tests: [NilyoPluginTestSuite]
498
+ };
499
+
500
+ // src/index.ts
501
+ var src_default = nilyoPlugin;
502
+ export {
503
+ src_default as default,
504
+ nilyoPlugin
505
+ };
506
+
507
+ //# debugId=BA4ADD4D832B39E564756E2164756E21
508
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/plugin.ts", "../src/actions.ts", "../src/nilyoClient.ts", "../src/params.ts", "../src/provider.ts", "../src/tests.ts", "../src/index.ts"],
4
+ "sourcesContent": [
5
+ "import type { Plugin } from '@elizaos/core';\nimport { logger } from '@elizaos/core';\nimport { z } from 'zod';\nimport { nilyoActions } from './actions';\nimport { connectedAccountsProvider } from './provider';\nimport { NilyoPluginTestSuite } from './tests';\n\nconst configSchema = z.object({\n NILYO_API_TOKEN: z\n .string()\n .min(1, 'NILYO_API_TOKEN is required')\n .optional()\n .transform((val) => {\n if (!val) {\n logger.warn(\n 'NILYO_API_TOKEN is not set — create a personal token from https://nilyo.com/account -> Agent access to enable Nilyo actions.'\n );\n }\n return val;\n }),\n NILYO_BASE_URL: z.string().url().optional(),\n});\n\nexport const nilyoPlugin: Plugin = {\n name: 'plugin-nilyo',\n description:\n \"Give the agent access to the user's own LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts through Nilyo.\",\n config: {\n NILYO_API_TOKEN: process.env.NILYO_API_TOKEN,\n NILYO_BASE_URL: process.env.NILYO_BASE_URL,\n },\n async init(config: Record<string, string>) {\n logger.debug('Nilyo plugin initialized');\n try {\n const validatedConfig = await configSchema.parseAsync(config);\n for (const [key, value] of Object.entries(validatedConfig)) {\n if (value) process.env[key] = value;\n }\n } catch (error) {\n if (error instanceof z.ZodError) {\n const errorMessages = error.issues?.map((e) => e.message)?.join(', ') || 'Unknown validation error';\n throw new Error(`Invalid Nilyo plugin configuration: ${errorMessages}`);\n }\n throw new Error(`Invalid Nilyo plugin configuration: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n actions: nilyoActions,\n providers: [connectedAccountsProvider],\n tests: [NilyoPluginTestSuite],\n};\n\nexport default nilyoPlugin;\n",
6
+ "import type { Action, ActionResult, HandlerCallback, IAgentRuntime, Memory, State } from '@elizaos/core';\nimport { logger } from '@elizaos/core';\nimport { compact, nilyoTool } from './nilyoClient';\nimport { extractParams } from './params';\n\nconst hasToken = async (runtime: IAgentRuntime): Promise<boolean> => Boolean(runtime.getSetting('NILYO_API_TOKEN'));\n\n/** Wraps a Nilyo tool call: reports the structured `action` next-step (connect/reconnect/subscribe/…)\n * as a normal reply instead of an error, since it is guidance for the user, not a failure. */\nasync function respond(\n runtime: IAgentRuntime,\n message: Memory,\n actionName: string,\n callback: HandlerCallback | undefined,\n run: () => Promise<Record<string, unknown>>\n): Promise<ActionResult> {\n try {\n const result = await run();\n const nextAction = result.action as string | undefined;\n const text = nextAction\n ? `${String(result.title ?? 'Next step needed')}: ${String(result.message ?? '')}`\n : summarize(result);\n if (callback) {\n await callback({ text, actions: [actionName], source: message.content.source });\n }\n return { text, success: true, data: result };\n } catch (error) {\n logger.error({ error, actionName }, 'Nilyo action failed');\n const text = error instanceof Error ? error.message : String(error);\n if (callback) {\n await callback({ text: `Nilyo: ${text}`, actions: [actionName], source: message.content.source });\n }\n return { success: false, error: error instanceof Error ? error : new Error(text) };\n }\n}\n\n/** Short, model-friendly summary of a tool result so the reply stays conversational. */\nfunction summarize(result: Record<string, unknown>): string {\n if (Array.isArray(result)) return JSON.stringify(result.slice(0, 20));\n return JSON.stringify(result);\n}\n\nexport const listAccountsAction: Action = {\n name: 'NILYO_LIST_ACCOUNTS',\n similes: ['LIST_CONNECTED_ACCOUNTS', 'WHICH_ACCOUNTS'],\n description:\n 'List the LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts connected to Nilyo, with their display name, provider and connection status.',\n validate: hasToken,\n handler: async (runtime, message, _state, _options, callback): Promise<ActionResult> =>\n respond(runtime, message, 'NILYO_LIST_ACCOUNTS', callback, () => nilyoTool(runtime, 'list_connected_accounts', {})),\n examples: [\n [\n { name: '{{userName}}', content: { text: 'Which accounts are connected to Nilyo?' } },\n { name: '{{agentName}}', content: { text: 'You have LinkedIn and WhatsApp connected.', actions: ['NILYO_LIST_ACCOUNTS'] } },\n ],\n ],\n};\n\ninterface LinkedInProfileParams extends Record<string, unknown> {\n profileUrlOrId?: string;\n}\n\nexport const linkedinGetProfileAction: Action = {\n name: 'NILYO_LINKEDIN_GET_PROFILE',\n similes: ['GET_LINKEDIN_PROFILE', 'LOOKUP_LINKEDIN'],\n description:\n 'Resolve a LinkedIn profile from a profile URL, public identifier or name mentioned in the conversation; returns the stable provider ID used by other LinkedIn actions.',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n if (!state) return { success: false, error: new Error('State is required') };\n const params = await extractParams<LinkedInProfileParams>(\n runtime,\n state,\n `Extract the LinkedIn profile the user wants (a linkedin.com/in/... URL, or a public identifier).\n<response>\n <profileUrlOrId>the URL or identifier, empty if not found</profileUrlOrId>\n</response>`\n );\n if (!params?.profileUrlOrId) {\n const text = \"I need a LinkedIn profile URL or identifier to look someone up.\";\n if (callback) await callback({ text, actions: ['NILYO_LINKEDIN_GET_PROFILE'], source: message.content.source });\n return { success: false, text };\n }\n return respond(runtime, message, 'NILYO_LINKEDIN_GET_PROFILE', callback, () =>\n nilyoTool(runtime, 'linkedin_get_profile', { user_id_or_url: params.profileUrlOrId })\n );\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: 'Look up https://www.linkedin.com/in/jane-doe/ on LinkedIn' } },\n { name: '{{agentName}}', content: { text: 'Jane Doe, VP Engineering at Acme.', actions: ['NILYO_LINKEDIN_GET_PROFILE'] } },\n ],\n ],\n};\n\ninterface LinkedInSearchParams extends Record<string, unknown> {\n keywords?: string;\n}\n\nexport const linkedinSearchPeopleAction: Action = {\n name: 'NILYO_LINKEDIN_SEARCH_PEOPLE',\n similes: ['SEARCH_LINKEDIN', 'FIND_ON_LINKEDIN'],\n description: 'Search LinkedIn people by keywords (name, company, role) using the connected LinkedIn account.',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n if (!state) return { success: false, error: new Error('State is required') };\n const params = await extractParams<LinkedInSearchParams>(\n runtime,\n state,\n `Extract the LinkedIn people-search keywords (name, company, role, etc).\n<response>\n <keywords>the search keywords, empty if not found</keywords>\n</response>`\n );\n if (!params?.keywords) {\n const text = 'Who or what should I search for on LinkedIn?';\n if (callback) await callback({ text, actions: ['NILYO_LINKEDIN_SEARCH_PEOPLE'], source: message.content.source });\n return { success: false, text };\n }\n return respond(runtime, message, 'NILYO_LINKEDIN_SEARCH_PEOPLE', callback, () =>\n nilyoTool(runtime, 'linkedin_search_people', { keywords: params.keywords })\n );\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: 'Who do I know at Stripe on LinkedIn?' } },\n { name: '{{agentName}}', content: { text: 'Found 3 people at Stripe in your network.', actions: ['NILYO_LINKEDIN_SEARCH_PEOPLE'] } },\n ],\n ],\n};\n\ninterface LinkedInInviteParams extends Record<string, unknown> {\n userId?: string;\n message?: string;\n}\n\nexport const linkedinSendInvitationAction: Action = {\n name: 'NILYO_LINKEDIN_SEND_INVITATION',\n similes: ['CONNECT_ON_LINKEDIN', 'SEND_LINKEDIN_INVITE'],\n description:\n 'Send a LinkedIn connection invitation to a stable provider user ID (resolve it first with NILYO_LINKEDIN_GET_PROFILE or NILYO_LINKEDIN_SEARCH_PEOPLE — never invent an ID).',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n if (!state) return { success: false, error: new Error('State is required') };\n const params = await extractParams<LinkedInInviteParams>(\n runtime,\n state,\n `Extract the LinkedIn invitation details from the conversation. The user ID must be a stable\nprovider ID already resolved earlier in the conversation (from a profile lookup or search result),\nnever a URL, a name, or something invented.\n<response>\n <userId>the resolved LinkedIn provider user ID, empty if not found</userId>\n <message>optional invitation note, empty if none</message>\n</response>`\n );\n if (!params?.userId) {\n const text = 'I need a resolved LinkedIn provider ID (look the profile up first) before I can send an invitation.';\n if (callback) await callback({ text, actions: ['NILYO_LINKEDIN_SEND_INVITATION'], source: message.content.source });\n return { success: false, text };\n }\n return respond(runtime, message, 'NILYO_LINKEDIN_SEND_INVITATION', callback, () =>\n nilyoTool(runtime, 'linkedin_send_invitation', compact({ user_id: params.userId, message: params.message }))\n );\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: 'Send her a connection request saying it was great meeting at the conference' } },\n { name: '{{agentName}}', content: { text: 'Invitation sent.', actions: ['NILYO_LINKEDIN_SEND_INVITATION'] } },\n ],\n ],\n};\n\ninterface MessagingSendParams extends Record<string, unknown> {\n provider?: string;\n name?: string;\n text?: string;\n}\n\nexport const messagingSendToContactAction: Action = {\n name: 'NILYO_MESSAGING_SEND_TO_CONTACT',\n similes: ['SEND_WHATSAPP', 'SEND_INSTAGRAM_DM', 'SEND_TELEGRAM'],\n description:\n 'Send a WhatsApp, Instagram or Telegram message to a person by name or phone number. Sends only when exactly one person matches; otherwise returns candidates to disambiguate.',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n if (!state) return { success: false, error: new Error('State is required') };\n const params = await extractParams<MessagingSendParams>(\n runtime,\n state,\n `Extract the details to send a WhatsApp/Instagram/Telegram message.\n<response>\n <provider>whatsapp, instagram or telegram — empty if not stated (defaults to whatsapp)</provider>\n <name>recipient name or phone number, empty if not found</name>\n <text>the message text to send, empty if not found</text>\n</response>`\n );\n if (!params?.name || !params?.text) {\n const text = 'Who should I message, and what should I say?';\n if (callback) await callback({ text, actions: ['NILYO_MESSAGING_SEND_TO_CONTACT'], source: message.content.source });\n return { success: false, text };\n }\n return respond(runtime, message, 'NILYO_MESSAGING_SEND_TO_CONTACT', callback, () =>\n nilyoTool(\n runtime,\n 'messaging_send_to_contact',\n compact({ provider: params.provider || 'whatsapp', name: params.name, text: params.text })\n )\n );\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: 'Send Julien a WhatsApp saying the meeting moved to 3pm' } },\n { name: '{{agentName}}', content: { text: 'Sent to Julien on WhatsApp.', actions: ['NILYO_MESSAGING_SEND_TO_CONTACT'] } },\n ],\n ],\n};\n\ninterface MessagingListParams extends Record<string, unknown> {\n provider?: string;\n isUnread?: string;\n}\n\nexport const messagingListChatsAction: Action = {\n name: 'NILYO_MESSAGING_LIST_CHATS',\n similes: ['LIST_WHATSAPP_CHATS', 'LIST_CONVERSATIONS'],\n description: 'List recent WhatsApp, Instagram or Telegram chats, optionally filtered to unread only.',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n if (!state) return { success: false, error: new Error('State is required') };\n const params = await extractParams<MessagingListParams>(\n runtime,\n state,\n `Extract chat-list filters.\n<response>\n <provider>whatsapp, instagram or telegram — empty if not stated (every connected provider)</provider>\n <isUnread>true if the user only wants unread chats, otherwise empty</isUnread>\n</response>`\n );\n return respond(runtime, message, 'NILYO_MESSAGING_LIST_CHATS', callback, () =>\n nilyoTool(\n runtime,\n 'messaging_list_chats',\n compact({ provider: params?.provider, is_unread: params?.isUnread === 'true' ? true : undefined, limit: 50 })\n )\n );\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: 'Show me my unread WhatsApp chats' } },\n { name: '{{agentName}}', content: { text: 'You have 4 unread WhatsApp chats.', actions: ['NILYO_MESSAGING_LIST_CHATS'] } },\n ],\n ],\n};\n\ninterface EmailListParams extends Record<string, unknown> {\n folderId?: string;\n}\n\nexport const emailListAction: Action = {\n name: 'NILYO_EMAIL_LIST',\n similes: ['LIST_EMAILS', 'CHECK_INBOX'],\n description: 'List recent emails from the connected Gmail, Outlook or IMAP mailbox.',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n const params = state\n ? await extractParams<EmailListParams>(\n runtime,\n state,\n `Extract an optional exact folder ID if the user named one (from a prior email_list_folders result).\n<response>\n <folderId>the exact folder ID, empty if not stated (defaults to the inbox)</folderId>\n</response>`\n )\n : null;\n return respond(runtime, message, 'NILYO_EMAIL_LIST', callback, () =>\n nilyoTool(runtime, 'email_list_messages', compact({ folder_id: params?.folderId, limit: 20 }))\n );\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: \"What's in my inbox?\" } },\n { name: '{{agentName}}', content: { text: 'You have 5 new emails, the latest from Acme Billing.', actions: ['NILYO_EMAIL_LIST'] } },\n ],\n ],\n};\n\ninterface EmailSendParams extends Record<string, unknown> {\n to?: string;\n cc?: string;\n bcc?: string;\n subject?: string;\n body?: string;\n}\n\nexport const emailSendAction: Action = {\n name: 'NILYO_EMAIL_SEND',\n similes: ['SEND_EMAIL', 'REPLY_TO_EMAIL'],\n description: 'Send an email from the connected Gmail, Outlook or IMAP mailbox.',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n if (!state) return { success: false, error: new Error('State is required') };\n const params = await extractParams<EmailSendParams>(\n runtime,\n state,\n `Extract the email to send.\n<response>\n <to>comma-separated recipient addresses, empty if not found</to>\n <cc>comma-separated CC addresses, empty if none</cc>\n <bcc>comma-separated BCC addresses, empty if none</bcc>\n <subject>the subject line, empty if not found</subject>\n <body>the plain-text body, empty if not found</body>\n</response>`\n );\n if (!params?.to || !params?.body) {\n const text = 'Who should I email, and what should it say?';\n if (callback) await callback({ text, actions: ['NILYO_EMAIL_SEND'], source: message.content.source });\n return { success: false, text };\n }\n const addresses = (value: string) => value.split(',').map((email) => email.trim()).filter(Boolean).map((email) => ({ email }));\n return respond(runtime, message, 'NILYO_EMAIL_SEND', callback, () =>\n nilyoTool(\n runtime,\n 'email_send',\n compact({\n to: addresses(params.to as string),\n cc: params.cc ? addresses(params.cc as string) : undefined,\n bcc: params.bcc ? addresses(params.bcc as string) : undefined,\n subject: params.subject,\n plain_text: params.body,\n })\n )\n );\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: 'Email jane@acme.com subject Follow-up saying thanks for the call today' } },\n { name: '{{agentName}}', content: { text: 'Email sent to jane@acme.com.', actions: ['NILYO_EMAIL_SEND'] } },\n ],\n ],\n};\n\nexport const calendarListCalendarsAction: Action = {\n name: 'NILYO_CALENDAR_LIST_CALENDARS',\n similes: ['LIST_CALENDARS'],\n description: 'List the calendars available on the connected calendar account.',\n validate: hasToken,\n handler: async (runtime, message, _state, _options, callback): Promise<ActionResult> =>\n respond(runtime, message, 'NILYO_CALENDAR_LIST_CALENDARS', callback, () => nilyoTool(runtime, 'calendar_list_calendars', {})),\n examples: [\n [\n { name: '{{userName}}', content: { text: 'What calendars do I have connected?' } },\n { name: '{{agentName}}', content: { text: 'You have \"Work\" and \"Personal\" calendars connected.', actions: ['NILYO_CALENDAR_LIST_CALENDARS'] } },\n ],\n ],\n};\n\ninterface CallToolParams extends Record<string, unknown> {\n toolName?: string;\n argumentsJson?: string;\n}\n\nexport const callToolAction: Action = {\n name: 'NILYO_CALL_TOOL',\n similes: ['NILYO_TOOL', 'CALL_NILYO_TOOL'],\n description:\n 'Call any Nilyo MCP tool by exact name for requests the other Nilyo actions do not cover (invitations list, post comments/reactions, IMAP folders, webhook destinations, billing, etc). Use exact provider IDs already resolved in the conversation; never invent one.',\n validate: hasToken,\n handler: async (runtime, message, state, _options, callback): Promise<ActionResult> => {\n if (!state) return { success: false, error: new Error('State is required') };\n const params = await extractParams<CallToolParams>(\n runtime,\n state,\n `Extract the exact Nilyo MCP tool name to call and its JSON arguments object.\n<response>\n <toolName>exact tool name, e.g. linkedin_list_invitations, empty if unclear</toolName>\n <argumentsJson>a JSON object of arguments, {} if none</argumentsJson>\n</response>`\n );\n if (!params?.toolName) {\n const text = 'Which Nilyo tool should I call?';\n if (callback) await callback({ text, actions: ['NILYO_CALL_TOOL'], source: message.content.source });\n return { success: false, text };\n }\n let args: Record<string, unknown> = {};\n try {\n args = params.argumentsJson ? (JSON.parse(params.argumentsJson) as Record<string, unknown>) : {};\n } catch {\n const text = `Could not parse the arguments for ${params.toolName} as JSON.`;\n if (callback) await callback({ text, actions: ['NILYO_CALL_TOOL'], source: message.content.source });\n return { success: false, text };\n }\n return respond(runtime, message, 'NILYO_CALL_TOOL', callback, () => nilyoTool(runtime, params.toolName as string, args));\n },\n examples: [\n [\n { name: '{{userName}}', content: { text: 'List my pending LinkedIn invitations' } },\n { name: '{{agentName}}', content: { text: 'You have 2 pending invitations.', actions: ['NILYO_CALL_TOOL'] } },\n ],\n ],\n};\n\nexport const nilyoActions: Action[] = [\n listAccountsAction,\n linkedinGetProfileAction,\n linkedinSearchPeopleAction,\n linkedinSendInvitationAction,\n messagingSendToContactAction,\n messagingListChatsAction,\n emailListAction,\n emailSendAction,\n calendarListCalendarsAction,\n callToolAction,\n];\n",
7
+ "import type { IAgentRuntime } from '@elizaos/core';\n\n/** Remove empty optional fields so the MCP schema validation only sees what was filled in. */\nexport function compact<T extends Record<string, unknown>>(input: T): Partial<T> {\n const out: Partial<T> = {};\n for (const [key, value] of Object.entries(input)) {\n if (value === undefined || value === null || value === '') continue;\n if (Array.isArray(value) && value.length === 0) continue;\n (out as Record<string, unknown>)[key] = value;\n }\n return out;\n}\n\n/** JSON-RPC call to the Nilyo MCP endpoint with the configured personal token. */\nexport async function nilyoRpc(\n runtime: IAgentRuntime,\n method: string,\n params: Record<string, unknown> = {}\n): Promise<Record<string, unknown>> {\n const token = runtime.getSetting('NILYO_API_TOKEN');\n if (!token) {\n throw new Error(\n 'NILYO_API_TOKEN is not configured. Create a personal token from https://nilyo.com/account -> Agent access and set it in this character/agent config.'\n );\n }\n const baseUrl = String(runtime.getSetting('NILYO_BASE_URL') || 'https://nilyo.com').replace(/\\/$/, '');\n const response = await fetch(`${baseUrl}/mcp`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method, params }),\n });\n if (!response.ok) {\n throw new Error(`Nilyo MCP request failed: ${response.status} ${response.statusText}`);\n }\n const json = (await response.json()) as { result?: Record<string, unknown>; error?: { message?: string } };\n if (json.error) {\n throw new Error(json.error.message ?? 'Nilyo MCP error');\n }\n return json.result ?? {};\n}\n\n/**\n * Call one Nilyo tool. Structured next-step actions (connect_account, reconnect_account, subscribe,\n * choose_account…) are returned as data with `action` set so the caller can surface them instead of\n * treating a missing/expired connection as a hard failure.\n */\nexport async function nilyoTool(\n runtime: IAgentRuntime,\n name: string,\n args: Record<string, unknown>\n): Promise<Record<string, unknown>> {\n const result = await nilyoRpc(runtime, 'tools/call', { name, arguments: args });\n const content = (result.content as Array<{ type: string; text?: string }> | undefined) ?? [];\n const text = content.find((item) => item.type === 'text')?.text ?? '';\n if (result.isError) {\n const structured = result.structuredContent as Record<string, unknown> | undefined;\n const error = (structured?.error as Record<string, unknown> | undefined) ?? {};\n const nextTools = error.next_tools as string[] | undefined;\n throw new Error(\n `${String(error.message ?? text ?? 'Nilyo tool failed')}${nextTools ? ` (next: ${nextTools.join(', ')})` : ''}`\n );\n }\n if (result.structuredContent !== undefined && result.structuredContent !== null) {\n return result.structuredContent as Record<string, unknown>;\n }\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch {\n return { text };\n }\n}\n",
8
+ "import {\n composePromptFromState,\n ModelType,\n parseKeyValueXml,\n type IAgentRuntime,\n type State,\n} from '@elizaos/core';\n\n/**\n * Extracts structured parameters from the conversation with a small text model, following the same\n * `{{recentMessages}}` + XML-response pattern used by `@elizaos/plugin-bootstrap`'s own actions\n * (e.g. `SEND_MESSAGE`'s target extraction). Returns `null` when the model output does not parse.\n */\nexport async function extractParams<T extends Record<string, unknown>>(\n runtime: IAgentRuntime,\n state: State,\n instructions: string\n): Promise<T | null> {\n const template = `# Task: Extract parameters for a Nilyo agent action\n\n# Recent Messages:\n{{recentMessages}}\n\n# Instructions:\n${instructions}\n\nDo NOT include any thinking, reasoning, or <think> sections in your response. Go directly to the XML\nresponse format without any preamble or explanation. Leave a field empty (\\`<field></field>\\`) rather\nthan guessing when the conversation does not say.`;\n\n const prompt = composePromptFromState({ state, template });\n const raw = await runtime.useModel(ModelType.TEXT_SMALL, { prompt, stopSequences: [] });\n return parseKeyValueXml<T>(raw);\n}\n",
9
+ "import type { IAgentRuntime, Memory, Provider, ProviderResult, State } from '@elizaos/core';\nimport { logger } from '@elizaos/core';\nimport { nilyoTool } from './nilyoClient';\n\n/**\n * Surfaces the user's connected Nilyo accounts so the agent never has to guess between two accounts\n * of the same provider: it can see display names/providers up front and pass an exact `account_id`\n * through NILYO_CALL_TOOL when more than one match exists, instead of asking or picking arbitrarily.\n */\nexport const connectedAccountsProvider: Provider = {\n name: 'NILYO_CONNECTED_ACCOUNTS',\n description: 'The LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts connected to Nilyo',\n dynamic: true,\n\n get: async (runtime: IAgentRuntime, _message: Memory, _state: State | undefined): Promise<ProviderResult> => {\n if (!runtime.getSetting('NILYO_API_TOKEN')) {\n return { text: '', values: {}, data: {} };\n }\n try {\n const result = await nilyoTool(runtime, 'list_connected_accounts', {});\n const accounts = (Array.isArray(result) ? result : (result.accounts as unknown[]) ?? []) as Array<\n Record<string, unknown>\n >;\n if (accounts.length === 0) {\n return { text: 'No Nilyo accounts are connected yet.', values: { nilyoAccounts: [] }, data: { accounts } };\n }\n const lines = accounts.map(\n (a) => `- ${String(a.provider ?? '?')}: ${String(a.name ?? a.display_name ?? a.unipile_account_id ?? '?')}`\n );\n return {\n text: `Connected Nilyo accounts:\\n${lines.join('\\n')}`,\n values: { nilyoAccounts: accounts },\n data: { accounts },\n };\n } catch (error) {\n logger.warn({ error }, 'NILYO_CONNECTED_ACCOUNTS provider failed');\n return { text: '', values: {}, data: {} };\n }\n },\n};\n",
10
+ "import type { IAgentRuntime, TestSuite } from '@elizaos/core';\n\n/**\n * E2E suite run by `elizaos test e2e` inside a real runtime with the plugin loaded. Kept to\n * deterministic wiring checks (registration, config gating) rather than real model completions,\n * since e2e runs are not guaranteed to have an LLM provider key configured.\n */\nexport const NilyoPluginTestSuite: TestSuite = {\n name: 'plugin_nilyo_test_suite',\n tests: [\n {\n name: 'nilyo_actions_are_registered',\n fn: async (runtime: IAgentRuntime) => {\n const expected = [\n 'NILYO_LIST_ACCOUNTS',\n 'NILYO_LINKEDIN_GET_PROFILE',\n 'NILYO_LINKEDIN_SEARCH_PEOPLE',\n 'NILYO_LINKEDIN_SEND_INVITATION',\n 'NILYO_MESSAGING_SEND_TO_CONTACT',\n 'NILYO_MESSAGING_LIST_CHATS',\n 'NILYO_EMAIL_LIST',\n 'NILYO_EMAIL_SEND',\n 'NILYO_CALENDAR_LIST_CALENDARS',\n 'NILYO_CALL_TOOL',\n ];\n const registered = new Set((runtime.actions ?? []).map((a) => a.name));\n for (const name of expected) {\n if (!registered.has(name)) {\n throw new Error(`Expected action ${name} to be registered in the runtime`);\n }\n }\n },\n },\n {\n name: 'nilyo_connected_accounts_provider_is_registered',\n fn: async (runtime: IAgentRuntime) => {\n const registered = (runtime.providers ?? []).some((p) => p.name === 'NILYO_CONNECTED_ACCOUNTS');\n if (!registered) {\n throw new Error('Expected NILYO_CONNECTED_ACCOUNTS provider to be registered in the runtime');\n }\n },\n },\n {\n name: 'nilyo_actions_are_gated_on_NILYO_API_TOKEN',\n fn: async (runtime: IAgentRuntime) => {\n const action = (runtime.actions ?? []).find((a) => a.name === 'NILYO_LIST_ACCOUNTS');\n if (!action) throw new Error('NILYO_LIST_ACCOUNTS action not found');\n const hasToken = Boolean(runtime.getSetting('NILYO_API_TOKEN'));\n // Without asserting a specific config here, just confirm validate() reflects the setting\n // rather than always returning true — a regression that would make the action selectable\n // with no way to actually call the Nilyo MCP.\n const valid = await action.validate(runtime, {} as any, undefined);\n if (valid !== hasToken) {\n throw new Error(\n `Expected NILYO_LIST_ACCOUNTS.validate() (${valid}) to match whether NILYO_API_TOKEN is set (${hasToken})`\n );\n }\n },\n },\n ],\n};\n\nexport default NilyoPluginTestSuite;\n",
11
+ "import { nilyoPlugin } from './plugin.ts';\n\nexport { nilyoPlugin } from './plugin.ts';\nexport default nilyoPlugin;\n"
12
+ ],
13
+ "mappings": "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",
14
+ "debugId": "BA4ADD4D832B39E564756E2164756E21",
15
+ "names": []
16
+ }
@@ -0,0 +1,13 @@
1
+ import type { Action } from '@elizaos/core';
2
+ export declare const listAccountsAction: Action;
3
+ export declare const linkedinGetProfileAction: Action;
4
+ export declare const linkedinSearchPeopleAction: Action;
5
+ export declare const linkedinSendInvitationAction: Action;
6
+ export declare const messagingSendToContactAction: Action;
7
+ export declare const messagingListChatsAction: Action;
8
+ export declare const emailListAction: Action;
9
+ export declare const emailSendAction: Action;
10
+ export declare const calendarListCalendarsAction: Action;
11
+ export declare const callToolAction: Action;
12
+ export declare const nilyoActions: Action[];
13
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAA+D,MAAM,eAAe,CAAC;AA0CzG,eAAO,MAAM,kBAAkB,EAAE,MAchC,CAAC;AAMF,eAAO,MAAM,wBAAwB,EAAE,MA+BtC,CAAC;AAMF,eAAO,MAAM,0BAA0B,EAAE,MA8BxC,CAAC;AAOF,eAAO,MAAM,4BAA4B,EAAE,MAkC1C,CAAC;AAQF,eAAO,MAAM,4BAA4B,EAAE,MAqC1C,CAAC;AAOF,eAAO,MAAM,wBAAwB,EAAE,MA8BtC,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,MA0B7B,CAAC;AAUF,eAAO,MAAM,eAAe,EAAE,MA6C7B,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAazC,CAAC;AAOF,eAAO,MAAM,cAAc,EAAE,MAsC5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,EAWhC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { nilyoPlugin } from './plugin.ts';
2
+ export { nilyoPlugin } from './plugin.ts';
3
+ export default nilyoPlugin;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,eAAe,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { IAgentRuntime } from '@elizaos/core';
2
+ /** Remove empty optional fields so the MCP schema validation only sees what was filled in. */
3
+ export declare function compact<T extends Record<string, unknown>>(input: T): Partial<T>;
4
+ /** JSON-RPC call to the Nilyo MCP endpoint with the configured personal token. */
5
+ export declare function nilyoRpc(runtime: IAgentRuntime, method: string, params?: Record<string, unknown>): Promise<Record<string, unknown>>;
6
+ /**
7
+ * Call one Nilyo tool. Structured next-step actions (connect_account, reconnect_account, subscribe,
8
+ * choose_account…) are returned as data with `action` set so the caller can surface them instead of
9
+ * treating a missing/expired connection as a hard failure.
10
+ */
11
+ export declare function nilyoTool(runtime: IAgentRuntime, name: string, args: Record<string, unknown>): Promise<Record<string, unknown>>;
12
+ //# sourceMappingURL=nilyoClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nilyoClient.d.ts","sourceRoot":"","sources":["../../src/nilyoClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ/E;AAED,kFAAkF;AAClF,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBlC;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoBlC"}
@@ -0,0 +1,8 @@
1
+ import { type IAgentRuntime, type State } from '@elizaos/core';
2
+ /**
3
+ * Extracts structured parameters from the conversation with a small text model, following the same
4
+ * `{{recentMessages}}` + XML-response pattern used by `@elizaos/plugin-bootstrap`'s own actions
5
+ * (e.g. `SEND_MESSAGE`'s target extraction). Returns `null` when the model output does not parse.
6
+ */
7
+ export declare function extractParams<T extends Record<string, unknown>>(runtime: IAgentRuntime, state: State, instructions: string): Promise<T | null>;
8
+ //# sourceMappingURL=params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAgBnB"}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from '@elizaos/core';
2
+ export declare const nilyoPlugin: Plugin;
3
+ export default nilyoPlugin;
4
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAuB5C,eAAO,MAAM,WAAW,EAAE,MA0BzB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Provider } from '@elizaos/core';
2
+ /**
3
+ * Surfaces the user's connected Nilyo accounts so the agent never has to guess between two accounts
4
+ * of the same provider: it can see display names/providers up front and pass an exact `account_id`
5
+ * through NILYO_CALL_TOOL when more than one match exists, instead of asking or picking arbitrarily.
6
+ */
7
+ export declare const connectedAccountsProvider: Provider;
8
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAI5F;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,QA8BvC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { TestSuite } from '@elizaos/core';
2
+ /**
3
+ * E2E suite run by `elizaos test e2e` inside a real runtime with the plugin loaded. Kept to
4
+ * deterministic wiring checks (registration, config gating) rather than real model completions,
5
+ * since e2e runs are not guaranteed to have an LLM provider key configured.
6
+ */
7
+ export declare const NilyoPluginTestSuite: TestSuite;
8
+ export default NilyoPluginTestSuite;
9
+ //# sourceMappingURL=tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/tests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAqDlC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ {"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.es2024.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2024.collection.d.ts","../node_modules/typescript/lib/lib.es2024.object.d.ts","../node_modules/typescript/lib/lib.es2024.promise.d.ts","../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2024.string.d.ts","../node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.promise.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.esnext.error.d.ts","../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@elizaos/core/dist/types/environment.d.ts","../node_modules/@elizaos/core/dist/types/primitives.d.ts","../node_modules/@elizaos/core/dist/types/memory.d.ts","../node_modules/@elizaos/core/dist/types/knowledge.d.ts","../node_modules/@elizaos/core/dist/types/agent.d.ts","../node_modules/@elizaos/core/dist/types/task.d.ts","../node_modules/@elizaos/core/dist/types/database.d.ts","../node_modules/@elizaos/core/dist/services/message-service.d.ts","../node_modules/@elizaos/core/dist/types/elizaos.d.ts","../node_modules/@elizaos/core/dist/logger.d.ts","../node_modules/@elizaos/core/dist/types/messaging.d.ts","../node_modules/@elizaos/core/dist/types/model.d.ts","../node_modules/@elizaos/core/dist/types/events.d.ts","../node_modules/@elizaos/core/dist/types/service.d.ts","../node_modules/@elizaos/core/dist/types/testing.d.ts","../node_modules/@elizaos/core/dist/types/plugin.d.ts","../node_modules/@elizaos/core/dist/types/runtime.d.ts","../node_modules/@elizaos/core/dist/types/components.d.ts","../node_modules/@elizaos/core/dist/types/state.d.ts","../node_modules/@elizaos/core/dist/types/tee.d.ts","../node_modules/@elizaos/core/dist/types/settings.d.ts","../node_modules/@elizaos/core/dist/types/streaming.d.ts","../node_modules/@elizaos/core/dist/types/index.d.ts","../node_modules/@elizaos/core/dist/utils.d.ts","../node_modules/zod/v4/core/json-schema.d.cts","../node_modules/zod/v4/core/standard-schema.d.cts","../node_modules/zod/v4/core/registries.d.cts","../node_modules/zod/v4/core/to-json-schema.d.cts","../node_modules/zod/v4/core/util.d.cts","../node_modules/zod/v4/core/versions.d.cts","../node_modules/zod/v4/core/schemas.d.cts","../node_modules/zod/v4/core/checks.d.cts","../node_modules/zod/v4/core/errors.d.cts","../node_modules/zod/v4/core/core.d.cts","../node_modules/zod/v4/core/parse.d.cts","../node_modules/zod/v4/core/regexes.d.cts","../node_modules/zod/v4/locales/ar.d.cts","../node_modules/zod/v4/locales/az.d.cts","../node_modules/zod/v4/locales/be.d.cts","../node_modules/zod/v4/locales/bg.d.cts","../node_modules/zod/v4/locales/ca.d.cts","../node_modules/zod/v4/locales/cs.d.cts","../node_modules/zod/v4/locales/da.d.cts","../node_modules/zod/v4/locales/de.d.cts","../node_modules/zod/v4/locales/en.d.cts","../node_modules/zod/v4/locales/eo.d.cts","../node_modules/zod/v4/locales/es.d.cts","../node_modules/zod/v4/locales/fa.d.cts","../node_modules/zod/v4/locales/fi.d.cts","../node_modules/zod/v4/locales/fr.d.cts","../node_modules/zod/v4/locales/fr-CA.d.cts","../node_modules/zod/v4/locales/he.d.cts","../node_modules/zod/v4/locales/hu.d.cts","../node_modules/zod/v4/locales/hy.d.cts","../node_modules/zod/v4/locales/id.d.cts","../node_modules/zod/v4/locales/is.d.cts","../node_modules/zod/v4/locales/it.d.cts","../node_modules/zod/v4/locales/ja.d.cts","../node_modules/zod/v4/locales/ka.d.cts","../node_modules/zod/v4/locales/kh.d.cts","../node_modules/zod/v4/locales/km.d.cts","../node_modules/zod/v4/locales/ko.d.cts","../node_modules/zod/v4/locales/lt.d.cts","../node_modules/zod/v4/locales/mk.d.cts","../node_modules/zod/v4/locales/ms.d.cts","../node_modules/zod/v4/locales/nl.d.cts","../node_modules/zod/v4/locales/no.d.cts","../node_modules/zod/v4/locales/ota.d.cts","../node_modules/zod/v4/locales/ps.d.cts","../node_modules/zod/v4/locales/pl.d.cts","../node_modules/zod/v4/locales/pt.d.cts","../node_modules/zod/v4/locales/ru.d.cts","../node_modules/zod/v4/locales/sl.d.cts","../node_modules/zod/v4/locales/sv.d.cts","../node_modules/zod/v4/locales/ta.d.cts","../node_modules/zod/v4/locales/th.d.cts","../node_modules/zod/v4/locales/tr.d.cts","../node_modules/zod/v4/locales/ua.d.cts","../node_modules/zod/v4/locales/uk.d.cts","../node_modules/zod/v4/locales/ur.d.cts","../node_modules/zod/v4/locales/uz.d.cts","../node_modules/zod/v4/locales/vi.d.cts","../node_modules/zod/v4/locales/zh-CN.d.cts","../node_modules/zod/v4/locales/zh-TW.d.cts","../node_modules/zod/v4/locales/yo.d.cts","../node_modules/zod/v4/locales/index.d.cts","../node_modules/zod/v4/core/doc.d.cts","../node_modules/zod/v4/core/api.d.cts","../node_modules/zod/v4/core/json-schema-processors.d.cts","../node_modules/zod/v4/core/json-schema-generator.d.cts","../node_modules/zod/v4/core/index.d.cts","../node_modules/zod/v4/classic/errors.d.cts","../node_modules/zod/v4/classic/parse.d.cts","../node_modules/zod/v4/classic/schemas.d.cts","../node_modules/zod/v4/classic/checks.d.cts","../node_modules/zod/v4/classic/compat.d.cts","../node_modules/zod/v4/classic/from-json-schema.d.cts","../node_modules/zod/v4/classic/iso.d.cts","../node_modules/zod/v4/classic/coerce.d.cts","../node_modules/zod/v4/classic/external.d.cts","../node_modules/zod/index.d.cts","../node_modules/@elizaos/core/dist/schemas/character.d.ts","../node_modules/@elizaos/core/dist/character.d.ts","../node_modules/@elizaos/core/dist/utils/environment.d.ts","../node_modules/@elizaos/core/dist/utils/buffer.d.ts","../node_modules/@elizaos/core/dist/streaming-context.d.ts","../node_modules/@elizaos/core/dist/utils/streaming.d.ts","../node_modules/@elizaos/core/dist/utils/paths.d.ts","../node_modules/@elizaos/core/dist/actions.d.ts","../node_modules/@elizaos/core/dist/database.d.ts","../node_modules/@elizaos/core/dist/entities.d.ts","../node_modules/@elizaos/core/dist/memory.d.ts","../node_modules/@elizaos/core/dist/prompts.d.ts","../node_modules/@elizaos/core/dist/roles.d.ts","../node_modules/@elizaos/core/dist/runtime.d.ts","../node_modules/@elizaos/core/dist/secrets.d.ts","../node_modules/@elizaos/core/dist/settings.d.ts","../node_modules/@elizaos/core/dist/services.d.ts","../node_modules/@elizaos/core/dist/services/default-message-service.d.ts","../node_modules/@elizaos/core/dist/search.d.ts","../node_modules/@elizaos/core/dist/elizaos.d.ts","../node_modules/@elizaos/core/dist/utils/server-health.d.ts","../node_modules/@elizaos/core/dist/index.d.ts","../src/nilyoClient.ts","../src/params.ts","../src/actions.ts","../src/provider.ts","../src/tests.ts","../src/plugin.ts","../src/index.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/blob.d.ts","../node_modules/@types/node/web-globals/console.d.ts","../node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/encoding.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/undici-types/utility.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client-stats.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/round-robin-pool.d.ts","../node_modules/undici-types/h2c-client.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/dispatcher1-wrapper.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-call-history.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/snapshot-agent.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/socks5-proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cache-interceptor.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/web-globals/importmeta.d.ts","../node_modules/@types/node/web-globals/messaging.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/performance.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/web-globals/streams.d.ts","../node_modules/@types/node/web-globals/timers.d.ts","../node_modules/@types/node/web-globals/url.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/ffi.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/inspector/promises.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/path/posix.d.ts","../node_modules/@types/node/path/win32.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/quic.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/iter.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/test/reporters.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/util/types.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vfs.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/zlib/iter.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cors/index.d.ts","../node_modules/@types/diff-match-patch/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/multer/index.d.ts","../node_modules/@types/ws/index.d.ts"],"fileIdsList":[[104,213,278,286,291,294,296,297,298,310],[89,91,104,105,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,213,278,286,291,294,296,297,298,310],[213,278,286,291,294,296,297,298,310],[89,91,104,213,278,286,291,294,296,297,298,310],[82,83,86,182,213,278,286,291,294,296,297,298,310],[82,83,84,89,98,99,213,278,286,291,294,296,297,298,310],[82,83,84,98,99,100,213,278,286,291,294,296,297,298,310],[83,85,100,213,278,286,291,294,296,297,298,310],[83,84,98,100,213,278,286,291,294,296,297,298,310],[82,83,84,86,87,213,278,286,291,294,296,297,298,310],[83,84,86,89,98,100,213,278,286,291,294,296,297,298,310],[83,213,278,286,291,294,296,297,298,310],[82,83,84,92,93,98,99,213,278,286,291,294,296,297,298,310],[82,83,84,85,86,87,88,90,92,93,94,95,96,97,98,99,100,101,102,103,213,278,286,291,294,296,297,298,310],[83,84,213,278,286,291,294,296,297,298,310],[83,84,98,213,278,286,291,294,296,297,298,310],[98,213,278,286,291,294,296,297,298,310],[86,88,93,94,95,96,98,99,213,278,286,291,294,296,297,298,310],[82,213,278,286,291,294,296,297,298,310],[82,83,84,86,87,88,89,90,91,92,93,94,95,97,99,100,213,278,286,291,294,296,297,298,310],[83,98,213,278,286,291,294,296,297,298,310],[82,99,213,278,286,291,294,296,297,298,310],[103,104,187,213,278,286,291,294,296,297,298,310],[213,278,286,291,293,294,296,297,298,310,338,339],[213,278,286,291,293,294,296,297,298,310,338],[213,278,286,289,291,293,294,296,297,298,310,338,344,345,346],[213,278,286,291,294,296,297,298,310,340,347,349],[213,278,286,291,294,296,297,298,310,315,350],[213,275,276,278,286,291,294,296,297,298,310],[213,277,278,286,291,294,296,297,298,310],[278,286,291,294,296,297,298,310],[213,278,286,291,294,296,297,298,310,319],[213,278,279,284,286,289,291,294,296,297,298,300,310,315,328],[213,278,279,280,286,289,291,294,296,297,298,310],[213,278,281,286,291,294,296,297,298,310,329],[213,278,282,283,286,291,294,296,297,298,301,310],[213,278,283,286,291,294,296,297,298,310,315,325],[213,278,284,286,289,291,294,296,297,298,300,310],[213,277,278,285,286,291,294,296,297,298,310],[213,278,286,287,291,294,296,297,298,310],[213,278,286,288,289,291,294,296,297,298,310],[213,277,278,286,289,291,294,296,297,298,310],[213,278,286,289,291,292,294,296,297,298,310,315,328],[213,278,286,289,291,292,294,296,297,298,310,317,319],[213,265,278,286,289,291,293,294,296,297,298,300,310,315,328],[213,278,286,289,291,293,294,296,297,298,300,310,315,325,328],[213,278,286,291,293,294,295,296,297,298,310,315,325,328],[212,213,214,215,216,217,218,219,220,221,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337],[213,278,286,289,291,294,296,297,298,310],[213,278,286,291,294,296,298,310],[213,278,286,291,294,296,297,298,299,310,328],[213,278,286,289,291,294,296,297,298,300,310,315],[213,278,286,291,294,296,297,298,301,310],[213,278,286,291,294,296,297,298,302,310],[213,278,286,289,291,294,296,297,298,305,310],[213,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336],[213,278,286,291,294,296,297,298,307,310],[213,278,286,291,294,296,297,298,308,310],[213,278,283,286,291,292,294,296,297,298,300,310,317,325],[213,278,286,289,291,294,296,297,298,310,311],[213,278,286,291,294,296,297,298,310,312,329,333],[213,278,286,289,291,294,296,297,298,310,315,317,318,319],[213,278,286,291,294,296,297,298,310,316,319],[213,278,286,289,291,294,296,297,298,310,315,317],[213,278,286,289,291,294,296,297,298,310,315,318,319],[213,278,286,291,294,296,297,298,310,319,329],[213,278,286,291,294,296,297,298,310,320],[213,275,278,286,291,294,296,297,298,310,315,322,328],[213,278,286,291,294,296,297,298,310,315,321],[213,278,286,289,291,294,296,297,298,310,323,324],[213,278,286,291,294,296,297,298,310,323,324],[213,278,283,286,291,294,296,297,298,300,310,315,325],[213,278,286,291,294,296,297,298,310,326],[213,278,286,291,294,296,297,298,300,310,327],[213,278,286,291,293,294,296,297,298,308,310,328],[213,278,286,291,294,296,297,298,310,329,330],[213,278,283,286,291,294,296,297,298,310,330],[213,278,286,291,294,296,297,298,310,315,331],[213,278,286,291,292,294,296,297,298,310],[213,278,286,291,294,296,297,298,299,310,333],[213,278,286,291,294,296,297,298,310,334],[213,278,281,286,291,294,296,297,298,310],[213,278,283,286,291,294,296,297,298,310],[213,278,286,291,294,296,297,298,310,329],[213,265,278,286,291,294,296,297,298,310],[213,278,286,291,294,296,297,298,310,328],[213,278,286,291,294,296,297,298,310,335],[213,278,286,291,294,296,297,298,305,310],[213,278,286,291,294,296,297,298,310,324],[213,265,278,286,289,291,292,294,296,297,298,300,305,310,315,319,328,331,333,335],[213,278,286,291,294,296,297,298,310,315,336],[213,278,286,291,294,296,297,298,310,317,337],[213,278,286,291,294,296,297,298,310,315,338],[213,278,286,291,293,294,296,297,298,310,338,348],[213,278,286,289,291,293,294,295,296,297,298,300,310,315,325,328,336,338],[213,228,231,234,235,278,286,291,294,296,297,298,310,328],[213,231,278,286,291,294,296,297,298,310,315,328],[213,231,235,278,286,291,294,296,297,298,310,328],[213,278,286,291,294,296,297,298,310,315],[213,225,278,286,291,294,296,297,298,310],[213,229,278,286,291,294,296,297,298,310],[213,227,228,231,278,286,291,294,296,297,298,310,328],[213,278,286,291,294,296,297,298,300,310,325],[213,278,286,291,294,296,297,298,310,338],[213,225,278,286,291,294,296,297,298,310,338],[213,227,231,278,286,291,294,296,297,298,300,310,328],[213,222,223,224,226,230,278,286,289,291,294,296,297,298,310,315,328],[213,231,278,286,291,294,296,297,298,310],[213,231,240,249,278,286,291,294,296,297,298,310],[213,223,229,278,286,291,294,296,297,298,310],[213,231,259,260,278,286,291,294,296,297,298,310],[213,223,226,231,278,286,291,294,296,297,298,310,319,328,338],[213,227,231,278,286,291,294,296,297,298,310,328],[213,222,278,286,291,294,296,297,298,310],[213,225,226,227,229,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,260,261,262,263,264,278,286,291,294,296,297,298,310],[213,231,252,255,278,286,291,294,296,297,298,310],[213,231,240,242,243,278,286,291,294,296,297,298,310],[213,229,231,242,244,278,286,291,294,296,297,298,310],[213,230,278,286,291,294,296,297,298,310],[213,223,225,231,278,286,291,294,296,297,298,310],[213,231,235,242,244,278,286,291,294,296,297,298,310],[213,235,278,286,291,294,296,297,298,310],[213,229,231,234,278,286,291,294,296,297,298,310,328],[213,223,227,231,240,278,286,291,294,296,297,298,310],[213,231,252,278,286,291,294,296,297,298,310],[213,244,278,286,291,294,296,297,298,310],[213,223,227,231,235,278,286,291,294,296,297,298,310],[213,225,231,259,278,286,291,294,296,297,298,310,319,335,338],[181,213,278,286,291,294,296,297,298,310],[172,213,278,286,291,294,296,297,298,310],[172,175,213,278,286,291,294,296,297,298,310],[167,170,172,173,174,175,176,177,178,179,180,213,278,286,291,294,296,297,298,310],[106,108,175,213,278,286,291,294,296,297,298,310],[172,173,213,278,286,291,294,296,297,298,310],[107,172,174,213,278,286,291,294,296,297,298,310],[108,110,112,113,114,115,213,278,286,291,294,296,297,298,310],[110,112,114,115,213,278,286,291,294,296,297,298,310],[110,112,114,213,278,286,291,294,296,297,298,310],[107,110,112,113,115,213,278,286,291,294,296,297,298,310],[106,108,109,110,111,112,113,114,115,116,117,167,168,169,170,171,213,278,286,291,294,296,297,298,310],[106,108,109,112,213,278,286,291,294,296,297,298,310],[108,109,112,213,278,286,291,294,296,297,298,310],[112,115,213,278,286,291,294,296,297,298,310],[106,107,109,110,111,113,114,115,213,278,286,291,294,296,297,298,310],[106,107,108,112,172,213,278,286,291,294,296,297,298,310],[112,113,114,115,213,278,286,291,294,296,297,298,310],[114,213,278,286,291,294,296,297,298,310],[118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,213,278,286,291,294,296,297,298,310],[204,205,206,213,278,286,291,294,296,297,298,310],[210,213,278,286,291,294,296,297,298,310],[204,213,278,286,291,294,296,297,298,310],[182,204,207,208,209,213,278,286,291,294,296,297,298,310],[204,205,213,278,286,291,294,296,297,298,310]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"48dcfbf6cd90905925564af624a284c0fc5eeba15beb759b3653a0ba6562723d","impliedFormat":99},{"version":"be852146d0e63e34e4a95ce7491772492fdf61e8ed857fce4d47a93f90fbdd95","impliedFormat":99},{"version":"2a0ab6a23c9e9c137525051e8a247dcfc2acf176c5d0b1a476267c82aa9748b9","impliedFormat":99},{"version":"0f27e9e023881413b10d17d017a1a352f91b6ec10a10b4fb813f96ec077e2708","impliedFormat":99},{"version":"3c5a54468c0fef3384609ad670a9826b5211e644845af1cbe4d11d79b5bde3ad","impliedFormat":99},{"version":"66f85f6d1e81d4044ae2e6cfbf80e54978f2ba681e530004dfb8e7a735c71480","impliedFormat":99},{"version":"608e41a0d3c283e3c993488b9fd2ec0c29386ca8c4f2340c0007f80fc2c3517a","impliedFormat":99},{"version":"3084168e5083de230cb72b11db29b3774bbcc0546d3fbc0d62591fb984f8dcce","impliedFormat":99},{"version":"f72271a9501a5e48e96d2e66264db6a245a5d88debeb656ecbd587bb8caaf974","impliedFormat":99},{"version":"47998485d20d10e089db58518ac31542fbe85e80be06ef39788000b7e48a8764","impliedFormat":99},{"version":"a9c41b28373cdac473c7e3622f10bc7a526eba1f36981755a50d5b969289c9da","impliedFormat":99},{"version":"31a33543900f991b8e28e25b9a9a60d6b8d1343e64e1519d9292d097c3172205","impliedFormat":99},{"version":"29f94ed54114c2f7c488426447bfe711805de1045248e0013bc7690e18f8b42a","impliedFormat":99},{"version":"f96f166b3569e8f34cc763fb33f17685c67ce510d94ab48eb6a8abde4de6529a","impliedFormat":99},{"version":"3f1ea54100f7e33396a04a8dc8c79625d354911a7e811f7e746606b8c3b4cb31","impliedFormat":99},{"version":"25234b261d9e45f2d3697d18b4bf4c664cc9e036ae4c08363296453732ec78c5","impliedFormat":99},{"version":"99abdf991441fa63800d7ef1fc9705bb191f5b6eed229a28b8b7b527be69b141","impliedFormat":99},{"version":"b02119115711726cb30f04d0baeca4f4e0fc7c5510f1e87745ffcc9f37cb42f4","impliedFormat":99},{"version":"1046d0d8511232efb90e6500cf445a2bf9028939a04b239ee4a2c402ba00e180","impliedFormat":99},{"version":"b614838d0de94fb9af1d490fa5471f61817b486fd09cd2775a9e72d440135c42","impliedFormat":99},{"version":"35381c2080d6d26dff0711e15d66bf1d25f6530ddc3424a91094cbe8b0fadec9","impliedFormat":99},{"version":"f81d4db7b90117b38ed2bb780d14e0f9f3e82783b8801c3042075838bffe28eb","impliedFormat":99},{"version":"958158eda33d6a76117ca5e02eb474f70b95e229ba2e46d9e17fde57f32974b4","impliedFormat":99},{"version":"085a5711ec8fb4aeae2beea3763ef0562683c91563ac65d321a7679ae87a080d","impliedFormat":99},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},{"version":"18acf24ea4acacbf4dedeed026a3da7bf9789247af1def2eef4132bf6c73adc3","impliedFormat":99},{"version":"54d1fa9d600572a5300c79851ea6ce7d27feb6e1ae5036604a705194e206b931","impliedFormat":99},{"version":"933ff9b236bd4a4b37041c740ffd1d8fb75312c032aa415d7ff8916639aa9514","impliedFormat":99},{"version":"726ee93441575f6b9f90c4bc05a9833395d45db19ae3e2a3c2221e35f01f7a13","impliedFormat":99},{"version":"fafb2e135dcd2aed184338dbf3d0082b29fd6daa9c7ccf5de8b7aff688f90300","impliedFormat":99},{"version":"933ebb0099aa25edfcffda43eb9cc9c05bc55dba0487ea42881f8556b28ca67e","impliedFormat":99},{"version":"4201f2b4063c8af9d742d3c4717422cb1afb90bf7ce19ebe055b70a73f015c21","impliedFormat":99},{"version":"82b7a5d59e9e9b2221c7fc53accd7e8471426498c806498ac21057ed3f22209a","impliedFormat":99},{"version":"5685701900bf2623ea032a5602978ab431d3f7809534b40c04da4d6b58327c9b","impliedFormat":99},{"version":"a90c91ce22e0d7375c5edb08d33e99a9b4cd0f64edbfdcb6f416dd2067a6230b","impliedFormat":99},{"version":"eac35317ecdbbc33806309342ef0f5327a3a964cf581cbb25e8144d373ebc992","impliedFormat":99},{"version":"3e752d9bfd8dcf621b71cbb94fc4b500d6636416e9a7a1a9ccc43570c86e02ec","impliedFormat":99},{"version":"d9983c72f688768b93bc96bd548fedd2dd39bf890806f16f7d89600289cd9196","impliedFormat":99},{"version":"ce2916673e8ec1b538a2ac5c47a482a990a5d3f72998f82a69e38eb2d7283ccb","impliedFormat":99},{"version":"edd07a52588deea29492d295a5cca16d888be63b71c4af2f1a24a9365e18e52d","impliedFormat":99},{"version":"364637c8b561c8e0125c058c8cba45f4725f30874f2a922fb792a16b8e18a01f","impliedFormat":99},{"version":"4d4b68663e9a4a93469ddb17014fa1efe28f192bbe60e1c070f639bc582b1c87","impliedFormat":99},{"version":"0b6e9bcd6a818cc4f38a8fa7ccb5e575b6ccdd1a1a5e020ddae5f3a1ee8f5ee5","impliedFormat":99},{"version":"79a2d4139d02ec247a8159a5ea7118184a49092997da139b248b5db6728fe2df","impliedFormat":99},{"version":"7a2d504753044d6b406e9d23e5b7625d00ae2346af7596d9d4a1a74d3be41501","impliedFormat":99},{"version":"0c3ab9bed566bd4dd0e098a82aea3e4729f0aba272293e38dcffb86d43bdf21d","impliedFormat":99},{"version":"1b319a8cbb21d606a39dbad9e85ea673550b32181d2d1aebe7f5bce394b6afc7","impliedFormat":99},{"version":"5d7eb1d6bd54c9786eced116731ed2701d28b75484ee567e0426b19b7f4e0dca","signature":"dc22485111c8abbf2f5566d2fec5ab763eb76f77a3ccdb35f746618aa0ddbbe3"},{"version":"9d9720c4234e288c2e42a59faed5b63d3efcd0436e6760738536a0c5d9371719","signature":"a5808819c004d84cc9ecfe028a401be0a909bb15ef891b55e4af10bffabff771"},{"version":"c9305860e5189f138c85e7b283293ead3a8f60a269ea69a37f68162afdc8f67e","signature":"a83c866c8223ac90804d4d3a8274b3c5bc05be041017ae1c714030beb2b63536"},{"version":"5bc8de290e35ac85653de4f1503188bd8d0328d1b21ca94d837143cfd842c88a","signature":"16a959716da853cfcaac5f7b2f8916b16924e25fde1e8f0853fdf203e376f2d1"},{"version":"c6c514005631e57673994d83e997f919f3f25bac02ebfee3f9e807611ab031fd","signature":"ae220229c019ff4ad3247184cff75ba71fd500c382ec75cf38c175ca4a51e0c1"},{"version":"b5bf527163188c560fbe3519ed487cd435893e4338b67ccc202c763af96556cc","signature":"a7ca5d19adc3bca2c6dfcf1f49d0c201f7d21f9efb34264f437149f9cc4af2c4"},{"version":"1e10cfd3dedd6b144d628688b7dda31b8cddd872445db84086c1c5ca582f7f2f","signature":"89e98121a3fc884a3211b2e7ceead3851448b874345966ac0c5d04cb3ae6a3b7"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"7db737262597ae2e35daa8cc1748f482cf4b0914e00a3d5a32cf6c4fc869a375","impliedFormat":1},{"version":"9c90f502816bd0179556bb875e86c944af3f6b995cde63199edbe4e0b1219aba","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"ec62d16f95636123624a69191a35b5df44b4b0a6428977e856c5739c0a787471","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"25be1eb939c9c63242c7a45446edb20c40541da967f43f1aa6a00ed53c0552db","impliedFormat":1},{"version":"460627dd2a599c2664d6f9e81ed4765ef520dc2786551d9dcab276df57b98c02","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"93a3b8e57c68e348fc4054b245bd7cf4893225f56c991028844b693c2fa8c03c","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"1b3395fe23460dd30674c940494aaf8422dc6afbc516a72c431404fb97473c3f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"10904d3f5029f1af161add728e02ffd8034988a9e4563a9c7e0b7387b9372da0","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[[205,211]],"options":{"allowImportingTsExtensions":true,"allowJs":true,"checkJs":false,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"inlineSources":true,"jsx":2,"module":200,"noEmitOnError":false,"noImplicitAny":false,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":false,"target":99},"referencedMap":[[190,1],[184,1],[191,1],[202,1],[192,1],[204,2],[91,3],[193,1],[194,3],[195,1],[196,4],[183,5],[201,3],[197,1],[199,1],[200,6],[89,7],[198,1],[187,1],[86,8],[99,9],[88,10],[90,11],[82,12],[94,13],[104,14],[85,15],[84,12],[92,16],[93,17],[97,18],[83,19],[98,20],[95,21],[102,3],[100,22],[103,3],[87,9],[101,12],[96,17],[105,1],[186,3],[185,3],[189,3],[203,3],[188,23],[340,24],[339,25],[341,25],[342,3],[343,3],[347,26],[350,27],[348,3],[351,28],[275,29],[276,29],[277,30],[213,31],[278,32],[279,33],[280,34],[281,35],[282,36],[283,37],[284,38],[285,39],[286,40],[287,40],[288,41],[289,42],[290,3],[291,43],[292,44],[214,3],[212,3],[293,45],[294,46],[295,47],[338,48],[296,49],[297,50],[298,49],[299,51],[300,52],[301,53],[302,54],[303,54],[304,54],[305,55],[306,56],[307,57],[308,58],[309,59],[310,60],[311,60],[312,61],[313,3],[314,3],[315,62],[316,63],[317,64],[318,65],[319,66],[320,67],[321,68],[322,69],[323,70],[324,71],[325,72],[326,73],[327,74],[328,75],[329,76],[330,77],[331,78],[332,79],[333,80],[334,81],[215,49],[216,3],[217,82],[218,83],[219,3],[220,84],[221,3],[266,85],[267,86],[268,87],[269,87],[270,88],[271,3],[272,32],[273,89],[274,86],[335,90],[336,91],[337,92],[345,3],[346,3],[344,93],[349,94],[352,95],[80,3],[81,3],[13,3],[15,3],[14,3],[2,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[3,3],[24,3],[25,3],[4,3],[26,3],[30,3],[27,3],[28,3],[29,3],[31,3],[32,3],[33,3],[5,3],[34,3],[35,3],[36,3],[37,3],[6,3],[41,3],[38,3],[39,3],[40,3],[42,3],[7,3],[43,3],[48,3],[49,3],[44,3],[45,3],[46,3],[47,3],[8,3],[53,3],[50,3],[51,3],[52,3],[54,3],[9,3],[55,3],[56,3],[57,3],[59,3],[58,3],[60,3],[61,3],[10,3],[62,3],[63,3],[64,3],[11,3],[65,3],[66,3],[67,3],[68,3],[69,3],[1,3],[70,3],[71,3],[12,3],[75,3],[73,3],[78,3],[77,3],[72,3],[76,3],[74,3],[79,3],[240,96],[254,97],[237,98],[255,99],[264,100],[228,101],[229,102],[227,103],[263,104],[258,105],[262,106],[231,107],[241,108],[251,109],[230,110],[261,111],[225,112],[226,105],[232,108],[233,3],[239,113],[236,108],[223,114],[265,115],[256,116],[244,117],[243,108],[245,118],[248,119],[242,120],[246,121],[259,104],[234,122],[235,123],[249,124],[224,99],[253,125],[252,108],[238,123],[247,126],[250,127],[257,3],[222,3],[260,128],[182,129],[176,130],[180,131],[177,131],[173,130],[181,132],[178,133],[179,131],[174,134],[175,135],[169,136],[113,137],[115,138],[168,3],[114,139],[172,140],[171,141],[170,142],[106,3],[116,137],[117,3],[108,143],[112,144],[107,3],[109,145],[110,146],[111,3],[118,147],[119,147],[120,147],[121,147],[122,147],[123,147],[124,147],[125,147],[126,147],[127,147],[128,147],[129,147],[130,147],[132,147],[131,147],[133,147],[134,147],[135,147],[136,147],[167,148],[137,147],[138,147],[139,147],[140,147],[141,147],[142,147],[143,147],[144,147],[145,147],[146,147],[147,147],[148,147],[149,147],[151,147],[150,147],[152,147],[153,147],[154,147],[155,147],[156,147],[157,147],[158,147],[159,147],[160,147],[161,147],[162,147],[163,147],[166,147],[164,147],[165,147],[207,149],[211,150],[205,151],[206,151],[210,152],[208,153],[209,151]],"latestChangedDtsFile":"./src/index.d.ts","version":"5.9.3"}
package/package.json ADDED
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "plugin-nilyo",
3
+ "description": "Give the agent access to the user's own LinkedIn, WhatsApp, Instagram, Telegram, Email and Calendar accounts through Nilyo.",
4
+ "version": "0.1.0",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "packageType": "plugin",
10
+ "platform": "node",
11
+ "license": "MIT",
12
+ "author": "arnaudh458",
13
+ "keywords": [
14
+ "plugin",
15
+ "elizaos",
16
+ "nilyo",
17
+ "linkedin",
18
+ "whatsapp",
19
+ "instagram",
20
+ "telegram",
21
+ "email",
22
+ "mcp"
23
+ ],
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/arnaudh458/plugin-nilyo.git"
27
+ },
28
+ "homepage": "https://nilyo.com/setup-for-agents",
29
+ "bugs": {
30
+ "url": "https://github.com/arnaudh458/plugin-nilyo/issues"
31
+ },
32
+ "exports": {
33
+ "./package.json": "./package.json",
34
+ ".": {
35
+ "import": {
36
+ "types": "./dist/index.d.ts",
37
+ "default": "./dist/index.js"
38
+ }
39
+ }
40
+ },
41
+ "files": [
42
+ "dist",
43
+ "README.md",
44
+ ".npmignore",
45
+ ".gitignore",
46
+ "package.json"
47
+ ],
48
+ "dependencies": {
49
+ "@elizaos/core": "1.7.2",
50
+ "zod": "^4.3.5"
51
+ },
52
+ "devDependencies": {
53
+ "@elizaos/cli": "1.7.2",
54
+ "dotenv": "^17.2.3",
55
+ "prettier": "^3.7.4",
56
+ "typescript": "^5.9.3"
57
+ },
58
+ "scripts": {
59
+ "start": "elizaos start",
60
+ "dev": "elizaos dev",
61
+ "build": "bun run build.ts",
62
+ "lint": "prettier --write ./src",
63
+ "postinstall": "node -e \"const fs=require('fs');const path=require('path');const zodPath=path.join('node_modules','zod');if(fs.existsSync(zodPath)){fs.writeFileSync(path.join(zodPath,'v3.js'),'module.exports=require(\\\"./lib/index.js\\\");');fs.writeFileSync(path.join(zodPath,'v3.d.ts'),'export * from \\\"./lib/index\\\";');}\" || true",
64
+ "test": "bun test",
65
+ "test:e2e": "elizaos test e2e",
66
+ "format": "prettier --write ./src",
67
+ "format:check": "prettier --check ./src",
68
+ "build:watch": "bun run build.ts --watch"
69
+ },
70
+ "publishConfig": {
71
+ "access": "public"
72
+ },
73
+ "resolutions": {
74
+ "zod": "4.3.5"
75
+ },
76
+ "agentConfig": {
77
+ "pluginType": "elizaos:plugin:1.0.0",
78
+ "pluginParameters": {
79
+ "NILYO_API_TOKEN": {
80
+ "type": "string",
81
+ "description": "Personal Nilyo token (ab_…) from https://nilyo.com/account -> Agent access"
82
+ },
83
+ "NILYO_BASE_URL": {
84
+ "type": "string",
85
+ "description": "Nilyo base URL — leave as https://nilyo.com unless using a staging environment"
86
+ }
87
+ }
88
+ },
89
+ "npmPackage": "@arnaudh458/plugin-nilyo"
90
+ }