agentlaunch-templates 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/build.test.d.ts +12 -0
- package/dist/__tests__/build.test.d.ts.map +1 -0
- package/dist/__tests__/build.test.js +134 -0
- package/dist/__tests__/build.test.js.map +1 -0
- package/dist/__tests__/genesis-integration.test.d.ts +12 -0
- package/dist/__tests__/genesis-integration.test.d.ts.map +1 -0
- package/dist/__tests__/genesis-integration.test.js +143 -0
- package/dist/__tests__/genesis-integration.test.js.map +1 -0
- package/dist/__tests__/genesis.test.d.ts +16 -0
- package/dist/__tests__/genesis.test.d.ts.map +1 -0
- package/dist/__tests__/genesis.test.js +312 -0
- package/dist/__tests__/genesis.test.js.map +1 -0
- package/dist/claude-context.d.ts +51 -1
- package/dist/claude-context.d.ts.map +1 -1
- package/dist/claude-context.js +722 -10
- package/dist/claude-context.js.map +1 -1
- package/dist/generator.d.ts +2 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +21 -9
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/presets.d.ts +50 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +194 -0
- package/dist/presets.js.map +1 -0
- package/dist/registry.d.ts +15 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +37 -3
- package/dist/registry.js.map +1 -1
- package/dist/templates/genesis.d.ts +26 -0
- package/dist/templates/genesis.d.ts.map +1 -0
- package/dist/templates/genesis.js +1197 -0
- package/dist/templates/genesis.js.map +1 -0
- package/dist/templates/gifter.d.ts.map +1 -1
- package/dist/templates/gifter.js +7 -3
- package/dist/templates/gifter.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build verification tests — TST-04
|
|
3
|
+
*
|
|
4
|
+
* Verifies:
|
|
5
|
+
* - All packages export correctly (no import errors)
|
|
6
|
+
* - No TypeScript errors (verified by compilation)
|
|
7
|
+
* - Genesis template and presets are accessible
|
|
8
|
+
* - SDK storage and commerce modules are accessible
|
|
9
|
+
* - Existing functionality is not broken by new modules
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=build.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/build.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build verification tests — TST-04
|
|
3
|
+
*
|
|
4
|
+
* Verifies:
|
|
5
|
+
* - All packages export correctly (no import errors)
|
|
6
|
+
* - No TypeScript errors (verified by compilation)
|
|
7
|
+
* - Genesis template and presets are accessible
|
|
8
|
+
* - SDK storage and commerce modules are accessible
|
|
9
|
+
* - Existing functionality is not broken by new modules
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it } from 'node:test';
|
|
12
|
+
import assert from 'node:assert/strict';
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Templates package exports
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
describe('Build verification — templates package', () => {
|
|
17
|
+
it('exports generateFromTemplate', async () => {
|
|
18
|
+
const mod = await import('../generator.js');
|
|
19
|
+
assert.ok(typeof mod.generateFromTemplate === 'function', 'generateFromTemplate should be a function');
|
|
20
|
+
});
|
|
21
|
+
it('exports getTemplate and listTemplates from registry', async () => {
|
|
22
|
+
const mod = await import('../registry.js');
|
|
23
|
+
assert.ok(typeof mod.getTemplate === 'function', 'getTemplate should be a function');
|
|
24
|
+
assert.ok(typeof mod.listTemplates === 'function', 'listTemplates should be a function');
|
|
25
|
+
});
|
|
26
|
+
it('exports getPreset and listPresets from presets', async () => {
|
|
27
|
+
// presets.js will be created by the presets agent
|
|
28
|
+
const mod = await import('../presets.js');
|
|
29
|
+
assert.ok(typeof mod['getPreset'] === 'function', 'getPreset should be a function');
|
|
30
|
+
assert.ok(typeof mod['listPresets'] === 'function', 'listPresets should be a function');
|
|
31
|
+
});
|
|
32
|
+
it('index.ts re-exports all required symbols', async () => {
|
|
33
|
+
const mod = await import('../index.js');
|
|
34
|
+
assert.ok(typeof mod['generateFromTemplate'] === 'function');
|
|
35
|
+
assert.ok(typeof mod['getTemplate'] === 'function');
|
|
36
|
+
assert.ok(typeof mod['listTemplates'] === 'function');
|
|
37
|
+
assert.ok(typeof mod['getPreset'] === 'function');
|
|
38
|
+
assert.ok(typeof mod['listPresets'] === 'function');
|
|
39
|
+
});
|
|
40
|
+
it('listTemplates returns at least 7 templates (6 original + genesis)', async () => {
|
|
41
|
+
const { listTemplates } = await import('../registry.js');
|
|
42
|
+
const templates = listTemplates();
|
|
43
|
+
assert.ok(templates.length >= 7, `should have at least 7 templates, got ${templates.length}`);
|
|
44
|
+
});
|
|
45
|
+
it('all original templates are still present', async () => {
|
|
46
|
+
const { listTemplates } = await import('../registry.js');
|
|
47
|
+
const templates = listTemplates();
|
|
48
|
+
const names = templates.map((t) => t.name);
|
|
49
|
+
const originalTemplates = [
|
|
50
|
+
'custom',
|
|
51
|
+
'price-monitor',
|
|
52
|
+
'trading-bot',
|
|
53
|
+
'data-analyzer',
|
|
54
|
+
'research',
|
|
55
|
+
'gifter',
|
|
56
|
+
];
|
|
57
|
+
for (const name of originalTemplates) {
|
|
58
|
+
assert.ok(names.includes(name), `original template "${name}" should still be present. Available: ${names.join(', ')}`);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
it('genesis template is present', async () => {
|
|
62
|
+
const { getTemplate } = await import('../registry.js');
|
|
63
|
+
const genesis = getTemplate('genesis');
|
|
64
|
+
assert.ok(genesis, 'genesis template should be registered');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// SDK package exports (via workspace package name)
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
describe('Build verification — SDK package', () => {
|
|
71
|
+
it('exports AgentLaunchClient', async () => {
|
|
72
|
+
const mod = await import('agentlaunch-sdk');
|
|
73
|
+
assert.ok(typeof mod.AgentLaunchClient === 'function', 'should export AgentLaunchClient');
|
|
74
|
+
});
|
|
75
|
+
it('exports AgentLaunch fluent wrapper', async () => {
|
|
76
|
+
const mod = await import('agentlaunch-sdk');
|
|
77
|
+
assert.ok(typeof mod.AgentLaunch === 'function', 'should export AgentLaunch');
|
|
78
|
+
});
|
|
79
|
+
it('exports storage functions', async () => {
|
|
80
|
+
// Cast to Record to access properties that will be added by the storage module agent
|
|
81
|
+
const mod = await import('agentlaunch-sdk');
|
|
82
|
+
assert.ok(typeof mod['listStorage'] === 'function', 'should export listStorage');
|
|
83
|
+
assert.ok(typeof mod['getStorage'] === 'function', 'should export getStorage');
|
|
84
|
+
assert.ok(typeof mod['putStorage'] === 'function', 'should export putStorage');
|
|
85
|
+
assert.ok(typeof mod['deleteStorage'] === 'function', 'should export deleteStorage');
|
|
86
|
+
});
|
|
87
|
+
it('exports commerce functions', async () => {
|
|
88
|
+
// Cast to Record to access properties that will be added by the commerce module agent
|
|
89
|
+
const mod = await import('agentlaunch-sdk');
|
|
90
|
+
assert.ok(typeof mod['getAgentRevenue'] === 'function', 'should export getAgentRevenue');
|
|
91
|
+
assert.ok(typeof mod['getPricingTable'] === 'function', 'should export getPricingTable');
|
|
92
|
+
assert.ok(typeof mod['getAgentCommerceStatus'] === 'function', 'should export getAgentCommerceStatus');
|
|
93
|
+
assert.ok(typeof mod['getNetworkGDP'] === 'function', 'should export getNetworkGDP');
|
|
94
|
+
});
|
|
95
|
+
it('AgentLaunch fluent wrapper creates all namespaces', async () => {
|
|
96
|
+
const { AgentLaunch } = await import('agentlaunch-sdk');
|
|
97
|
+
const al = new AgentLaunch({ apiKey: 'test-key' });
|
|
98
|
+
assert.ok(al.tokens, 'should have tokens namespace');
|
|
99
|
+
assert.ok(al.market, 'should have market namespace');
|
|
100
|
+
assert.ok(al.handoff, 'should have handoff namespace');
|
|
101
|
+
assert.ok(al.agents, 'should have agents namespace');
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// Cross-package compatibility
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
describe('Build verification — cross-package compatibility', () => {
|
|
108
|
+
it('generateFromTemplate produces valid code for all original templates', async () => {
|
|
109
|
+
const { generateFromTemplate, listTemplates } = await import('../index.js');
|
|
110
|
+
const templates = listTemplates();
|
|
111
|
+
for (const tpl of templates) {
|
|
112
|
+
const result = generateFromTemplate(tpl.name, {
|
|
113
|
+
agent_name: 'BuildTestAgent',
|
|
114
|
+
});
|
|
115
|
+
assert.ok(result.code, `${tpl.name}: should produce code`);
|
|
116
|
+
assert.ok(result.readme, `${tpl.name}: should produce readme`);
|
|
117
|
+
assert.ok(result.envExample, `${tpl.name}: should produce envExample`);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
it('GenerateResult type has all expected fields', async () => {
|
|
121
|
+
const { generateFromTemplate } = await import('../generator.js');
|
|
122
|
+
const result = generateFromTemplate('custom', {
|
|
123
|
+
agent_name: 'TypeTest',
|
|
124
|
+
});
|
|
125
|
+
// Verify all fields from GenerateResult interface
|
|
126
|
+
assert.ok(typeof result.code === 'string');
|
|
127
|
+
assert.ok(typeof result.readme === 'string');
|
|
128
|
+
assert.ok(typeof result.envExample === 'string');
|
|
129
|
+
assert.ok(typeof result.claudeMd === 'string');
|
|
130
|
+
assert.ok(typeof result.claudeSettings === 'string');
|
|
131
|
+
assert.ok(typeof result.agentlaunchConfig === 'string');
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=build.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.test.js","sourceRoot":"","sources":["../../src/__tests__/build.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for Genesis template generation
|
|
3
|
+
*
|
|
4
|
+
* These tests verify end-to-end template generation without needing
|
|
5
|
+
* an API key or network access. They exercise the full generateFromTemplate
|
|
6
|
+
* pipeline and preset system to ensure generated code is valid and
|
|
7
|
+
* meaningfully different across presets.
|
|
8
|
+
*
|
|
9
|
+
* Run with: npm test
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=genesis-integration.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genesis-integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/genesis-integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for Genesis template generation
|
|
3
|
+
*
|
|
4
|
+
* These tests verify end-to-end template generation without needing
|
|
5
|
+
* an API key or network access. They exercise the full generateFromTemplate
|
|
6
|
+
* pipeline and preset system to ensure generated code is valid and
|
|
7
|
+
* meaningfully different across presets.
|
|
8
|
+
*
|
|
9
|
+
* Run with: npm test
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it } from 'node:test';
|
|
12
|
+
import assert from 'node:assert/strict';
|
|
13
|
+
import { generateFromTemplate } from '../generator.js';
|
|
14
|
+
import { listPresets, getPreset } from '../presets.js';
|
|
15
|
+
import { listTemplates } from '../registry.js';
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Genesis template generation
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
describe('Integration: Genesis template generation', () => {
|
|
20
|
+
it('generates valid Python from genesis template', () => {
|
|
21
|
+
const result = generateFromTemplate('genesis', {
|
|
22
|
+
agent_name: 'TestAgent',
|
|
23
|
+
});
|
|
24
|
+
assert.ok(result.code.length > 100, 'code should be substantial');
|
|
25
|
+
assert.ok(result.code.includes('from uagents import'), 'code should contain uagents import');
|
|
26
|
+
assert.ok(result.code.includes('TestAgent'), 'code should contain the agent name');
|
|
27
|
+
});
|
|
28
|
+
it('generates all expected output files', () => {
|
|
29
|
+
const result = generateFromTemplate('genesis', {
|
|
30
|
+
agent_name: 'OutputTest',
|
|
31
|
+
});
|
|
32
|
+
assert.ok(result.code, 'should produce code');
|
|
33
|
+
assert.ok(result.readme, 'should produce readme');
|
|
34
|
+
assert.ok(result.envExample, 'should produce envExample');
|
|
35
|
+
assert.ok(result.claudeMd, 'should produce claudeMd');
|
|
36
|
+
assert.ok(result.claudeSettings, 'should produce claudeSettings');
|
|
37
|
+
assert.ok(result.agentlaunchConfig, 'should produce agentlaunchConfig');
|
|
38
|
+
});
|
|
39
|
+
it('generates with each preset and produces unique code', () => {
|
|
40
|
+
const presets = listPresets();
|
|
41
|
+
const codes = new Set();
|
|
42
|
+
assert.ok(presets.length >= 7, `should have at least 7 presets, got ${presets.length}`);
|
|
43
|
+
for (const preset of presets) {
|
|
44
|
+
const result = generateFromTemplate('genesis', {
|
|
45
|
+
...preset.variables,
|
|
46
|
+
agent_name: `Test_${preset.name}`,
|
|
47
|
+
});
|
|
48
|
+
assert.ok(result.code.includes(`Test_${preset.name}`), `code for preset "${preset.name}" should contain agent name`);
|
|
49
|
+
// Capture a signature of the code (first 200 chars should differ by role/description)
|
|
50
|
+
codes.add(result.code.substring(0, 200));
|
|
51
|
+
}
|
|
52
|
+
// At least some should be different (role/description differ)
|
|
53
|
+
assert.ok(codes.size >= 3, `presets should produce meaningfully different code, got ${codes.size} unique signatures`);
|
|
54
|
+
});
|
|
55
|
+
it('strict mode rejects missing required variables', () => {
|
|
56
|
+
assert.throws(() => generateFromTemplate('genesis', {}, { variables: {}, strict: true }), /agent_name/i, 'should throw mentioning agent_name');
|
|
57
|
+
});
|
|
58
|
+
it('non-strict mode leaves placeholder for missing required vars', () => {
|
|
59
|
+
const result = generateFromTemplate('genesis', {}, { variables: {}, strict: false });
|
|
60
|
+
assert.ok(result.code.includes('{{agent_name}}'), 'unresolved agent_name placeholder should remain in non-strict mode');
|
|
61
|
+
});
|
|
62
|
+
it('generated code contains commerce layers', () => {
|
|
63
|
+
const result = generateFromTemplate('genesis', {
|
|
64
|
+
agent_name: 'CommerceTest',
|
|
65
|
+
});
|
|
66
|
+
assert.ok(result.code.includes('PaymentService'), 'code should include PaymentService');
|
|
67
|
+
assert.ok(result.code.includes('PricingTable'), 'code should include PricingTable');
|
|
68
|
+
assert.ok(result.code.includes('TierManager'), 'code should include TierManager');
|
|
69
|
+
assert.ok(result.code.includes('RevenueTracker'), 'code should include RevenueTracker');
|
|
70
|
+
});
|
|
71
|
+
it('generated code follows Agentverse patterns', () => {
|
|
72
|
+
const result = generateFromTemplate('genesis', {
|
|
73
|
+
agent_name: 'PatternTest',
|
|
74
|
+
});
|
|
75
|
+
assert.ok(result.code.includes('ChatAcknowledgement'), 'code should include ChatAcknowledgement handler');
|
|
76
|
+
assert.ok(result.code.includes('publish_manifest=True'), 'code should include publish_manifest=True');
|
|
77
|
+
assert.ok(result.code.includes('datetime.now()'), 'code should use datetime.now()');
|
|
78
|
+
assert.ok(!result.code.includes('datetime.utcnow()'), 'code should not use deprecated datetime.utcnow()');
|
|
79
|
+
});
|
|
80
|
+
it('generated code has no unresolved placeholders when agent_name is provided', () => {
|
|
81
|
+
const result = generateFromTemplate('genesis', {
|
|
82
|
+
agent_name: 'FullyResolved',
|
|
83
|
+
});
|
|
84
|
+
const unresolved = result.code.match(/\{\{\w+\}\}/g) || [];
|
|
85
|
+
assert.equal(unresolved.length, 0, `should have no unresolved placeholders, found: ${unresolved.join(', ')}`);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// Preset round-trip through generator
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
describe('Integration: Preset -> Genesis round-trip', () => {
|
|
92
|
+
const presetNames = [
|
|
93
|
+
'oracle',
|
|
94
|
+
'brain',
|
|
95
|
+
'analyst',
|
|
96
|
+
'coordinator',
|
|
97
|
+
'sentinel',
|
|
98
|
+
'launcher',
|
|
99
|
+
'scout',
|
|
100
|
+
];
|
|
101
|
+
for (const presetName of presetNames) {
|
|
102
|
+
it(`preset "${presetName}" generates complete project with zero unresolved placeholders`, () => {
|
|
103
|
+
const preset = getPreset(presetName);
|
|
104
|
+
assert.ok(preset, `preset "${presetName}" should exist`);
|
|
105
|
+
const result = generateFromTemplate('genesis', {
|
|
106
|
+
...preset.variables,
|
|
107
|
+
agent_name: `Integration_${presetName}`,
|
|
108
|
+
});
|
|
109
|
+
// Verify substantial code
|
|
110
|
+
assert.ok(result.code.length > 500, `${presetName}: code should be substantial`);
|
|
111
|
+
// Verify no unresolved placeholders
|
|
112
|
+
const unresolved = result.code.match(/\{\{\w+\}\}/g) || [];
|
|
113
|
+
assert.equal(unresolved.length, 0, `${presetName}: should have no unresolved placeholders, found: ${unresolved.join(', ')}`);
|
|
114
|
+
// Verify all output files exist
|
|
115
|
+
assert.ok(result.readme.length > 0, `${presetName}: readme should be non-empty`);
|
|
116
|
+
assert.ok(result.envExample.length > 0, `${presetName}: envExample should be non-empty`);
|
|
117
|
+
assert.ok(result.claudeMd.length > 0, `${presetName}: claudeMd should be non-empty`);
|
|
118
|
+
// Verify config references genesis template
|
|
119
|
+
const config = JSON.parse(result.agentlaunchConfig);
|
|
120
|
+
assert.equal(config.template, 'genesis', `${presetName}: config should reference genesis template`);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
// Template registry integration
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
describe('Integration: Template registry', () => {
|
|
128
|
+
it('all registered templates can generate code', () => {
|
|
129
|
+
const templates = listTemplates();
|
|
130
|
+
assert.ok(templates.length >= 7, `should have at least 7 templates, got ${templates.length}`);
|
|
131
|
+
for (const tpl of templates) {
|
|
132
|
+
// Generate with just agent_name (non-strict)
|
|
133
|
+
const result = generateFromTemplate(tpl.name, {
|
|
134
|
+
agent_name: `RegistryTest_${tpl.name}`,
|
|
135
|
+
});
|
|
136
|
+
assert.ok(result.code.length > 50, `template "${tpl.name}" should produce non-trivial code`);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
it('unknown template name throws', () => {
|
|
140
|
+
assert.throws(() => generateFromTemplate('__nonexistent_template__', { agent_name: 'Test' }), /not found/i, 'should throw for unknown template');
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=genesis-integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genesis-integration.test.js","sourceRoot":"","sources":["../../src/__tests__/genesis-integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for Genesis template and Presets system — TST-01
|
|
3
|
+
*
|
|
4
|
+
* Verifies:
|
|
5
|
+
* - Genesis template generates valid output with basic variables
|
|
6
|
+
* - All 7 presets generate valid code via generateFromTemplate("genesis", ...)
|
|
7
|
+
* - Variable substitution replaces all expected placeholders
|
|
8
|
+
* - Generated code contains required markers and imports
|
|
9
|
+
* - Commerce layers (PaymentService, PricingTable, TierManager) present
|
|
10
|
+
* - Strict mode throws on missing required variables
|
|
11
|
+
* - Default values are used when only agent_name is provided
|
|
12
|
+
* - getTemplate("genesis") returns the template metadata
|
|
13
|
+
* - listTemplates() includes genesis and it is first in the list
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=genesis.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genesis.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/genesis.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|