@marifold/core 0.73.0 → 0.73.1

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 (33) hide show
  1. package/package.json +2 -2
  2. package/dist/app/AppActionResolver.d.ts +0 -15
  3. package/dist/app/AppActionResolver.d.ts.map +0 -1
  4. package/dist/app/AppActionResolver.js +0 -98
  5. package/dist/app/AppActionResolver.js.map +0 -1
  6. package/dist/app/AppSchema.d.ts +0 -83
  7. package/dist/app/AppSchema.d.ts.map +0 -1
  8. package/dist/app/AppSchema.js +0 -17
  9. package/dist/app/AppSchema.js.map +0 -1
  10. package/dist/app/AppValidator.d.ts +0 -10
  11. package/dist/app/AppValidator.d.ts.map +0 -1
  12. package/dist/app/AppValidator.js +0 -503
  13. package/dist/app/AppValidator.js.map +0 -1
  14. package/dist/skill/SkillVars.d.ts +0 -10
  15. package/dist/skill/SkillVars.d.ts.map +0 -1
  16. package/dist/skill/SkillVars.js +0 -65
  17. package/dist/skill/SkillVars.js.map +0 -1
  18. package/dist/skillapp/SkillAppActionResolver.d.ts +0 -13
  19. package/dist/skillapp/SkillAppActionResolver.d.ts.map +0 -1
  20. package/dist/skillapp/SkillAppActionResolver.js +0 -95
  21. package/dist/skillapp/SkillAppActionResolver.js.map +0 -1
  22. package/dist/skillapp/SkillAppSchema.d.ts +0 -79
  23. package/dist/skillapp/SkillAppSchema.d.ts.map +0 -1
  24. package/dist/skillapp/SkillAppSchema.js +0 -20
  25. package/dist/skillapp/SkillAppSchema.js.map +0 -1
  26. package/dist/skillapp/SkillAppStore.d.ts +0 -11
  27. package/dist/skillapp/SkillAppStore.d.ts.map +0 -1
  28. package/dist/skillapp/SkillAppStore.js +0 -98
  29. package/dist/skillapp/SkillAppStore.js.map +0 -1
  30. package/dist/skillapp/SkillAppValidator.d.ts +0 -10
  31. package/dist/skillapp/SkillAppValidator.d.ts.map +0 -1
  32. package/dist/skillapp/SkillAppValidator.js +0 -522
  33. package/dist/skillapp/SkillAppValidator.js.map +0 -1
