@msg91comm/m91 0.0.0-stage → 1.2.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.
Files changed (100) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/LICENSE +21 -0
  3. package/README.md +647 -2
  4. package/dist/src/client.d.ts +165 -0
  5. package/dist/src/client.d.ts.map +1 -0
  6. package/dist/src/client.js +221 -0
  7. package/dist/src/client.js.map +1 -0
  8. package/dist/src/exceptions.d.ts +114 -0
  9. package/dist/src/exceptions.d.ts.map +1 -0
  10. package/dist/src/exceptions.js +199 -0
  11. package/dist/src/exceptions.js.map +1 -0
  12. package/dist/src/http.d.ts +71 -0
  13. package/dist/src/http.d.ts.map +1 -0
  14. package/dist/src/http.js +150 -0
  15. package/dist/src/http.js.map +1 -0
  16. package/dist/src/index.d.ts +49 -0
  17. package/dist/src/index.d.ts.map +1 -0
  18. package/dist/src/index.js +45 -0
  19. package/dist/src/index.js.map +1 -0
  20. package/dist/src/integrations/claude-agent-sdk.d.ts +63 -0
  21. package/dist/src/integrations/claude-agent-sdk.d.ts.map +1 -0
  22. package/dist/src/integrations/claude-agent-sdk.js +109 -0
  23. package/dist/src/integrations/claude-agent-sdk.js.map +1 -0
  24. package/dist/src/integrations/google-adk.d.ts +47 -0
  25. package/dist/src/integrations/google-adk.d.ts.map +1 -0
  26. package/dist/src/integrations/google-adk.js +84 -0
  27. package/dist/src/integrations/google-adk.js.map +1 -0
  28. package/dist/src/integrations/index.d.ts +26 -0
  29. package/dist/src/integrations/index.d.ts.map +1 -0
  30. package/dist/src/integrations/index.js +25 -0
  31. package/dist/src/integrations/index.js.map +1 -0
  32. package/dist/src/integrations/langchain.d.ts +94 -0
  33. package/dist/src/integrations/langchain.d.ts.map +1 -0
  34. package/dist/src/integrations/langchain.js +129 -0
  35. package/dist/src/integrations/langchain.js.map +1 -0
  36. package/dist/src/integrations/langgraph.d.ts +79 -0
  37. package/dist/src/integrations/langgraph.d.ts.map +1 -0
  38. package/dist/src/integrations/langgraph.js +114 -0
  39. package/dist/src/integrations/langgraph.js.map +1 -0
  40. package/dist/src/integrations/mastra.d.ts +75 -0
  41. package/dist/src/integrations/mastra.d.ts.map +1 -0
  42. package/dist/src/integrations/mastra.js +109 -0
  43. package/dist/src/integrations/mastra.js.map +1 -0
  44. package/dist/src/integrations/openai-agents.d.ts +61 -0
  45. package/dist/src/integrations/openai-agents.d.ts.map +1 -0
  46. package/dist/src/integrations/openai-agents.js +127 -0
  47. package/dist/src/integrations/openai-agents.js.map +1 -0
  48. package/dist/src/integrations/specs.d.ts +173 -0
  49. package/dist/src/integrations/specs.d.ts.map +1 -0
  50. package/dist/src/integrations/specs.js +217 -0
  51. package/dist/src/integrations/specs.js.map +1 -0
  52. package/dist/src/integrations/vercel-ai.d.ts +74 -0
  53. package/dist/src/integrations/vercel-ai.d.ts.map +1 -0
  54. package/dist/src/integrations/vercel-ai.js +102 -0
  55. package/dist/src/integrations/vercel-ai.js.map +1 -0
  56. package/dist/src/integrations/zod-shapes.d.ts +19 -0
  57. package/dist/src/integrations/zod-shapes.d.ts.map +1 -0
  58. package/dist/src/integrations/zod-shapes.js +44 -0
  59. package/dist/src/integrations/zod-shapes.js.map +1 -0
  60. package/dist/src/models.d.ts +274 -0
  61. package/dist/src/models.d.ts.map +1 -0
  62. package/dist/src/models.js +383 -0
  63. package/dist/src/models.js.map +1 -0
  64. package/dist/src/platform.d.ts +176 -0
  65. package/dist/src/platform.d.ts.map +1 -0
  66. package/dist/src/platform.js +286 -0
  67. package/dist/src/platform.js.map +1 -0
  68. package/dist/src/url-builder.d.ts +65 -0
  69. package/dist/src/url-builder.d.ts.map +1 -0
  70. package/dist/src/url-builder.js +167 -0
  71. package/dist/src/url-builder.js.map +1 -0
  72. package/examples/approval-gate.ts +35 -0
  73. package/examples/basic-alert.ts +53 -0
  74. package/examples/claude-agent-sdk.ts +23 -0
  75. package/examples/deep-agents.ts +31 -0
  76. package/examples/google-adk.ts +39 -0
  77. package/examples/langchain-agent.ts +65 -0
  78. package/examples/langgraph-hitl.ts +70 -0
  79. package/examples/mastra.ts +41 -0
  80. package/examples/openai-agents.ts +33 -0
  81. package/examples/vercel-ai-agent.ts +34 -0
  82. package/examples/webhook-urls.ts +44 -0
  83. package/package.json +135 -4
  84. package/src/client.ts +324 -0
  85. package/src/exceptions.ts +229 -0
  86. package/src/http.ts +174 -0
  87. package/src/index.ts +91 -0
  88. package/src/integrations/claude-agent-sdk.ts +158 -0
  89. package/src/integrations/google-adk.ts +122 -0
  90. package/src/integrations/index.ts +27 -0
  91. package/src/integrations/langchain.ts +207 -0
  92. package/src/integrations/langgraph.ts +142 -0
  93. package/src/integrations/mastra.ts +178 -0
  94. package/src/integrations/openai-agents.ts +173 -0
  95. package/src/integrations/specs.ts +328 -0
  96. package/src/integrations/vercel-ai.ts +151 -0
  97. package/src/integrations/zod-shapes.ts +55 -0
  98. package/src/models.ts +660 -0
  99. package/src/platform.ts +343 -0
  100. package/src/url-builder.ts +225 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The approval and alert arguments as zod shapes, for frameworks that only
