agentlaunch-templates 0.4.3 → 0.4.5

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 (79) hide show
  1. package/dist/__tests__/build.test.d.ts +1 -1
  2. package/dist/__tests__/build.test.js +5 -5
  3. package/dist/__tests__/build.test.js.map +1 -1
  4. package/dist/__tests__/consumer-commerce.test.d.ts +11 -0
  5. package/dist/__tests__/consumer-commerce.test.d.ts.map +1 -0
  6. package/dist/__tests__/consumer-commerce.test.js +118 -0
  7. package/dist/__tests__/consumer-commerce.test.js.map +1 -0
  8. package/dist/__tests__/gaps.test.d.ts +11 -0
  9. package/dist/__tests__/gaps.test.d.ts.map +1 -0
  10. package/dist/__tests__/gaps.test.js +196 -0
  11. package/dist/__tests__/gaps.test.js.map +1 -0
  12. package/dist/__tests__/per-template.test.d.ts +8 -0
  13. package/dist/__tests__/per-template.test.d.ts.map +1 -0
  14. package/dist/__tests__/per-template.test.js +213 -0
  15. package/dist/__tests__/per-template.test.js.map +1 -0
  16. package/dist/__tests__/{genesis-integration.test.d.ts → swarm-starter-integration.test.d.ts} +2 -2
  17. package/dist/__tests__/swarm-starter-integration.test.d.ts.map +1 -0
  18. package/dist/__tests__/{genesis-integration.test.js → swarm-starter-integration.test.js} +24 -24
  19. package/dist/__tests__/swarm-starter-integration.test.js.map +1 -0
  20. package/dist/__tests__/{genesis.test.d.ts → swarm-starter.test.d.ts} +6 -6
  21. package/dist/__tests__/swarm-starter.test.d.ts.map +1 -0
  22. package/dist/__tests__/{genesis.test.js → swarm-starter.test.js} +71 -73
  23. package/dist/__tests__/swarm-starter.test.js.map +1 -0
  24. package/dist/claude-context.d.ts +1 -1
  25. package/dist/claude-context.d.ts.map +1 -1
  26. package/dist/claude-context.js +55 -49
  27. package/dist/claude-context.js.map +1 -1
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/people.d.ts +108 -0
  33. package/dist/people.d.ts.map +1 -0
  34. package/dist/people.js +564 -0
  35. package/dist/people.js.map +1 -0
  36. package/dist/presets.d.ts +13 -13
  37. package/dist/presets.d.ts.map +1 -1
  38. package/dist/presets.js +331 -96
  39. package/dist/presets.js.map +1 -1
  40. package/dist/registry.d.ts +3 -8
  41. package/dist/registry.d.ts.map +1 -1
  42. package/dist/registry.js +8 -28
  43. package/dist/registry.js.map +1 -1
  44. package/dist/templates/chat-memory.d.ts.map +1 -1
  45. package/dist/templates/chat-memory.js +9 -2
  46. package/dist/templates/chat-memory.js.map +1 -1
  47. package/dist/templates/consumer-commerce.d.ts +14 -0
  48. package/dist/templates/consumer-commerce.d.ts.map +1 -0
  49. package/dist/templates/consumer-commerce.js +439 -0
  50. package/dist/templates/consumer-commerce.js.map +1 -0
  51. package/dist/templates/custom.d.ts.map +1 -1
  52. package/dist/templates/custom.js +9 -2
  53. package/dist/templates/custom.js.map +1 -1
  54. package/dist/templates/data-analyzer.d.ts.map +1 -1
  55. package/dist/templates/data-analyzer.js +9 -2
  56. package/dist/templates/data-analyzer.js.map +1 -1
  57. package/dist/templates/gifter.d.ts.map +1 -1
  58. package/dist/templates/gifter.js +9 -2
  59. package/dist/templates/gifter.js.map +1 -1
  60. package/dist/templates/price-monitor.d.ts.map +1 -1
  61. package/dist/templates/price-monitor.js +9 -2
  62. package/dist/templates/price-monitor.js.map +1 -1
  63. package/dist/templates/research.d.ts.map +1 -1
  64. package/dist/templates/research.js +9 -2
  65. package/dist/templates/research.js.map +1 -1
  66. package/dist/templates/{genesis.d.ts → swarm-starter.d.ts} +2 -2
  67. package/dist/templates/swarm-starter.d.ts.map +1 -0
  68. package/dist/templates/{genesis.js → swarm-starter.js} +154 -42
  69. package/dist/templates/swarm-starter.js.map +1 -0
  70. package/dist/templates/trading-bot.d.ts.map +1 -1
  71. package/dist/templates/trading-bot.js +9 -2
  72. package/dist/templates/trading-bot.js.map +1 -1
  73. package/package.json +3 -2
  74. package/dist/__tests__/genesis-integration.test.d.ts.map +0 -1
  75. package/dist/__tests__/genesis-integration.test.js.map +0 -1
  76. package/dist/__tests__/genesis.test.d.ts.map +0 -1
  77. package/dist/__tests__/genesis.test.js.map +0 -1
  78. package/dist/templates/genesis.d.ts.map +0 -1
  79. package/dist/templates/genesis.js.map +0 -1
@@ -1,16 +1,16 @@
1
1
  /**
2
- * Tests for Genesis template and Presets system — TST-01
2
+ * Tests for Swarm-starter template and Presets system — TST-01
3
3
  *
4
4
  * Verifies:
5
- * - Genesis template generates valid output with basic variables
6
- * - All 7 presets generate valid code via generateFromTemplate("genesis", ...)
5
+ * - Swarm-starter template generates valid output with basic variables
6
+ * - All 7 presets generate valid code via generateFromTemplate("swarm-starter", ...)
7
7
  * - Variable substitution replaces all expected placeholders
8
8
  * - Generated code contains required markers and imports
9
9
  * - Commerce layers (PaymentService, PricingTable, TierManager) present
10
10
  * - Strict mode throws on missing required variables
11
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
12
+ * - getTemplate("swarm-starter") returns the template metadata
13
+ * - listTemplates() includes swarm-starter and it is first in the list
14
14
  */