@@ -1,522 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateSkillAppToml = validateSkillAppToml;
4
- exports.validateSkillApp = validateSkillApp;
5
- const smol_toml_1 = require("smol-toml");
6
- const SkillAppSchema_1 = require("./SkillAppSchema");
7
- const KEBAB_CASE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
8
- const SNAKE_CASE = /^[a-z0-9]+(?:_[a-z0-9]+)*$/;
9
- const SKILL_NAME = /^[a-z0-9][a-z0-9_-]*$/;
10
- const SEMVER = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?$/;
11
- const TEMPLATE_PLACEHOLDER = /\{\{\s*([a-z0-9_]+)\s*\}\}/g;
12
- const VARIABLE_TYPES = new Set(['string', 'number', 'boolean', 'enum']);
13
- const VARIABLE_ROLES = new Set(['input', 'output', 'state']);
14
- const COMPONENTS = new Set([
15
- 'row', 'column', 'spacer', 'text', 'text_input', 'textarea', 'select', 'preview', 'tabs', 'file_picker', 'button',
16
- 'download_button',
17
- ]);
18
- const ACTION_KINDS = new Set(['skill', 'model', 'profile', 'tool']);
19
- const FILES_PERMISSIONS = new Set(['none', 'read', 'write']);
20
- const LAYOUT_GAPS = new Set(['none', 'small', 'medium', 'large']);
21
- const RESPONSIVE_BEHAVIORS = new Set(['stack']);
22
- const MAX_LAYOUT_DEPTH = 4;
23
- const MAX_LAYOUT_ITEMS = 100;
24
- /** Parse and validate a SkillApp TOML document (docs/skillapp.md, v0 rules). */
25
- function validateSkillAppToml(source) {
26
- let raw;
27
- try {
28
- raw = (0, smol_toml_1.parse)(source);
29
- }
30
- catch (error) {
31
- return { ok: false, errors: [`Invalid TOML: ${error instanceof Error ? error.message : String(error)}`] };
32
- }
33
- return validateSkillApp(raw);
34
- }
35
- function validateSkillApp(raw) {
36
- const errors = [];
37
- if (raw.schema !== SkillAppSchema_1.SKILLAPP_SCHEMA) {
38
- errors.push(`schema must be "${SkillAppSchema_1.SKILLAPP_SCHEMA}".`);
39
- }
40
- const app = readApp(raw.app, errors);
41
- const variables = readVariables(raw.variables, errors);
42
- const execution = readExecution(raw.execution, errors);
43
- const permissions = readPermissions(raw.permissions, errors);
44
- const actions = readActions(raw.actions, variables, permissions, errors);
45
- const layout = readLayout(raw.layout, variables, actions, permissions, errors, {
46
- depth: 0,
47
- insideTabs: false,
48
- count: { value: 0 },
49
- path: 'layout',
50
- });
51
- if (errors.length > 0)
52
- return { ok: false, errors };
53
- return {
54
- ok: true,
55
- errors: [],
56
- definition: { schema: SkillAppSchema_1.SKILLAPP_SCHEMA, app: app, variables, layout, actions, execution, permissions },
57
- };
58
- }
59
- function readApp(value, errors) {
60
- const app = asTable(value);
61
- if (!app) {
62
- errors.push('[app] table is required.');
63
- return undefined;
64
- }
65
- const name = asString(app.name);
66
- const title = asString(app.title);
67
- if (!name || !KEBAB_CASE.test(name))
68
- errors.push('app.name is required and must be kebab-case.');
69
- if (!title)
70
- errors.push('app.title is required.');
71
- const version = asString(app.version);
72
- if (version && !SEMVER.test(version))
73
- errors.push('app.version must use Semantic Versioning without a "v" prefix.');
74
- const description = asString(app.description);
75
- if (!name || !title)
76
- return undefined;
77
- return {
78
- name,
79
- title,
80
- ...(version ? { version } : {}),
81
- ...(description ? { description } : {}),
82
- };
83
- }
84
- function readVariables(value, errors) {
85
- const items = asArrayOfTables(value);
86
- if (!items || items.length === 0) {
87
- errors.push('At least one [[variables]] entry is required.');
88
- return [];
89
- }
90
- const seen = new Set();
91
- const variables = [];
92
- items.forEach((item, index) => {
93
- const label = `variables[${index}]`;
94
- const name = asString(item.name);
95
- if (!name || !SNAKE_CASE.test(name)) {
96
- errors.push(`${label}.name is required and must be snake_case.`);
97
- return;
98
- }
99
- if (seen.has(name)) {
100
- errors.push(`Duplicate variable name '${name}'.`);
101
- return;
102
- }
103
- seen.add(name);
104
- const type = asString(item.type);
105
- if (!type || !VARIABLE_TYPES.has(type)) {
106
- errors.push(`${label}.type must be string, number, boolean, or enum.`);
107
- return;
108
- }
109
- const role = asString(item.role);
110
- if (!role || !VARIABLE_ROLES.has(role)) {
111
- errors.push(`${label}.role must be input, output, or state.`);
112
- return;
113
- }
114
- const options = item.options;
115
- if (type === 'enum') {
116
- if (!Array.isArray(options) || options.length === 0 || !options.every(o => typeof o === 'string')) {
117
- errors.push(`${label}.options must be a non-empty string array for enum variables.`);
118
- return;
119
- }
120
- }
121
- else if (options !== undefined) {
122
- errors.push(`${label}.options is only allowed for enum variables.`);
123
- return;
124
- }
125
- const variable = {
126
- name,
127
- type,
128
- role,
129
- ...(asString(item.label) ? { label: asString(item.label) } : {}),
130
- ...(typeof item.required === 'boolean' ? { required: item.required } : {}),
131
- ...(item.default !== undefined ? { default: item.default } : {}),
132
- ...(type === 'enum' ? { options: options } : {}),
133
- };
134
- if (item.required !== undefined && typeof item.required !== 'boolean') {
135
- errors.push(`${label}.required must be a boolean.`);
136
- return;
137
- }
138
- if (variable.default !== undefined && !defaultMatchesType(variable)) {
139
- errors.push(`${label}.default does not match type '${type}'.`);
140
- return;
141
- }
142
- variables.push(variable);
143
- });
144
- return variables;
145
- }
146
- function defaultMatchesType(variable) {
147
- const value = variable.default;
148
- switch (variable.type) {
149
- case 'string': return typeof value === 'string';
150
- case 'number': return typeof value === 'number';
151
- case 'boolean': return typeof value === 'boolean';
152
- case 'enum': return typeof value === 'string' && (variable.options ?? []).includes(value);
153
- }
154
- }
155
- function readExecution(value, errors) {
156
- const table = asTable(value);
157
- if (!table)
158
- return { ...SkillAppSchema_1.DEFAULT_SKILLAPP_EXECUTION };
159
- const readBool = (key, fallback) => {
160
- const raw = table[key];
161
- if (raw === undefined)
162
- return fallback;
163
- if (typeof raw !== 'boolean') {
164
- errors.push(`execution.${key} must be a boolean.`);
165
- return fallback;
166
- }
167
- return raw;
168
- };
169
- return {
170
- think: readBool('think', SkillAppSchema_1.DEFAULT_SKILLAPP_EXECUTION.think),
171
- memory: readBool('memory', SkillAppSchema_1.DEFAULT_SKILLAPP_EXECUTION.memory),
172
- history: readBool('history', SkillAppSchema_1.DEFAULT_SKILLAPP_EXECUTION.history),
173
- profileContext: readBool('profile_context', SkillAppSchema_1.DEFAULT_SKILLAPP_EXECUTION.profileContext),
174
- };
175
- }
176
- function readPermissions(value, errors) {
177
- const table = asTable(value);
178
- if (!table)
179
- return { ...SkillAppSchema_1.DEFAULT_SKILLAPP_PERMISSIONS };
180
- const files = table.files === undefined ? SkillAppSchema_1.DEFAULT_SKILLAPP_PERMISSIONS.files : asString(table.files);
181
- if (!FILES_PERMISSIONS.has(files)) {
182
- errors.push('permissions.files must be "none", "read", or "write".');
183
- }
184
- const readBool = (key, fallback) => {
185
- const raw = table[key];
186
- if (raw === undefined)
187
- return fallback;
188
- if (typeof raw !== 'boolean') {
189
- errors.push(`permissions.${key} must be a boolean.`);
190
- return fallback;
191
- }
192
- return raw;
193
- };
194
- return {
195
- providerCalls: readBool('provider_calls', SkillAppSchema_1.DEFAULT_SKILLAPP_PERMISSIONS.providerCalls),
196
- files: FILES_PERMISSIONS.has(files) ? files : SkillAppSchema_1.DEFAULT_SKILLAPP_PERMISSIONS.files,
197
- shell: readBool('shell', SkillAppSchema_1.DEFAULT_SKILLAPP_PERMISSIONS.shell),
198
- network: readBool('network', SkillAppSchema_1.DEFAULT_SKILLAPP_PERMISSIONS.network),
199
- export: readBool('export', SkillAppSchema_1.DEFAULT_SKILLAPP_PERMISSIONS.export),
200
- };
201
- }
202
- function readActions(value, variables, permissions, errors) {
203
- const items = asArrayOfTables(value);
204
- if (!items)
205
- return [];
206
- const variableNames = new Set(variables.map(v => v.name));
207
- const writableNames = new Set(variables.filter(v => v.role !== 'input').map(v => v.name));
208
- const seen = new Set();
209
- const actions = [];
210
- items.forEach((item, index) => {
211
- const label = `actions[${index}]`;
212
- const name = asString(item.name);
213
- if (!name || !SNAKE_CASE.test(name)) {
214
- errors.push(`${label}.name is required and must be snake_case.`);
215
- return;
216
- }
217
- if (seen.has(name)) {
218
- errors.push(`Duplicate action name '${name}'.`);
219
- return;
220
- }
221
- seen.add(name);
222
- const kind = asString(item.kind);
223
- if (!kind || !ACTION_KINDS.has(kind)) {
224
- errors.push(`${label}.kind must be skill, model, profile, or tool. ('workflow' is reserved for a future version.)`);
225
- return;
226
- }
227
- const output = asString(item.output);
228
- if (!output || !variableNames.has(output)) {
229
- errors.push(`${label}.output must reference a declared variable.`);
230
- return;
231
- }
232
- if (!writableNames.has(output)) {
233
- errors.push(`${label}.output must reference an output or state variable, not an input.`);
234
- return;
235
- }
236
- const action = { name, kind, output };
237
- if (kind === 'skill') {
238
- if (!permissions.providerCalls) {
239
- errors.push(`${label} requires permissions.provider_calls = true.`);
240
- return;
241
- }
242
- const skill = asString(item.skill);
243
- if (!skill || !SKILL_NAME.test(skill)) {
244
- errors.push(`${label}.skill is required and must be a valid skill name.`);
245
- return;
246
- }
247
- const argumentsTable = asTable(item.arguments);
248
- if (!argumentsTable) {
249
- errors.push(`${label}.arguments is required for skill actions.`);
250
- return;
251
- }
252
- const actionArguments = {};
253
- for (const [key, argumentValue] of Object.entries(argumentsTable)) {
254
- if (!SNAKE_CASE.test(key)) {
255
- errors.push(`${label}.arguments key '${key}' must be snake_case.`);
256
- continue;
257
- }
258
- if (!isVariableValue(argumentValue)) {
259
- errors.push(`${label}.arguments.${key} must be a string, number, or boolean.`);
260
- continue;
261
- }
262
- if (typeof argumentValue === 'string') {
263
- checkTemplate(argumentValue, variableNames, `${label}.arguments.${key}`, errors);
264
- }
265
- actionArguments[key] = argumentValue;
266
- }
267
- action.skill = skill;
268
- action.arguments = actionArguments;
269
- }
270
- else if (kind === 'model' || kind === 'profile') {
271
- if (!permissions.providerCalls) {
272
- errors.push(`${label} requires permissions.provider_calls = true.`);
273
- return;
274
- }
275
- const prompt = asString(item.prompt);
276
- if (!prompt) {
277
- errors.push(`${label}.prompt is required for ${kind} actions.`);
278
- return;
279
- }
280
- checkTemplate(prompt, variableNames, `${label}.prompt`, errors);
281
- action.prompt = prompt;
282
- if (kind === 'profile') {
283
- const profile = asString(item.profile);
284
- if (!profile) {
285
- errors.push(`${label}.profile is required for profile actions.`);
286
- return;
287
- }
288
- action.profile = profile;
289
- }
290
- }
291
- else {
292
- const tool = asString(item.tool);
293
- if (!tool || !SkillAppSchema_1.SKILLAPP_KNOWN_TOOLS.includes(tool)) {
294
- errors.push(`${label}.tool must be one of: ${SkillAppSchema_1.SKILLAPP_KNOWN_TOOLS.join(', ')}.`);
295
- return;
296
- }
297
- if (!toolPermitted(tool, permissions)) {
298
- errors.push(`${label} uses tool '${tool}' without the required permission.`);
299
- return;
300
- }
301
- action.tool = tool;
302
- const input = asTable(item.input);
303
- if (input) {
304
- for (const [key, inputValue] of Object.entries(input)) {
305
- if (!isVariableValue(inputValue)) {
306
- errors.push(`${label}.input.${key} must be a string, number, or boolean.`);
307
- continue;
308
- }
309
- if (typeof inputValue === 'string')
310
- checkTemplate(inputValue, variableNames, `${label}.input.${key}`, errors);
311
- }
312
- action.input = input;
313
- }
314
- }
315
- actions.push(action);
316
- });
317
- return actions;
318
- }
319
- function toolPermitted(tool, permissions) {
320
- switch (tool) {
321
- case 'read_file': return permissions.files === 'read' || permissions.files === 'write';
322
- case 'write_file': return permissions.files === 'write';
323
- case 'shell_exec': return permissions.shell;
324
- case 'web_search': return permissions.network;
325
- case 'ask_profile': return permissions.providerCalls;
326
- default: return false;
327
- }
328
- }
329
- function readLayout(value, variables, actions, permissions, errors, context) {
330
- if (context.depth > MAX_LAYOUT_DEPTH) {
331
- errors.push(`${context.path} exceeds the maximum layout depth of ${MAX_LAYOUT_DEPTH}.`);
332
- return [];
333
- }
334
- const items = asArrayOfTables(value);
335
- if (!items || items.length === 0) {
336
- errors.push(`${context.path} must contain at least one layout item.`);
337
- return [];
338
- }
339
- const variableByName = new Map(variables.map(v => [v.name, v]));
340
- const actionNames = new Set(actions.map(a => a.name));
341
- const layout = [];
342
- items.forEach((item, index) => {
343
- const label = `${context.path}[${index}]`;
344
- context.count.value += 1;
345
- if (context.count.value > MAX_LAYOUT_ITEMS) {
346
- if (context.count.value === MAX_LAYOUT_ITEMS + 1) {
347
- errors.push(`Layout exceeds the maximum of ${MAX_LAYOUT_ITEMS} items.`);
348
- }
349
- return;
350
- }
351
- const component = asString(item.component);
352
- if (!component || !COMPONENTS.has(component)) {
353
- errors.push(`${label}.component must be one of: ${[...COMPONENTS].join(', ')}.`);
354
- return;
355
- }
356
- const gap = asString(item.gap);
357
- if (gap && !LAYOUT_GAPS.has(gap))
358
- errors.push(`${label}.gap must be none, small, medium, or large.`);
359
- const responsive = asString(item.responsive);
360
- if (responsive && !RESPONSIVE_BEHAVIORS.has(responsive)) {
361
- errors.push(`${label}.responsive must be stack.`);
362
- }
363
- if (item.grow !== undefined && typeof item.grow !== 'boolean') {
364
- errors.push(`${label}.grow must be a boolean.`);
365
- }
366
- if (item.show_label !== undefined && typeof item.show_label !== 'boolean') {
367
- errors.push(`${label}.show_label must be a boolean.`);
368
- }
369
- const labelControl = component === 'text_input' || component === 'textarea' || component === 'select';
370
- if (item.show_label !== undefined && !labelControl) {
371
- errors.push(`${label}.show_label is only allowed on text_input, textarea, or select.`);
372
- }
373
- const entry = {
374
- component,
375
- ...(asString(item.bind) ? { bind: asString(item.bind) } : {}),
376
- ...(asString(item.label) ? { label: asString(item.label) } : {}),
377
- ...(asString(item.action) ? { action: asString(item.action) } : {}),
378
- ...(asString(item.content) ? { content: asString(item.content) } : {}),
379
- ...(asString(item.format) ? { format: asString(item.format) } : {}),
380
- ...(typeof item.show_label === 'boolean' ? { showLabel: item.show_label } : {}),
381
- ...(gap && LAYOUT_GAPS.has(gap) ? { gap } : {}),
382
- ...(responsive && RESPONSIVE_BEHAVIORS.has(responsive) ? { responsive } : {}),
383
- ...(typeof item.grow === 'boolean' ? { grow: item.grow } : {}),
384
- };
385
- switch (component) {
386
- case 'row':
387
- case 'column': {
388
- const children = asArrayOfTables(item.children);
389
- if (!children || children.length === 0) {
390
- errors.push(`${label} (${component}) requires a non-empty children array.`);
391
- break;
392
- }
393
- entry.children = readLayout(children, variables, actions, permissions, errors, {
394
- ...context,
395
- depth: context.depth + 1,
396
- path: `${label}.children`,
397
- });
398
- break;
399
- }
400
- case 'spacer':
401
- break;
402
- case 'text':
403
- if (!entry.content)
404
- errors.push(`${label} (text) requires content.`);
405
- break;
406
- case 'button':
407
- if (!entry.action || !actionNames.has(entry.action)) {
408
- errors.push(`${label} (button) requires action referencing a declared action.`);
409
- }
410
- break;
411
- case 'tabs': {
412
- if (context.insideTabs) {
413
- errors.push(`${label}: tabs cannot be nested.`);
414
- break;
415
- }
416
- if (!Array.isArray(item.tabs) || item.tabs.length === 0) {
417
- errors.push(`${label} (tabs) requires a non-empty tabs array.`);
418
- break;
419
- }
420
- entry.tabs = item.tabs.map((tab, tabIndex) => readLayout(tab, variables, actions, permissions, errors, {
421
- ...context,
422
- depth: context.depth + 1,
423
- insideTabs: true,
424
- path: `${label}.tabs[${tabIndex}]`,
425
- }));
426
- break;
427
- }
428
- case 'file_picker': {
429
- if (permissions.files === 'none')
430
- errors.push(`${label} (file_picker) requires permissions.files of read or write.`);
431
- const variable = requireBind(entry, variableByName, label, errors);
432
- requireWritableVariable(variable, label, errors);
433
- break;
434
- }
435
- case 'download_button':
436
- if (!permissions.export)
437
- errors.push(`${label} (download_button) requires permissions.export = true.`);
438
- requireBind(entry, variableByName, label, errors);
439
- break;
440
- case 'select': {
441
- const variable = requireBind(entry, variableByName, label, errors);
442
- if (variable && variable.type !== 'enum')
443
- errors.push(`${label} (select) must bind an enum variable.`);
444
- requireWritableVariable(variable, label, errors);
445
- break;
446
- }
447
- case 'textarea': {
448
- const variable = requireBind(entry, variableByName, label, errors);
449
- if (variable && variable.type !== 'string')
450
- errors.push(`${label} (textarea) must bind a string variable.`);
451
- requireWritableVariable(variable, label, errors);
452
- break;
453
- }
454
- case 'text_input': {
455
- const variable = requireBind(entry, variableByName, label, errors);
456
- if (variable && variable.type !== 'string' && variable.type !== 'number') {
457
- errors.push(`${label} (text_input) must bind a string or number variable.`);
458
- }
459
- requireWritableVariable(variable, label, errors);
460
- break;
461
- }
462
- case 'preview':
463
- if (entry.format && entry.format !== 'text' && entry.format !== 'markdown') {
464
- errors.push(`${label} (preview) format must be text or markdown.`);
465
- }
466
- requireBind(entry, variableByName, label, errors);
467
- break;
468
- }
469
- layout.push(entry);
470
- });
471
- return layout;
472
- }
473
- function requireWritableVariable(variable, label, errors) {
474
- if (variable?.role === 'output') {
475
- errors.push(`${label} cannot edit output variable '${variable.name}'. Use preview instead.`);
476
- }
477
- }
478
- function requireBind(entry, variables, label, errors) {
479
- if (!entry.bind) {
480
- errors.push(`${label} (${entry.component}) requires bind.`);
481
- return undefined;
482
- }
483
- const variable = variables.get(entry.bind);
484
- if (!variable) {
485
- errors.push(`${label}.bind references unknown variable '${entry.bind}'.`);
486
- return undefined;
487
- }
488
- return variable;
489
- }
490
- function checkTemplate(template, variableNames, label, errors) {
491
- for (const match of template.matchAll(TEMPLATE_PLACEHOLDER)) {
492
- if (!variableNames.has(match[1])) {
493
- errors.push(`${label} references unknown variable '{{${match[1]}}}'.`);
494
- }
495
- }
496
- }
497
- function isVariableValue(value) {
498
- return typeof value === 'string'
499
- || typeof value === 'boolean'
500
- || (typeof value === 'number' && Number.isFinite(value));
501
- }
502
- function asTable(value) {
503
- if (typeof value === 'object' && value !== null && !Array.isArray(value))
504
- return value;
505
- return undefined;
506
- }
507
- function asArrayOfTables(value) {
508
- if (!Array.isArray(value))
509
- return undefined;
510
- const tables = [];
511
- for (const item of value) {
512
- const table = asTable(item);
513
- if (!table)
514
- return undefined;
515
- tables.push(table);
516
- }
517
- return tables;
518
- }
519
- function asString(value) {
520
- return typeof value === 'string' && value.trim() ? value : undefined;
521
- }
522
- //# sourceMappingURL=SkillAppValidator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkillAppValidator.js","sourceRoot":"","sources":["../../src/skillapp/SkillAppValidator.ts"],"names":[],"mappings":"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"}