3
+ * take zod (Claude Agent SDK, Mastra, Google ADK).
4
+ *
5
+ * Built from the zod the caller already has, passed in, so this package never
6
+ * imports zod itself and the descriptions stay the ones in `specs.ts`.
7
+ */
8
+ import { ALERT_SCHEMA, APPROVAL_SCHEMA } from './specs.js';
9
+ const SEVERITIES = ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'];
10
+ export function approvalShape(z) {
11
+ const p = APPROVAL_SCHEMA.properties;
12
+ return {
13
+ title: z.string().describe(p.title.description),
14
+ customId: z.string().describe(p.customId.description),
15
+ description: z.string().optional().describe(p.description.description),
16
+ severity: z.enum(SEVERITIES).optional().describe(p.severity.description),
17
+ approveLabel: z.string().optional().describe(p.approveLabel.description),
18
+ rejectLabel: z.string().optional().describe(p.rejectLabel.description),
19
+ timeoutSeconds: z.number().optional().describe(p.timeoutSeconds.description),
20
+ };
21
+ }
22
+ export function alertShape(z) {
23
+ const p = ALERT_SCHEMA.properties;
24
+ return {
25
+ title: z.string().describe(p.title.description),
26
+ customId: z.string().optional().describe(p.customId.description),
27
+ description: z.string().optional().describe(p.description.description),
28
+ severity: z.enum(SEVERITIES).optional().describe(p.severity.description),
29
+ };
30
+ }
31
+ /** zod is an optional peer dependency: import it only when asked, and say so if it is missing. */
32
+ export async function loadZod(framework) {
33
+ try {
34
+ const specifier = 'zod';
35
+ const mod = (await import(specifier));
36
+ return mod.z ?? mod;
37
+ }
38
+ catch (error) {
39
+ throw new Error(`The ${framework} integration needs zod. Install it with: npm install zod`, {
40
+ cause: error,
41
+ });
42
+ }
43
+ }
44
+ //# sourceMappingURL=zod-shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-shapes.js","sourceRoot":"","sources":["../../../src/integrations/zod-shapes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAU3D,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;AAElE,MAAM,UAAU,aAAa,CAAC,CAAU;IACtC,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC;IACrC,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;QACtE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QACxE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC;QACxE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;QACtE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC;KAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAU;IACnC,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC;IAClC,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QAChE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;QACtE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,KAAK,CAAC;QACxB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAA8B,CAAC;QACnE,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,OAAO,SAAS,0DAA0D,EAAE;YAC1F,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Every shape the API returns, plus the local validation that stops a doomed
3
+ * request before it leaves the process.
4
+ *
5
+ * Two rules govern this file:
6
+ *
7
+ * - **Parse defensively.** The server omits a field rather than sending it
8
+ * false or zero — `deduplicated`, `noDevice`, `pending`, `reopened` and
9
+ * `message` are present only when they have something to say.
10
+ * - **Emit exactly.** Every request schema server-side is `.strict()`: an
11
+ * unknown field is a 400, and so is `null` where a string was declared. So
12
+ * `buildAlertPayload` *omits* what the caller left unset.
13
+ */
14
+ export type Severity = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
15
+ export type Effect = 'SHARED' | 'PERSONAL';
16
+ export type AlertStatus = 'OPEN' | 'RESOLVED';
17
+ export type RecipientState = 'pending' | 'accepted' | 'declined';
18
+ export declare const SEVERITIES: readonly Severity[];
19
+ export declare const EFFECTS: readonly Effect[];
20
+ /** Severities that place a voice call after 45s with no answer. */
21
+ export declare const ESCALATING_SEVERITIES: readonly Severity[];
22
+ export declare const TITLE_MIN = 5;
23
+ export declare const TITLE_MAX = 2000;
24
+ export declare const DESCRIPTION_MAX = 2000;
25
+ export declare const CUSTOM_ID_MAX = 200;
26
+ export declare const LABEL_MAX = 24;
27
+ export declare const ATTACHMENT_URL_MAX = 2000;
28
+ export declare const MAX_LINK_RESPONSE_OPTIONS = 6;
29
+ export declare const CHANNEL_NAME_MAX = 80;
30
+ export declare const MAX_MEMBERS_PER_CALL = 500;
31
+ /** The only two things an option may ask somebody to supply. */
32
+ export declare const COLLECTABLE: readonly ["note", "attachment"];
33
+ export type Collectable = (typeof COLLECTABLE)[number];
34
+ /**
35
+ * One button on the alert screen.
36
+ *
37
+ * `label` is capped at 24 characters because it has to read as a button at 3am,
38
+ * not for any storage reason. `effect` defaults to SHARED, as it does
39
+ * server-side.
40
+ */
41
+ export interface ResponseOption {
42
+ label: string;
43
+ effect?: Effect;
44
+ /**
45
+ * What answering this option MUST supply. The person cannot choose it until
46
+ * they have.
47
+ */
48
+ required?: Collectable[];
49
+ /** Offered and skippable, shown with "(optional)" on its own field. */
50
+ optional?: Collectable[];
51
+ }
52
+ /**
53
+ * The SHARED response that claimed the alert — the one field an agent reads.
54
+ *
55
+ * **Only a SHARED response sets this.** A PERSONAL one is an acknowledgement,
56
+ * and reading it as an answer would let "Seen" mean "Approved". Never reduce
57
+ * `responses` yourself to work out who decided.
58
+ *
59
+ * `label` can be null: the server returns null when an alert was claimed
60
+ * without an option being chosen. `by` is an opaque user id — never a phone
61
+ * number, never a name.
62
+ */
63
+ export interface Decision {
64
+ label: string | null;
65
+ effect: string;
66
+ at: string | null;
67
+ by: string | null;
68
+ }
69
+ /** What a send returns. 201 for a new alert, 200 for a suppressed repeat. */
70
+ export interface AlertResponse {
71
+ id: string;
72
+ channelId: string | null;
73
+ channelName: string | null;
74
+ status: AlertStatus;
75
+ severity: Severity;
76
+ customId: string | null;
77
+ isAutoClose: boolean;
78
+ responseOptions: ResponseOption[];
79
+ /**
80
+ * Phones actually sent to — **not** the size of the roster. This reported the
81
+ * roster count until a reinstalled phone with a stale token showed the gap.
82
+ */
83
+ delivered: number;
84
+ createdAt: string | null;
85
+ /** The same customId was already open, or an identical payload arrived within 5s. */
86
+ deduplicated: boolean;
87
+ reopened: boolean;
88
+ /** Invited numbers with no M91 account at all. */
89
+ unregistered: string[];
90
+ /** Accepted and signed in, but with no device registered. */
91
+ noDevice: number;
92
+ /** Invited and never answered. */
93
+ pending: number;
94
+ message: string | null;
95
+ /**
96
+ * The check to assert on, rather than "the request succeeded". A deduplicated
97
+ * send delivers to nobody *because the alert is already open and ringing*.
98
+ */
99
+ actuallyReachedSomeone: boolean;
100
+ raw: Record<string, unknown>;
101
+ }
102
+ /**
103
+ * A file on an alert or on somebody's answer.
104
+ *
105
+ * `url` is a plain, permanent link — the backend stores responders' files and
106
+ * serves them unsigned, so it can be cached, logged and opened long after the
107
+ * alert is closed. A sender's own attachments are the URLs it supplied,
108
+ * unchanged and never copied.
109
+ */
110
+ export interface Attachment {
111
+ url: string;
112
+ name: string | null;
113
+ type: string | null;
114
+ size: number | null;
115
+ }
116
+ /**
117
+ * One person's answer, with whatever they supplied alongside it.
118
+ *
119
+ * TYPED, because `note` and `attachments` were unreachable otherwise. A sender
120
+ * can require a note or a file before an option may be chosen, and the server
121
+ * returns both here — but `responses` was `unknown[]`, so the only way to read
122
+ * the thing you had demanded was to cast `raw`. A field a caller is told to
123
+ * require and then cannot read is not a feature.
124
+ *
125
+ * `by` is an opaque user id — never a phone number, never a name.
126
+ */
127
+ export interface Response {
128
+ label: string | null;
129
+ effect: string;
130
+ optionIndex: number | null;
131
+ at: string | null;
132
+ by: string | null;
133
+ /** What they typed, when the option asked for it. */
134
+ note: string | null;
135
+ /** What they attached. Empty when none was asked for, or none was given. */
136
+ attachments: Attachment[];
137
+ }
138
+ /** What a read-back returns. Poll `decision`, never `responses[0]`. */
139
+ export interface AlertDetail {
140
+ id: string;
141
+ customId: string | null;
142
+ status: AlertStatus;
143
+ severity: Severity;
144
+ title: string | null;
145
+ isAutoClose: boolean;
146
+ reopenCount: number;
147
+ responseOptions: ResponseOption[];
148
+ /** Every response, personal and shared. Not how you decide anything. */
149
+ responses: Response[];
150
+ /** The sender's own attachments, exactly as supplied. Links, never copies. */
151
+ attachments: Attachment[];
152
+ /** Recipients who have not answered yet — reached minus answered. */
153
+ pending: number;
154
+ decision: Decision | null;
155
+ resolvedAt: string | null;
156
+ createdAt: string | null;
157
+ isDecided: boolean;
158
+ isClosed: boolean;
159
+ raw: Record<string, unknown>;
160
+ }
161
+ /**
162
+ * What a bare GET on a send link answers with. The channel *name* is the point:
163
+ * it lets whoever pasted the URL see they picked the right channel.
164
+ */
165
+ export interface ChannelInfo {
166
+ id: string;
167
+ name: string;
168
+ visibility: string;
169
+ /** Which send link fired, by label. A channel can hold several, one per system. */
170
+ senderLabel: string | null;
171
+ senderId: string | null;
172
+ }
173
+ /**
174
+ * What an API key is, without doing anything with it.
175
+ *
176
+ * The answer to the question somebody actually has on a connection screen — not
177
+ * "is this valid" but **which** key did I just paste and whose authority does it
178
+ * carry. Enough to render "Connected as +91 98765 43210 · Production" rather
179
+ * than a tick.
180
+ *
181
+ * `prefix` is the first characters of the key, which is what the app shows so a
182
+ * person can tell two keys apart. The key itself is never returned by anything.
183
+ */
184
+ export interface ApiKeyInfo {
185
+ keyId: string;
186
+ prefix: string | null;
187
+ label: string | null;
188
+ createdAt: string | null;
189
+ /**
190
+ * The owner's phone. No user id on purpose: it is an internal handle, and a
191
+ * platform storing it would be storing something it can never use.
192
+ */
193
+ ownerPhone: string | null;
194
+ }
195
+ export interface Recipient {
196
+ phone: string;
197
+ state: RecipientState;
198
+ /** Only an accepted recipient can be woken through Do Not Disturb. */
199
+ reachable: boolean;
200
+ }
201
+ /**
202
+ * A team channel created by API key. `sendLink` is how it is *alerted* — an API
203
+ * key never can be. Store it the moment you get it: creating a channel is not
204
+ * idempotent, so a lost response is an orphaned channel, not something to retry.
205
+ */
206
+ export interface ProvisionedChannel {
207
+ id: string;
208
+ name: string;
209
+ sendLink: string | null;
210
+ }
211
+ /** The four buckets an invite call sorts phones into. */
212
+ export interface InviteResult {
213
+ invited: string[];
214
+ already: string[];
215
+ pending: string[];
216
+ declined: string[];
217
+ raw: Record<string, unknown>;
218
+ }
219
+ export declare function parseDecision(value: unknown): Decision | null;
220
+ export declare function parseAlertResponse(value: unknown): AlertResponse;
221
+ /** A sender's attachments arrive as bare strings; a responder's as objects. */
222
+ export declare function parseAttachment(value: unknown): Attachment;
223
+ export declare function parseResponse(value: unknown): Response;
224
+ export declare function parseAlertDetail(value: unknown): AlertDetail;
225
+ export declare function parseChannelInfo(value: unknown): ChannelInfo;
226
+ export declare function parseApiKeyInfo(value: unknown): ApiKeyInfo;
227
+ export declare function parseRecipient(value: unknown): Recipient;
228
+ export declare function parseProvisionedChannel(value: unknown): ProvisionedChannel;
229
+ export declare function parseInviteResult(value: unknown): InviteResult;
230
+ /** True when this decision is the approval, compared case-insensitively.
231
+ *
232
+ * A missing label is not an approval. The server can hand back `label: null`,
233
+ * and treating an unknown answer as a yes is the wrong way to be wrong about a
234
+ * payment. */
235
+ export declare function isApproved(decision: Decision | null, approveLabel?: string): boolean;
236
+ /**
237
+ * Trim and collapse runs of whitespace, as `validateRequest` does server-side.
238
+ * Done here too so a length check measures the string the server will measure.
239
+ */
240
+ export declare function collapse(value: string): string;
241
+ export interface AlertFields {
242
+ description?: string;
243
+ severity?: Severity;
244
+ customId?: string;
245
+ isAutoClose?: boolean;
246
+ responseOptions?: Array<ResponseOption | string>;
247
+ /**
248
+ * Whether the free-text "Something else" reply is offered.
249
+ *
250
+ * Defaults ON at the server, so this is tri-state: leave it undefined and
251
+ * the server's default stands; only an explicit `false` turns it off.
252
+ */
253
+ other?: boolean;
254
+ /** https links to files the alert is about. URLs, never bytes — see below. */
255
+ attachments?: string[];
256
+ /** Where the outcome is POSTed when somebody answers. */
257
+ callbackUrl?: string;
258
+ }
259
+ /**
260
+ * Validate an alert locally and render the JSON body the server accepts.
261
+ *
262
+ * Every limit checked here is one the server enforces. Checking twice is not
263
+ * duplication for its own sake: a 400 costs a round trip, and the caller is
264
+ * often a cron or an agent that will simply do it again.
265
+ */
266
+ export declare function buildAlertPayload(title: string, fields?: AlertFields, maxOptions?: number): Record<string, unknown>;
267
+ export declare function normalizeOptions(options: Array<ResponseOption | string>): ResponseOption[];
268
+ export declare function checkSeverity(severity: string): Severity;
269
+ /**
270
+ * Digits only, 8–15, country code included, no `+` and no spaces.
271
+ * The `+` is the one everybody gets wrong, so it gets its own message.
272
+ */
273
+ export declare function validatePhone(phone: string): string;
274
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}