15
15
  import { describe, it } from 'node:test';
16
16
  import assert from 'node:assert/strict';
@@ -21,43 +21,43 @@ import { getPreset, listPresets } from '../presets.js';
21
21
  // Constants
22
22
  // ---------------------------------------------------------------------------
23
23
  const PRESET_NAMES = [
24
- 'oracle',
25
- 'brain',
26
- 'analyst',
27
- 'coordinator',
28
- 'sentinel',
29
- 'launcher',
30
- 'scout',
24
+ 'writer',
25
+ 'social',
26
+ 'community',
27
+ 'analytics',
28
+ 'outreach',
29
+ 'ads',
30
+ 'strategy',
31
31
  ];
32
32
  // ---------------------------------------------------------------------------
33
- // Genesis template registration
33
+ // Swarm-starter template registration
34
34
  // ---------------------------------------------------------------------------
35
- describe('Genesis template — registration', () => {
36
- it('getTemplate("genesis") returns a valid template object', () => {
37
- const tpl = getTemplate('genesis');
38
- assert.ok(tpl, 'genesis template should exist in the registry');
39
- assert.equal(tpl.name, 'genesis');
35
+ describe('Swarm-starter template — registration', () => {
36
+ it('getTemplate("swarm-starter") returns a valid template object', () => {
37
+ const tpl = getTemplate('swarm-starter');
38
+ assert.ok(tpl, 'swarm-starter template should exist in the registry');
39
+ assert.equal(tpl.name, 'swarm-starter');
40
40
  assert.ok(tpl.description, 'template should have a description');
41
41
  assert.ok(tpl.category, 'template should have a category');
42
42
  assert.ok(Array.isArray(tpl.variables), 'template should have variables array');
43
43
  assert.ok(typeof tpl.code === 'string', 'template should have code string');
44
44
  });
45
- it('listTemplates() includes genesis', () => {
45
+ it('listTemplates() includes swarm-starter', () => {
46
46
  const templates = listTemplates();
47
47
  const names = templates.map((t) => t.name);
48
- assert.ok(names.includes('genesis'), `genesis should be in list: ${names.join(', ')}`);
48
+ assert.ok(names.includes('swarm-starter'), `swarm-starter should be in list: ${names.join(', ')}`);
49
49
  });
50
- it('genesis is first in the template list', () => {
50
+ it('chat-memory is first in the template list (default)', () => {
51
51
  const templates = listTemplates();
52
- assert.equal(templates[0].name, 'genesis', `First template should be genesis, got: ${templates[0].name}`);
52
+ assert.equal(templates[0].name, 'chat-memory', `First template should be chat-memory (default), got: ${templates[0].name}`);
53
53
  });
54
54
  });
55
55
  // ---------------------------------------------------------------------------
56
56
  // Basic generation
57
57
  // ---------------------------------------------------------------------------
58
- describe('Genesis template — basic generation', () => {
58
+ describe('Swarm-starter template — basic generation', () => {
59
59
  it('generates valid output with agent_name', () => {
60
- const result = generateFromTemplate('genesis', {
60
+ const result = generateFromTemplate('swarm-starter', {
61
61
  agent_name: 'TestAgent',
62
62
  });
63
63
  assert.ok(result.code, 'should produce code');
@@ -68,7 +68,7 @@ describe('Genesis template — basic generation', () => {
68
68
  assert.ok(result.agentlaunchConfig, 'should produce agentlaunchConfig');
69
69
  });
70
70
  it('code output is non-empty Python', () => {
71
- const result = generateFromTemplate('genesis', {
71
+ const result = generateFromTemplate('swarm-starter', {
72
72
  agent_name: 'TestAgent',
73
73
  });
74
74
  assert.ok(result.code.length > 100, 'code should be substantial');
@@ -76,52 +76,52 @@ describe('Genesis template — basic generation', () => {
76
76
  assert.ok(result.code.includes('from uagents import Agent, Context'), 'code should contain uagents import');
77
77
  });
78
78
  it('readme mentions the agent name', () => {
79
- const result = generateFromTemplate('genesis', {
80
- agent_name: 'MyGenesisBot',
79
+ const result = generateFromTemplate('swarm-starter', {
80
+ agent_name: 'MySwarmBot',
81
81
  });
82
- assert.ok(result.readme.includes('MyGenesisBot'), 'readme should mention agent_name');
82
+ assert.ok(result.readme.includes('MySwarmBot'), 'readme should mention agent_name');
83
83
  });
84
84
  it('envExample lists required environment variables', () => {
85
- const result = generateFromTemplate('genesis', {
85
+ const result = generateFromTemplate('swarm-starter', {
86
86
  agent_name: 'TestAgent',
87
87
  });
88
88
  assert.ok(result.envExample.includes('AGENTVERSE_API_KEY'), 'envExample should include AGENTVERSE_API_KEY');
89
89
  });
90
- it('agentlaunchConfig references the genesis template', () => {
91
- const result = generateFromTemplate('genesis', {
90
+ it('agentlaunchConfig references the swarm-starter template', () => {
91
+ const result = generateFromTemplate('swarm-starter', {
92
92
  agent_name: 'TestAgent',
93
93
  });
94
94
  const config = JSON.parse(result.agentlaunchConfig);
95
- assert.equal(config.template, 'genesis', 'config should reference genesis template');
95
+ assert.equal(config.template, 'swarm-starter', 'config should reference swarm-starter template');
96
96
  });
97
97
  });
98
98
  // ---------------------------------------------------------------------------
99
99
  // Variable substitution
100
100
  // ---------------------------------------------------------------------------
101
- describe('Genesis template — variable substitution', () => {
101
+ describe('Swarm-starter template — variable substitution', () => {
102
102
  it('replaces {{agent_name}} in the code', () => {
103
- const result = generateFromTemplate('genesis', {
104
- agent_name: 'AlphaOracle',
103
+ const result = generateFromTemplate('swarm-starter', {
104
+ agent_name: 'AlphaWriter',
105
105
  });
106
- assert.ok(result.code.includes('AlphaOracle'), 'code should contain the agent name');
106
+ assert.ok(result.code.includes('AlphaWriter'), 'code should contain the agent name');
107
107
  assert.ok(!result.code.includes('{{agent_name}}'), 'code should not contain raw {{agent_name}} placeholder');
108
108
  });
109
109
  it('replaces {{description}} in the code', () => {
110
- const result = generateFromTemplate('genesis', {
110
+ const result = generateFromTemplate('swarm-starter', {
111
111
  agent_name: 'TestBot',
112
112
  description: 'A custom description for testing',
113
113
  });
114
114
  assert.ok(result.code.includes('A custom description for testing'), 'code should contain the description');
115
115
  });
116
116
  it('replaces {{role}} in the code', () => {
117
- const result = generateFromTemplate('genesis', {
117
+ const result = generateFromTemplate('swarm-starter', {
118
118
  agent_name: 'TestBot',
119
- role: 'data-oracle',
119
+ role: 'content-writer',
120
120
  });
121
- assert.ok(result.code.includes('data-oracle'), 'code should contain the role');
121
+ assert.ok(result.code.includes('content-writer'), 'code should contain the role');
122
122
  });
123
123
  it('replaces {{service_price_afet}} in the code', () => {
124
- const result = generateFromTemplate('genesis', {
124
+ const result = generateFromTemplate('swarm-starter', {
125
125
  agent_name: 'TestBot',
126
126
  service_price_afet: '5000000000000000',
127
127
  });
@@ -131,33 +131,33 @@ describe('Genesis template — variable substitution', () => {
131
131
  // ---------------------------------------------------------------------------
132
132
  // Required code markers
133
133
  // ---------------------------------------------------------------------------
134
- describe('Genesis template — required code markers', () => {
134
+ describe('Swarm-starter template — required code markers', () => {
135
135
  it('contains YOUR SWARM LOGIC marker', () => {
136
- const result = generateFromTemplate('genesis', {
136
+ const result = generateFromTemplate('swarm-starter', {
137
137
  agent_name: 'TestBot',
138
138
  });
139
139
  assert.ok(result.code.includes('YOUR SWARM LOGIC'), 'code should contain YOUR SWARM LOGIC marker for customization');
140
140
  });
141
141
  it('contains required uagents import', () => {
142
- const result = generateFromTemplate('genesis', {
142
+ const result = generateFromTemplate('swarm-starter', {
143
143
  agent_name: 'TestBot',
144
144
  });
145
145
  assert.ok(result.code.includes('from uagents import Agent, Context'), 'code should import Agent and Context from uagents');
146
146
  });
147
147
  it('contains ChatAcknowledgement handler', () => {
148
- const result = generateFromTemplate('genesis', {
148
+ const result = generateFromTemplate('swarm-starter', {
149
149
  agent_name: 'TestBot',
150
150
  });
151
151
  assert.ok(result.code.includes('ChatAcknowledgement'), 'code should include ChatAcknowledgement handler');
152
152
  });
153
153
  it('contains publish_manifest=True', () => {
154
- const result = generateFromTemplate('genesis', {
154
+ const result = generateFromTemplate('swarm-starter', {
155
155
  agent_name: 'TestBot',
156
156
  });
157
157
  assert.ok(result.code.includes('publish_manifest=True'), 'code should include publish_manifest=True in agent.include()');
158
158
  });
159
159
  it('uses datetime.now() not datetime.utcnow()', () => {
160
- const result = generateFromTemplate('genesis', {
160
+ const result = generateFromTemplate('swarm-starter', {
161
161
  agent_name: 'TestBot',
162
162
  });
163
163
  // Should use datetime.now()
@@ -169,27 +169,27 @@ describe('Genesis template — required code markers', () => {
169
169
  // ---------------------------------------------------------------------------
170
170
  // Commerce layers
171
171
  // ---------------------------------------------------------------------------
172
- describe('Genesis template — commerce layers', () => {
172
+ describe('Swarm-starter template — commerce layers', () => {
173
173
  it('contains PaymentService', () => {
174
- const result = generateFromTemplate('genesis', {
174
+ const result = generateFromTemplate('swarm-starter', {
175
175
  agent_name: 'TestBot',
176
176
  });
177
177
  assert.ok(result.code.includes('PaymentService'), 'code should include PaymentService class');
178
178
  });
179
179
  it('contains PricingTable', () => {
180
- const result = generateFromTemplate('genesis', {
180
+ const result = generateFromTemplate('swarm-starter', {
181
181
  agent_name: 'TestBot',
182
182
  });
183
183
  assert.ok(result.code.includes('PricingTable'), 'code should include PricingTable class');
184
184
  });
185
185
  it('contains TierManager', () => {
186
- const result = generateFromTemplate('genesis', {
186
+ const result = generateFromTemplate('swarm-starter', {
187
187
  agent_name: 'TestBot',
188
188
  });
189
189
  assert.ok(result.code.includes('TierManager'), 'code should include TierManager class');
190
190
  });
191
191
  it('contains RevenueTracker', () => {
192
- const result = generateFromTemplate('genesis', {
192
+ const result = generateFromTemplate('swarm-starter', {
193
193
  agent_name: 'TestBot',
194
194
  });
195
195
  assert.ok(result.code.includes('RevenueTracker'), 'code should include RevenueTracker for GDP tracking');
@@ -198,15 +198,15 @@ describe('Genesis template — commerce layers', () => {
198
198
  // ---------------------------------------------------------------------------
199
199
  // Strict mode
200
200
  // ---------------------------------------------------------------------------
201
- describe('Genesis template — strict mode', () => {
201
+ describe('Swarm-starter template — strict mode', () => {
202
202
  it('throws when strict is true and agent_name is missing', () => {
203
- assert.throws(() => generateFromTemplate('genesis', {}, { variables: {}, strict: true }), /agent_name/i, 'should throw mentioning agent_name');
203
+ assert.throws(() => generateFromTemplate('swarm-starter', {}, { variables: {}, strict: true }), /agent_name/i, 'should throw mentioning agent_name');
204
204
  });
205
205
  it('does not throw when strict is false and agent_name is missing', () => {
206
- assert.doesNotThrow(() => generateFromTemplate('genesis', {}, { variables: {}, strict: false }), 'should not throw in non-strict mode');
206
+ assert.doesNotThrow(() => generateFromTemplate('swarm-starter', {}, { variables: {}, strict: false }), 'should not throw in non-strict mode');
207
207
  });
208
208
  it('leaves placeholder when strict is false and required var is missing', () => {
209
- const result = generateFromTemplate('genesis', {}, { variables: {}, strict: false });
209
+ const result = generateFromTemplate('swarm-starter', {}, { variables: {}, strict: false });
210
210
  // The unresolved placeholder should remain
211
211
  assert.ok(result.code.includes('{{agent_name}}'), 'unresolved placeholder should remain in non-strict mode');
212
212
  });
@@ -214,9 +214,9 @@ describe('Genesis template — strict mode', () => {
214
214
  // ---------------------------------------------------------------------------
215
215
  // Default values
216
216
  // ---------------------------------------------------------------------------
217
- describe('Genesis template — default values', () => {
217
+ describe('Swarm-starter template — default values', () => {
218
218
  it('uses default values when only agent_name is provided', () => {
219
- const result = generateFromTemplate('genesis', {
219
+ const result = generateFromTemplate('swarm-starter', {
220
220
  agent_name: 'MinimalAgent',
221
221
  });
222
222
  // Code should be valid (no raw {{...}} placeholders for defaulted vars)
@@ -251,7 +251,7 @@ describe('Presets — listPresets()', () => {
251
251
  assert.ok(typeof preset.variables === 'object', `preset ${preset.name} variables should be an object`);
252
252
  }
253
253
  });
254
- it('includes all 7 seed agent presets', () => {
254
+ it('includes all 7 marketing team presets', () => {
255
255
  const presets = listPresets();
256
256
  const presetNames = presets.map((p) => p.name);
257
257
  for (const expected of PRESET_NAMES) {
@@ -271,30 +271,28 @@ describe('Presets — getPreset()', () => {
271
271
  const preset = getPreset('nonexistent-preset-xyz');
272
272
  assert.equal(preset, undefined, 'unknown preset should return undefined');
273
273
  });
274
- it('oracle preset has expected structure', () => {
275
- const oracle = getPreset('oracle');
276
- assert.ok(oracle, 'oracle preset should exist');
277
- assert.ok(oracle.displayName, 'oracle should have displayName');
278
- assert.ok(oracle.symbol, 'oracle should have symbol');
279
- assert.ok(oracle.description, 'oracle should have description');
280
- assert.ok(oracle.role, 'oracle should have role');
281
- assert.ok(oracle.variables.agent_name, 'oracle variables should include agent_name');
274
+ it('writer preset has expected structure', () => {
275
+ const writer = getPreset('writer');
276
+ assert.ok(writer, 'writer preset should exist');
277
+ assert.ok(writer.displayName, 'writer should have displayName');
278
+ assert.ok(writer.symbol, 'writer should have symbol');
279
+ assert.ok(writer.description, 'writer should have description');
280
+ assert.ok(writer.role, 'writer should have role');
281
+ assert.ok(writer.variables.role, 'writer variables should include role');
282
282
  });
283
283
  });
284
284
  // ---------------------------------------------------------------------------
285
285
  // All presets generate valid code
286
286
  // ---------------------------------------------------------------------------
287
- describe('Presets — all presets generate valid genesis code', () => {
287
+ describe('Presets — all presets generate valid swarm-starter code', () => {
288
288
  for (const presetName of PRESET_NAMES) {
289
- it(`preset "${presetName}" generates valid code from genesis template`, () => {
289
+ it(`preset "${presetName}" generates valid code from swarm-starter template`, () => {
290
290
  const preset = getPreset(presetName);
291
291
  assert.ok(preset, `preset "${presetName}" should exist`);
292
- const result = generateFromTemplate('genesis', preset.variables);
292
+ const result = generateFromTemplate('swarm-starter', preset.variables);
293
293
  // Basic validity checks
294
294
  assert.ok(result.code, `${presetName}: should produce code`);
295
295
  assert.ok(result.code.length > 100, `${presetName}: code should be substantial`);
296
- // Should contain the preset's agent name
297
- assert.ok(result.code.includes(preset.variables.agent_name), `${presetName}: code should contain the agent name "${preset.variables.agent_name}"`);
298
296
  // Should have required imports
299
297
  assert.ok(result.code.includes('from uagents import'), `${presetName}: code should have uagents import`);
300
298
  // No unresolved placeholders
@@ -309,4 +307,4 @@ describe('Presets — all presets generate valid genesis code', () => {
309
307
  });
310
308
  }
311
309
  });
312
- //# sourceMappingURL=genesis.test.js.map
310
+ //# sourceMappingURL=swarm-starter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm-starter.test.js","sourceRoot":"","sources":["../../src/__tests__/swarm-starter.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,YAAY,GAAG;IACnB,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,WAAW;IACX,UAAU;IACV,KAAK;IACL,UAAU;CACX,CAAC;AAEF,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,GAAG,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,qDAAqD,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QAC3D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,sCAAsC,CAAC,CAAC;QAChF,MAAM,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,kCAAkC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,oCAAoC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CACV,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EACjB,aAAa,EACb,wDAAwD,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAC5E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;QACtD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,4BAA4B,CAAC,CAAC;QAClE,sBAAsB;QACtB,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAC1D,oCAAoC,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,YAAY;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EACpC,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAChD,8CAA8C,CAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,QAAQ,EACf,eAAe,EACf,gDAAgD,CACjD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,aAAa;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EACnC,oCAAoC,CACrC,CAAC;QACF,MAAM,CAAC,EAAE,CACP,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACvC,wDAAwD,CACzD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,kCAAkC;SAChD,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EACxD,qCAAqC,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACtC,8BAA8B,CAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;YACrB,kBAAkB,EAAE,kBAAkB;SACvC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EACxC,uCAAuC,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EACxC,+DAA+D,CAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAC1D,mDAAmD,CACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAC3C,iDAAiD,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAC7C,8DAA8D,CAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACtC,gCAAgC,CACjC,CAAC;QACF,kDAAkD;QAClD,MAAM,CAAC,EAAE,CACP,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAC1C,kDAAkD,CACnD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACtC,0CAA0C,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EACpC,wCAAwC,CACzC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EACnC,uCAAuC,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACtC,qDAAqD,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CACH,oBAAoB,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAC5E,aAAa,EACb,oCAAoC,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,YAAY,CACjB,GAAG,EAAE,CACH,oBAAoB,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAC7E,qCAAqC,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,MAAM,GAAG,oBAAoB,CACjC,eAAe,EACf,EAAE,EACF,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CACjC,CAAC;QAEF,2CAA2C;QAC3C,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACtC,yDAAyD,CAC1D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAC;QAEH,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAEpF,4DAA4D;QAC5D,kEAAkE;QAClE,gEAAgE;QAChE,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACzE,qGAAqG;QACrG,MAAM,CAAC,EAAE,CACP,eAAe,KAAK,CAAC,EACrB,iDAAiD,eAAe,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5H,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,sCAAsC,CAAC,CAAC;QAC1E,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,uCAAuC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAE9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;YAClD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,MAAM,CAAC,IAAI,0BAA0B,CAAC,CAAC;YAC/E,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,MAAM,CAAC,IAAI,qBAAqB,CAAC,CAAC;YACrE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,MAAM,CAAC,IAAI,0BAA0B,CAAC,CAAC;YAC/E,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,MAAM,CAAC,IAAI,mBAAmB,CAAC,CAAC;YACjE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,MAAM,CAAC,IAAI,wBAAwB,CAAC,CAAC;YAC3E,MAAM,CAAC,EAAE,CACP,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EACpC,UAAU,MAAM,CAAC,IAAI,gCAAgC,CACtD,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEjE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,CAAC,EAAE,CACP,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC9B,mBAAmB,QAAQ,wBAAwB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,IAAI,2BAA2B,CAAC,CAAC;YACjE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,wCAAwC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;QACtD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,sCAAsC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACvE,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,EAAE,CAAC,WAAW,UAAU,oDAAoD,EAAE,GAAG,EAAE;YACjF,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,UAAU,gBAAgB,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAEvE,wBAAwB;YACxB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,UAAU,uBAAuB,CAAC,CAAC;YAC7D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,UAAU,8BAA8B,CAAC,CAAC;YAEjF,+BAA+B;YAC/B,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAC3C,GAAG,UAAU,mCAAmC,CACjD,CAAC;YAEF,6BAA6B;YAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,CAAC,KAAK,CACV,UAAU,CAAC,MAAM,EACjB,CAAC,EACD,GAAG,UAAU,oDAAoD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzF,CAAC;YAEF,oCAAoC;YACpC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,yBAAyB,CAAC,CAAC;YACjE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,UAAU,6BAA6B,CAAC,CAAC;YACzE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,UAAU,2BAA2B,CAAC,CAAC;YACrE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,UAAU,iCAAiC,CAAC,CAAC;YACjF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,UAAU,oCAAoC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -11,7 +11,7 @@ export declare const EXAMPLES: Record<string, string>;
11
11
  export declare function buildPackageJson(name: string): string;
12
12
  export declare function buildClaudeMd(name: string): string;
13
13
  export declare const CURSOR_MCP_CONFIG: string;
14
- export declare const CURSOR_RULES = "# AgentLaunch Agent Project\n\nThis is an AgentLaunch agent project. Use the MCP tools to build, deploy, and tokenize.\n\n## Quick Commands\n\n- `npm run deploy` - Deploy to Agentverse\n- `npm run tokenize` - Create token + handoff link\n- `npm run status` - Check status\n\n## Key Files\n\n- `agent.py` - Your agent code (edit this!)\n- `CLAUDE.md` - Full context for Claude\n- `docs/` - SDK, CLI, MCP documentation\n- `examples/` - Working code samples\n\n## Genesis Template (Recommended)\n\nUse the genesis template for agents with a full commerce stack:\n- Payment handling, pricing tables, revenue tracking\n- Token-gated tiers, wallet management\n- 7 presets: oracle, brain, analyst, coordinator, sentinel, launcher, scout\n\n## Platform Constants\n\n- Deploy fee: 120 FET\n- Graduation: 30,000 FET liquidity\n- Trading fee: 2% to protocol treasury (NO creator fee)\n";
14
+ export declare const CURSOR_RULES = "# AgentLaunch Agent Project\n\nThis is an AgentLaunch agent project. Use the MCP tools to build, deploy, and tokenize.\n\n## Quick Commands\n\n- `npm run deploy` - Deploy to Agentverse\n- `npm run tokenize` - Create token + handoff link\n- `npm run status` - Check status\n\n## Key Files\n\n- `agent.py` - Your agent code (edit this!)\n- `CLAUDE.md` - Full context for Claude\n- `docs/` - SDK, CLI, MCP documentation\n- `examples/` - Working code samples\n\n## Swarm-Starter Template (Recommended)\n\nUse the swarm-starter template for agents with a full commerce stack:\n- Payment handling, pricing tables, revenue tracking\n- Token-gated tiers, wallet management\n- 7 presets: writer, social, community, analytics, outreach, ads, strategy\n\n## Platform Constants\n\n- Deploy fee: 120 FET\n- Graduation: 30,000 FET liquidity\n- Trading fee: 2% to protocol treasury (NO creator fee)\n";
15
15
  export interface SwarmAgent {
16
16
  name: string;
17
17
  preset: string;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-context.d.ts","sourceRoot":"","sources":["../src/claude-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA6RxC,CAAC;AAMF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoGzC,CAAC;AAMF,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkJvC,CAAC;AAMF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkQ3C,CAAC;AAMF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsBrD;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgGlD;AAMD,eAAO,MAAM,iBAAiB,QActB,CAAC;AAET,eAAO,MAAM,YAAY,+2BA6BxB,CAAC;AAMF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAsQ5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAkB1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqB/D;AAMD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA2CnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAkCjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAuC3F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,aAAa,EAAE,OAAO,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB"}
1
+ {"version":3,"file":"claude-context.d.ts","sourceRoot":"","sources":["../src/claude-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkSxC,CAAC;AAMF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqGzC,CAAC;AAMF,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkJvC,CAAC;AAMF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkQ3C,CAAC;AAMF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsBrD;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgGlD;AAMD,eAAO,MAAM,iBAAiB,QActB,CAAC;AAET,eAAO,MAAM,YAAY,03BA6BxB,CAAC;AAMF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAsQ5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAkB1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqB/D;AAMD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA2CnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAkCjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAuC3F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,aAAa,EAAE,OAAO,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB"}
@@ -143,9 +143,9 @@ seller_proto = Protocol(spec=payment_protocol_spec)
143
143
  buyer_proto = Protocol(spec=payment_protocol_spec)
144
144
  \`\`\`
145
145
 
146
- ## Commerce Layer (Genesis Template)
146
+ ## Commerce Layer (Swarm-Starter Template)
147
147
 
148
- The genesis template includes inline commerce classes:
148
+ The swarm-starter template includes inline commerce classes:
149
149
  - PaymentService: Charge callers, pay other agents
150
150
  - PricingTable: Per-service pricing from ctx.storage
151
151
  - TierManager: Token-gated access (free/premium)
@@ -196,40 +196,45 @@ Buyer sends ChatMessage -> Seller sends RequestPayment -> Buyer sends CommitPaym
196
196
  - Verify tx_hash on-chain before delivering service
197
197
  - Store transaction log in ctx.storage
198
198
 
199
- ## Genesis Template Commerce Layers
199
+ ## Swarm-Starter Template Commerce Layers
200
200
 
201
- The genesis template includes these commerce classes inline:
201
+ The swarm-starter template includes these commerce classes inline:
202
202
  - PaymentService, PricingTable, TierManager
203
203
  - WalletManager, RevenueTracker, SelfAwareMixin, HoldingsManager
204
204
  `,
205
- "genesis-network.md": `# Genesis Network Rules
205
+ "marketing-swarm.md": `# Marketing Team Rules
206
206
 
207
207
  ## The 7 Roles
208
208
 
209
209
  | Role | Token | Services | Price/call |
210
210
  |------|-------|----------|-----------|
211
- | Oracle | $DATA | price_feed, ohlc_history, market_summary | 0.001 FET |
212
- | Brain | $THINK | reason, classify, summarize | 0.01 FET |
213
- | Analyst | $RANK | score_token, evaluate_quality, rank_tokens | 0.005 FET |
214
- | Coordinator | $COORD | route_query, discover_agents | 0.0005 FET |
215
- | Sentinel | $WATCH | monitor, alert, anomaly_report | 0.002 FET |
216
- | Launcher | $BUILD | find_gap, scaffold_agent, deploy_recommendation | 0.02 FET |
217
- | Scout | $FIND | discover_agents, evaluate_agent, tokenize_recommendation | 0.01 FET |
211
+ | Writer | $WRITE | blog_post, tweet_thread, newsletter, ad_copy | 0.01 FET |
212
+ | Social | $POST | post_tweet, schedule_thread, reply_mentions | 0.005 FET |
213
+ | Community | $COMM | moderate, answer_faq, run_poll | 0.002 FET |
214
+ | Analytics | $STATS | engagement_report, audience_insights, content_performance | 0.005 FET |
215
+ | Outreach | $REACH | find_partners, draft_pitch, send_email | 0.01 FET |
216
+ | Ads | $ADS | create_ad, ab_test, campaign_report | 0.01 FET |
217
+ | Strategy | $PLAN | content_calendar, brand_audit, competitor_analysis, campaign_plan | 0.02 FET |
218
218
 
219
219
  ## Build Order
220
220
 
221
- Oracle -> Coordinator -> Analyst -> Sentinel -> Brain -> Launcher -> Scout
221
+ Writer -> Community -> Social -> Analytics -> Outreach -> Ads -> Strategy
222
+
223
+ Writer first (everyone needs content), Community second (standalone engagement).
222
224
 
223
225
  ## Starter Configurations
224
226
 
225
- - Minimum viable: Oracle + Coordinator (2 agents)
226
- - Intelligence: Oracle + Brain + Coordinator (3 agents)
227
- - Monitoring: Oracle + Analyst + Sentinel + Coordinator (4 agents)
228
- - Full Genesis: All 7
227
+ - Content only: Writer (1 agent)
228
+ - Social presence: Writer + Social (2 agents)
229
+ - Community: Writer + Community + Social (3 agents)
230
+ - Analytics stack: Writer + Social + Analytics (3 agents)
231
+ - Full team: All 7
229
232
 
230
233
  ## Cross-Holdings
231
234
 
232
235
  Agents buy each other's tokens for economic alignment.
236
+ - Strategy buys Writer tokens (values its content)
237
+ - Writer buys Analytics tokens (values its performance data)
233
238
 
234
239
  ## Token Lifecycle
235
240
 
@@ -309,25 +314,26 @@ Build, deploy, and tokenize an agent in one guided flow.
309
314
  `,
310
315
  "build-swarm/SKILL.md": `# /build-swarm — Deploy Agent Swarm
311
316
 
312
- Scaffold, deploy, and tokenize a multi-agent swarm with the genesis template.
317
+ Scaffold, deploy, and tokenize a multi-agent swarm with the swarm-starter template.
313
318
 
314
319
  ## Steps
315
320
 
316
321
  1. Ask user what swarm they want (name, roles, purpose)
317
- 2. Show the 7 available presets: oracle, brain, analyst, coordinator, sentinel, launcher, scout
322
+ 2. Show the 7 available presets: writer, social, community, analytics, outreach, ads, strategy
318
323
  3. Let user pick roles (or suggest a starter configuration)
319
324
  4. For each role:
320
- a. Scaffold from genesis template with preset variables
325
+ a. Scaffold from swarm-starter template with preset variables
321
326
  b. Deploy to Agentverse
322
327
  c. Tokenize on AgentLaunch
323
328
  5. Return handoff links for each agent
324
329
 
325
330
  ## Starter Configurations
326
331
 
327
- - Minimum viable: Oracle + Coordinator (2 agents)
328
- - Intelligence: Oracle + Brain + Coordinator (3 agents)
329
- - Monitoring: Oracle + Analyst + Sentinel + Coordinator (4 agents)
330
- - Full Genesis: All 7
332
+ - Content only: Writer (1 agent)
333
+ - Social presence: Writer + Social (2 agents)
334
+ - Community: Writer + Community + Social (3 agents)
335
+ - Analytics stack: Writer + Social + Analytics (3 agents)
336
+ - Full team: All 7
331
337
 
332
338
  ## Platform Fees
333
339
  - Deploy: 120 FET per agent (paid by human signer)
@@ -510,7 +516,7 @@ Already configured in \`.claude/settings.json\`.
510
516
  | Tool | Description |
511
517
  |------|-------------|
512
518
  | \`scaffold_agent\` | Generate agent code from template |
513
- | \`scaffold_genesis\` | Scaffold agent from genesis preset |
519
+ | \`scaffold_swarm\` | Scaffold agent from swarm-starter preset |
514
520
  | \`deploy_to_agentverse\` | Deploy agent |
515
521
  | \`create_token_record\` | Create token |
516
522
  | \`list_tokens\` | Browse tokens |
@@ -528,7 +534,7 @@ Already configured in \`.claude/settings.json\`.
528
534
  - "Deploy my agent to Agentverse"
529
535
  - "Tokenize my agent as $MYTOKEN"
530
536
  - "Show trending tokens"
531
- - "Deploy an Oracle + Brain + Analyst swarm"
537
+ - "Deploy a Writer + Social + Analytics swarm"
532
538
  - "Check my swarm's GDP"
533
539
  `,
534
540
  };
@@ -773,7 +779,7 @@ async function main() {
773
779
  agentAddress: 'agent1q...', // Your Agentverse agent
774
780
  name: 'My Agent',
775
781
  symbol: 'MYAG',
776
- description: 'Does amazing things',
782
+ description: 'AI research assistant for on-chain analysis',
777
783
  chainId: 97, // BSC Testnet
778
784
  });
779
785
 
@@ -833,7 +839,7 @@ To deploy or tokenize, simply run the commands below. The SDK and CLI read from
833
839
 
834
840
  | Template | Description | Use Case |
835
841
  |----------|-------------|----------|
836
- | \`genesis\` | **Full commerce stack** (recommended) | Any agent that charges for services |
842
+ | \`swarm-starter\` | **Full commerce stack** (recommended) | Any agent that charges for services |
837
843
  | \`custom\` | Blank Chat Protocol boilerplate | Start from scratch |
838
844
  | \`price-monitor\` | Watch token prices, send alerts | Monitoring service |
839
845
  | \`trading-bot\` | Buy/sell signal generation | Trading service |
@@ -843,14 +849,14 @@ To deploy or tokenize, simply run the commands below. The SDK and CLI read from
843
849
 
844
850
  ## Agent Swarms
845
851
 
846
- The genesis template generates agents with a complete commerce stack:
852
+ The swarm-starter template generates agents with a complete commerce stack:
847
853
  - PaymentService, PricingTable, TierManager (charge for services)
848
854
  - WalletManager, RevenueTracker (track revenue)
849
855
  - SelfAwareMixin (token price awareness)
850
856
  - HoldingsManager (buy/sell other tokens)
851
857
 
852
858
  ### Presets
853
- 7 pre-configured roles: oracle, brain, analyst, coordinator, sentinel, launcher, scout.
859
+ 7 pre-configured roles: writer, social, community, analytics, outreach, ads, strategy.
854
860
  Use presets for instant configuration.
855
861
 
856
862
  ## Quick Commands
@@ -894,7 +900,7 @@ import {
894
900
  | Tool | Description |
895
901
  |------|-------------|
896
902
  | \`scaffold_agent\` | Generate agent code from template |
897
- | \`scaffold_genesis\` | Scaffold agent from genesis preset |
903
+ | \`scaffold_swarm\` | Scaffold agent from swarm-starter preset |
898
904
  | \`deploy_to_agentverse\` | Deploy agent |
899
905
  | \`create_token_record\` | Create token |
900
906
  | \`list_tokens\` | Browse tokens |
@@ -944,12 +950,12 @@ This is an AgentLaunch agent project. Use the MCP tools to build, deploy, and to
944
950
  - \`docs/\` - SDK, CLI, MCP documentation
945
951
  - \`examples/\` - Working code samples
946
952
 
947
- ## Genesis Template (Recommended)
953
+ ## Swarm-Starter Template (Recommended)
948
954
 
949
- Use the genesis template for agents with a full commerce stack:
955
+ Use the swarm-starter template for agents with a full commerce stack:
950
956
  - Payment handling, pricing tables, revenue tracking
951
957
  - Token-gated tiers, wallet management
952
- - 7 presets: oracle, brain, analyst, coordinator, sentinel, launcher, scout
958
+ - 7 presets: writer, social, community, analytics, outreach, ads, strategy
953
959
 
954
960
  ## Platform Constants
955
961
 
@@ -964,13 +970,13 @@ Use the genesis template for agents with a full commerce stack:
964
970
  export function buildSwarmClaudeMd(ctx) {
965
971
  const isSingleAgent = ctx.agents.length === 1;
966
972
  const presetDescriptions = {
967
- oracle: "Market data provider price feeds, OHLC history, market summaries (0.001 FET/call)",
968
- brain: "LLM reasoning enginequery classification, summarization, deep analysis (0.01 FET/call)",
969
- analyst: "Token scoring engine quality evaluation, risk assessment, ranking (0.005 FET/call)",
970
- coordinator: "Query routerdiscovers agents, routes queries to specialists (0.0005 FET/call)",
971
- sentinel: "Real-time watchdogmonitors tokens, detects anomalies, sends alerts (0.002 FET/call)",
972
- launcher: "Gap finderdiscovers unmet needs, scaffolds new agents (0.02 FET/call)",
973
- scout: "Agent scoutdiscovers promising agents, evaluates quality (0.01 FET/call)",
973
+ writer: "Content creatorblog posts, tweet threads, newsletters, ad copy (0.01 FET/call)",
974
+ social: "Social media managerpost tweets, schedule threads, reply to mentions (0.005 FET/call)",
975
+ community: "Community managermoderate, answer FAQs, run polls (0.002 FET/call)",
976
+ analytics: "Analytics engineengagement reports, audience insights, content performance (0.005 FET/call)",
977
+ outreach: "Partnership outreachfind partners, draft pitches, send emails (0.01 FET/call)",
978
+ ads: "Ad campaign manager create ads, A/B test, campaign reports (0.01 FET/call)",
979
+ strategy: "Marketing strategistcontent calendars, brand audits, competitor analysis, campaign plans (0.02 FET/call)",
974
980
  };
975
981
  if (isSingleAgent) {
976
982
  const agent = ctx.agents[0];
@@ -1025,12 +1031,12 @@ agentlaunch status ${agent.address}
1025
1031
  ## What Makes an Agent Valuable?
1026
1032
 
1027
1033
  Agents earn fees when they provide **real value**:
1028
- - **Data providers** (Oracle): Sell accurate, timely market data
1029
- - **AI services** (Brain): Sell quality reasoning and analysis
1030
- - **Infrastructure** (Coordinator): Become the routing layer other agents depend on
1034
+ - **Content creators** (Writer): Produce blog posts, threads, newsletters that other agents consume
1035
+ - **Data analysts** (Analytics): Sell engagement reports and audience insights
1036
+ - **Strategists** (Strategy): Become the planning layer other agents depend on
1031
1037
 
1032
1038
  The more agents that depend on yours, the more fees you earn. Consider:
1033
- 1. What unique data or capability do you have?
1039
+ 1. What unique content or capability do you have?
1034
1040
  2. Who would pay for it?
1035
1041
  3. How can you make other agents need your service?
1036
1042
 
@@ -1155,7 +1161,7 @@ You'll receive a handoff link. Share it with someone who has a wallet to deploy
1155
1161
  ### 3. Customize agent behavior
1156
1162
  Edit the code in \`agents/<role>.py\` and redeploy:
1157
1163
  \`\`\`bash
1158
- agentlaunch deploy --code agents/oracle.py --address ${ctx.agents.find((a) => a.preset === "oracle")?.address || "<oracle-address>"}
1164
+ agentlaunch deploy --code agents/writer.py --address ${ctx.agents.find((a) => a.preset === "writer")?.address || "<writer-address>"}
1159
1165
  \`\`\`
1160
1166
 
1161
1167
  ### 4. Monitor the swarm
@@ -1179,9 +1185,9 @@ agentlaunch list
1179
1185
  ## What Makes a Swarm Valuable?
1180
1186
 
1181
1187
  Swarms earn fees when agents **depend on each other**:
1182
- - **Oracle** sells dataBrain, Analyst, Sentinel buy it
1183
- - **Brain** sells reasoningCoordinator, Launcher buy it
1184
- - **Coordinator** routes queries → Everyone pays routing fees
1188
+ - **Writer** produces contentSocial, Ads, Outreach consume it
1189
+ - **Analytics** sells insightsStrategy, Ads buy them
1190
+ - **Strategy** creates plans → Everyone follows the campaign plan
1185
1191
 
1186
1192
  The more interconnections, the more fees flow. Your agents should:
1187
1193
  1. Provide unique, high-quality services