paracosm 0.9.986 → 0.9.995

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.
@@ -0,0 +1,573 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 1180" role="img" aria-labelledby="paracosm-flow-title paracosm-flow-desc" preserveAspectRatio="xMidYMid meet">
3
+ <title id="paracosm-flow-title">Paracosm system flow: world source to forked futures</title>
4
+ <desc id="paracosm-flow-desc">A vertical flow diagram of the Paracosm pipeline. Prompts, briefs, URLs, PDFs, or JSON drafts feed into the Scenario Compiler, producing a typed ScenarioPackage. A deterministic seeded kernel and the Runtime Orchestrator run a per-turn pipeline of Director, Departments, Commander, and Reactions, with side modules for runtime tool forging in a V8 sandbox, an LLM judge, HEXACO personality drift, and AgentMemory. The result is an agent swarm of personality-typed cells and a Zod-validated RunArtifact that can be replayed byte-for-byte or forked at any past turn.</desc>
5
+
6
+ <style><![CDATA[
7
+ :root {
8
+ --bg: #0a0806;
9
+ --panel: #14110e;
10
+ --card: #1c1915;
11
+ --elevated: #242018;
12
+ --border: #4a3e2c;
13
+ --border-soft: #2e2a22;
14
+ --text-1: #f5f0e4;
15
+ --text-2: #d8ccb0;
16
+ --text-3: #a89878;
17
+ --text-4: #7a6c52;
18
+ --amber: #e8b44a;
19
+ --amber-dim: #8b6a2e;
20
+ --amber-soft: rgba(232, 180, 74, 0.12);
21
+ --rust: #e06530;
22
+ --rust-dim: #8b3d1e;
23
+ --rust-soft: rgba(224, 101, 48, 0.10);
24
+ --teal: #4ca8a8;
25
+ --teal-dim: #2a5f5f;
26
+ --teal-soft: rgba(76, 168, 168, 0.12);
27
+ --green: #6a9c3a;
28
+ --shadow: rgba(0, 0, 0, 0.45);
29
+ --glow: rgba(232, 180, 74, 0.05);
30
+ }
31
+ @media (prefers-color-scheme: light) {
32
+ :root {
33
+ --bg: #f0e6d2;
34
+ --panel: #e4d8c0;
35
+ --card: #f8f2e4;
36
+ --elevated: #faf6ee;
37
+ --border: #9a8868;
38
+ --border-soft: #c8bca0;
39
+ --text-1: #1a1208;
40
+ --text-2: #2e2418;
41
+ --text-3: #4a3e2c;
42
+ --text-4: #6a5c44;
43
+ --amber: #6b4700;
44
+ --amber-dim: #463000;
45
+ --amber-soft: rgba(107, 71, 0, 0.10);
46
+ --rust: #8e2c0c;
47
+ --rust-dim: #5a1e06;
48
+ --rust-soft: rgba(142, 44, 12, 0.08);
49
+ --teal: #186060;
50
+ --teal-dim: #0e4040;
51
+ --teal-soft: rgba(24, 96, 96, 0.10);
52
+ --green: #305a10;
53
+ --shadow: rgba(60, 40, 10, 0.15);
54
+ --glow: rgba(107, 71, 0, 0.04);
55
+ }
56
+ }
57
+ .bg { fill: var(--bg); }
58
+ .panel-fill { fill: var(--panel); }
59
+ .card-fill { fill: var(--card); }
60
+ .elevated-fill { fill: var(--elevated); }
61
+ .border-stroke { stroke: var(--border); fill: none; }
62
+ .soft-stroke { stroke: var(--border-soft); fill: none; }
63
+ .amber-fill { fill: var(--amber); }
64
+ .amber-stroke { stroke: var(--amber); fill: none; }
65
+ .rust-fill { fill: var(--rust); }
66
+ .rust-stroke { stroke: var(--rust); fill: none; }
67
+ .teal-fill { fill: var(--teal); }
68
+ .teal-stroke { stroke: var(--teal); fill: none; }
69
+ .green-fill { fill: var(--green); }
70
+ .t1 { fill: var(--text-1); font-family: 'Inter', system-ui, -apple-system, sans-serif; }
71
+ .t2 { fill: var(--text-2); font-family: 'Inter', system-ui, -apple-system, sans-serif; }
72
+ .t3 { fill: var(--text-3); font-family: 'Inter', system-ui, -apple-system, sans-serif; }
73
+ .t4 { fill: var(--text-4); font-family: 'Inter', system-ui, -apple-system, sans-serif; }
74
+ .mono { font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace; }
75
+ .label { font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
76
+ .title { font-size: 18px; font-weight: 700; letter-spacing: -0.01em; }
77
+ .body { font-size: 13px; font-weight: 400; }
78
+ .small { font-size: 11px; font-weight: 400; }
79
+ .tiny { font-size: 10px; font-weight: 500; letter-spacing: 0.04em; }
80
+ .heading-band { font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; }
81
+ .arrow { fill: var(--text-3); }
82
+ .flow-line { stroke: var(--text-3); stroke-width: 1.5; fill: none; }
83
+ .flow-line-strong { stroke: var(--amber); stroke-width: 2; fill: none; }
84
+ .annotation-line { stroke: var(--text-4); stroke-width: 1; fill: none; stroke-dasharray: 3 3; }
85
+ .pulse { animation: pulse 4s ease-in-out infinite; }
86
+ @keyframes pulse {
87
+ 0%, 100% { opacity: 1; }
88
+ 50% { opacity: 0.55; }
89
+ }
90
+ ]]></style>
91
+
92
+ <defs>
93
+ <!-- Arrow marker -->
94
+ <marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
95
+ <path d="M0,1 L9,5 L0,9 z" class="arrow"/>
96
+ </marker>
97
+ <marker id="arrow-amber" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
98
+ <path d="M0,1 L9,5 L0,9 z" class="amber-fill"/>
99
+ </marker>
100
+ <marker id="arrow-rust" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
101
+ <path d="M0,1 L9,5 L0,9 z" class="rust-fill"/>
102
+ </marker>
103
+ <marker id="arrow-teal" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
104
+ <path d="M0,1 L9,5 L0,9 z" class="teal-fill"/>
105
+ </marker>
106
+
107
+ <!-- Glow filter for emphasis blocks -->
108
+ <filter id="soft-glow" x="-10%" y="-10%" width="120%" height="120%">
109
+ <feGaussianBlur stdDeviation="3" result="blur"/>
110
+ <feMerge>
111
+ <feMergeNode in="blur"/>
112
+ <feMergeNode in="SourceGraphic"/>
113
+ </feMerge>
114
+ </filter>
115
+ </defs>
116
+
117
+ <!-- Background -->
118
+ <rect class="bg" width="1200" height="1180"/>
119
+
120
+ <!-- Top title strip -->
121
+ <g transform="translate(0, 24)">
122
+ <text x="600" y="0" text-anchor="middle" class="t3 heading-band mono">PARACOSM · SYSTEM FLOW</text>
123
+ <text x="600" y="22" text-anchor="middle" class="t1 title">From a paragraph to a forkable, replayable, multi-agent world.</text>
124
+ <line x1="430" y1="40" x2="770" y2="40" class="soft-stroke" stroke-width="1"/>
125
+ </g>
126
+
127
+ <!-- =============================================== -->
128
+ <!-- LAYER 1: WORLD SOURCE -->
129
+ <!-- =============================================== -->
130
+ <g transform="translate(0, 90)">
131
+ <!-- Section label (left) -->
132
+ <text x="24" y="18" class="label mono"><tspan class="amber-fill">01</tspan><tspan class="t4" dx="6">· INPUT</tspan></text>
133
+
134
+ <!-- Input chips row -->
135
+ <g transform="translate(220, 0)">
136
+ <!-- prompt -->
137
+ <g transform="translate(0, 0)">
138
+ <rect width="120" height="50" rx="8" class="card-fill" stroke="var(--border)" stroke-width="1"/>
139
+ <text x="60" y="22" text-anchor="middle" class="t3 tiny mono">PROMPT</text>
140
+ <text x="60" y="38" text-anchor="middle" class="t1 body">"What if…"</text>
141
+ </g>
142
+ <!-- brief -->
143
+ <g transform="translate(140, 0)">
144
+ <rect width="120" height="50" rx="8" class="card-fill" stroke="var(--border)" stroke-width="1"/>
145
+ <text x="60" y="22" text-anchor="middle" class="t3 tiny mono">BRIEF</text>
146
+ <text x="60" y="38" text-anchor="middle" class="t1 body">Board memo</text>
147
+ </g>
148
+ <!-- URL -->
149
+ <g transform="translate(280, 0)">
150
+ <rect width="120" height="50" rx="8" class="card-fill" stroke="var(--border)" stroke-width="1"/>
151
+ <text x="60" y="22" text-anchor="middle" class="t3 tiny mono">URL</text>
152
+ <text x="60" y="38" text-anchor="middle" class="t1 body">News, paper</text>
153
+ </g>
154
+ <!-- PDF -->
155
+ <g transform="translate(420, 0)">
156
+ <rect width="120" height="50" rx="8" class="card-fill" stroke="var(--border)" stroke-width="1"/>
157
+ <text x="60" y="22" text-anchor="middle" class="t3 tiny mono">PDF</text>
158
+ <text x="60" y="38" text-anchor="middle" class="t1 body">Extract text</text>
159
+ </g>
160
+ <!-- JSON -->
161
+ <g transform="translate(560, 0)">
162
+ <rect width="120" height="50" rx="8" class="card-fill" stroke="var(--amber)" stroke-width="1.5"/>
163
+ <text x="60" y="22" text-anchor="middle" class="amber-fill tiny mono">JSON DRAFT</text>
164
+ <text x="60" y="38" text-anchor="middle" class="t1 body">Hand-authored</text>
165
+ </g>
166
+ </g>
167
+
168
+ <!-- Side annotation right -->
169
+ <g transform="translate(960, 0)">
170
+ <text x="0" y="14" class="t3 small mono">seedText / seedUrl</text>
171
+ <text x="0" y="30" class="t4 small">extracts ground truth</text>
172
+ <text x="0" y="45" class="t4 small">for citation memory</text>
173
+ </g>
174
+ </g>
175
+
176
+ <!-- Down arrow from inputs to compiler -->
177
+ <line x1="600" y1="148" x2="600" y2="184" class="flow-line" marker-end="url(#arrow)"/>
178
+
179
+ <!-- =============================================== -->
180
+ <!-- LAYER 2: SCENARIO COMPILER -->
181
+ <!-- =============================================== -->
182
+ <g transform="translate(0, 192)">
183
+ <text x="24" y="58" class="label mono"><tspan class="amber-fill">02</tspan><tspan class="t4" dx="6">· COMPILE</tspan></text>
184
+ <text x="24" y="74" class="t4 small">~$0.10 first run</text>
185
+ <text x="24" y="88" class="t4 small">cached forever</text>
186
+
187
+ <!-- Compiler block -->
188
+ <g transform="translate(180, 0)">
189
+ <rect width="840" height="170" rx="10" class="panel-fill" stroke="var(--rust)" stroke-width="1.5"/>
190
+ <text x="20" y="24" class="rust-fill label mono">SCENARIO COMPILER</text>
191
+ <text x="20" y="42" class="t2 small">LLM-generated runtime hooks · validated against DraftScenarioSchema</text>
192
+
193
+ <!-- 4 hook cards -->
194
+ <g transform="translate(20, 56)">
195
+ <g transform="translate(0, 0)">
196
+ <rect width="180" height="46" rx="6" class="card-fill" stroke="var(--border)" stroke-width="1"/>
197
+ <text x="10" y="18" class="t3 tiny mono">progressionHook</text>
198
+ <text x="10" y="34" class="t2 small">between-turn state</text>
199
+ </g>
200
+ <g transform="translate(200, 0)">
201
+ <rect width="180" height="46" rx="6" class="card-fill" stroke="var(--border)" stroke-width="1"/>
202
+ <text x="10" y="18" class="t3 tiny mono">departmentPromptHook</text>
203
+ <text x="10" y="34" class="t2 small">analysis context</text>
204
+ </g>
205
+ <g transform="translate(400, 0)">
206
+ <rect width="180" height="46" rx="6" class="card-fill" stroke="var(--border)" stroke-width="1"/>
207
+ <text x="10" y="18" class="t3 tiny mono">fingerprintHook</text>
208
+ <text x="10" y="34" class="t2 small">trajectory hash</text>
209
+ </g>
210
+ <g transform="translate(600, 0)">
211
+ <rect width="180" height="46" rx="6" class="card-fill" stroke="var(--border)" stroke-width="1"/>
212
+ <text x="10" y="18" class="t3 tiny mono">politicsHook</text>
213
+ <text x="10" y="34" class="t2 small">social effects</text>
214
+ </g>
215
+ </g>
216
+
217
+ <!-- Grounding pipeline -->
218
+ <g transform="translate(20, 116)">
219
+ <rect width="780" height="40" rx="6" class="elevated-fill" stroke="var(--teal-dim)" stroke-width="1"/>
220
+ <text x="14" y="16" class="teal-fill tiny mono">GROUNDING (optional)</text>
221
+ <text x="14" y="32" class="t2 small">
222
+ <tspan class="t1">AgentOS WebSearchService</tspan>
223
+ <tspan dx="6">→</tspan>
224
+ <tspan dx="4">Firecrawl + Tavily + Serper + Brave (parallel)</tspan>
225
+ <tspan dx="6">→</tspan>
226
+ <tspan dx="4" class="t1">RRF fusion</tspan>
227
+ <tspan dx="6">→</tspan>
228
+ <tspan dx="4" class="t1">Cohere rerank-v3.5</tspan>
229
+ <tspan dx="6">→</tspan>
230
+ <tspan dx="4" class="t1">AgentMemory.sqlite</tspan>
231
+ </text>
232
+ </g>
233
+ </g>
234
+ </g>
235
+
236
+ <!-- Down arrow from compiler to package -->
237
+ <line x1="600" y1="372" x2="600" y2="408" class="flow-line" marker-end="url(#arrow)"/>
238
+
239
+ <!-- =============================================== -->
240
+ <!-- LAYER 3: SCENARIO PACKAGE + DETERMINISTIC KERNEL (side by side) -->
241
+ <!-- =============================================== -->
242
+ <g transform="translate(0, 416)">
243
+ <text x="24" y="42" class="label mono"><tspan class="amber-fill">03</tspan><tspan class="t4" dx="6">· WORLD CONTRACT</tspan></text>
244
+
245
+ <!-- ScenarioPackage block (left) -->
246
+ <g transform="translate(180, 0)">
247
+ <rect width="400" height="120" rx="10" class="panel-fill" stroke="var(--amber)" stroke-width="1.5"/>
248
+ <text x="20" y="24" class="amber-fill label mono">SCENARIO PACKAGE</text>
249
+ <text x="20" y="44" class="t2 small">Typed contract · Zod-validated · cached to disk</text>
250
+
251
+ <g transform="translate(20, 60)">
252
+ <text class="t3 mono small">
253
+ <tspan x="0" dy="0">{ id, labels, setup,</tspan>
254
+ <tspan x="0" dy="14"> departments[], metrics[],</tspan>
255
+ <tspan x="0" dy="14"> knowledge?, hooks }</tspan>
256
+ </text>
257
+ </g>
258
+ </g>
259
+
260
+ <!-- Deterministic Kernel block (right) -->
261
+ <g transform="translate(620, 0)">
262
+ <rect width="400" height="120" rx="10" class="panel-fill" stroke="var(--teal)" stroke-width="1.5"/>
263
+ <text x="20" y="24" class="teal-fill label mono">DETERMINISTIC KERNEL</text>
264
+ <text x="20" y="44" class="t2 small">Seeded PRNG · state machine · progression</text>
265
+
266
+ <!-- Decorative kernel detail -->
267
+ <g transform="translate(20, 60)">
268
+ <circle cx="14" cy="14" r="10" class="teal-stroke" stroke-width="1.5" fill="none"/>
269
+ <circle cx="14" cy="14" r="4" class="teal-fill"/>
270
+ <text x="40" y="10" class="t3 small mono">seed: 42</text>
271
+ <text x="40" y="24" class="t4 small">same seed → byte-for-byte replay</text>
272
+ <text x="40" y="40" class="t4 small">divergence comes from LLM stages</text>
273
+ </g>
274
+ </g>
275
+ </g>
276
+
277
+ <!-- Connecting flow into orchestrator -->
278
+ <line x1="380" y1="536" x2="380" y2="566" class="flow-line" marker-end="url(#arrow)"/>
279
+ <line x1="820" y1="536" x2="820" y2="566" class="flow-line" marker-end="url(#arrow)"/>
280
+
281
+ <!-- =============================================== -->
282
+ <!-- LAYER 4: RUNTIME ORCHESTRATOR (per turn) -->
283
+ <!-- =============================================== -->
284
+ <g transform="translate(0, 574)">
285
+ <text x="24" y="42" class="label mono"><tspan class="amber-fill">04</tspan><tspan class="t4" dx="6">· TURN LOOP</tspan></text>
286
+ <text x="24" y="58" class="t4 small">runs per actor</text>
287
+ <text x="24" y="72" class="t4 small">cohort fans out</text>
288
+ <text x="24" y="86" class="t4 small">via worker pool</text>
289
+
290
+ <!-- Big orchestrator panel -->
291
+ <rect x="180" y="0" width="840" height="280" rx="10" class="panel-fill" stroke="var(--amber)" stroke-width="1.5" filter="url(#soft-glow)"/>
292
+ <text x="200" y="24" class="amber-fill label mono">RUNTIME ORCHESTRATOR</text>
293
+ <text x="200" y="42" class="t2 small">turn pipeline · every structured LLM call Zod-validated with retry-with-feedback</text>
294
+
295
+ <!-- Four pipeline cards across the top -->
296
+ <g transform="translate(200, 60)">
297
+ <!-- 1. Director -->
298
+ <g transform="translate(0, 0)">
299
+ <rect width="180" height="80" rx="8" class="card-fill" stroke="var(--rust)" stroke-width="1.2"/>
300
+ <text x="14" y="18" class="rust-fill tiny mono">DIRECTOR</text>
301
+ <text x="14" y="38" class="t1 body">Emergent event</text>
302
+ <text x="14" y="56" class="t3 small">reads state + history</text>
303
+ <text x="14" y="70" class="t3 small">picks crisis category</text>
304
+ </g>
305
+ <!-- 2. Departments -->
306
+ <g transform="translate(200, 0)">
307
+ <rect width="180" height="80" rx="8" class="card-fill" stroke="var(--teal)" stroke-width="1.2"/>
308
+ <text x="14" y="18" class="teal-fill tiny mono">DEPARTMENTS · parallel</text>
309
+ <text x="14" y="38" class="t1 body">Specialist analysis</text>
310
+ <text x="14" y="56" class="t3 small">medical · engineering</text>
311
+ <text x="14" y="70" class="t3 small">agri · psych · gov</text>
312
+ </g>
313
+ <!-- 3. Commander -->
314
+ <g transform="translate(400, 0)">
315
+ <rect width="180" height="80" rx="8" class="card-fill" stroke="var(--amber)" stroke-width="1.2"/>
316
+ <text x="14" y="18" class="amber-fill tiny mono">COMMANDER</text>
317
+ <text x="14" y="38" class="t1 body">HEXACO-weighted</text>
318
+ <text x="14" y="56" class="t3 small">picks one policy</text>
319
+ <text x="14" y="70" class="t3 small">no analysis, only choice</text>
320
+ </g>
321
+ <!-- 4. Reactions -->
322
+ <g transform="translate(600, 0)">
323
+ <rect width="180" height="80" rx="8" class="card-fill" stroke="var(--border)" stroke-width="1.2"/>
324
+ <text x="14" y="18" class="t3 tiny mono">REACTIONS · batched</text>
325
+ <text x="14" y="38" class="t1 body">Agent responses</text>
326
+ <text x="14" y="56" class="t3 small">10 per LLM call</text>
327
+ <text x="14" y="70" class="t3 small">memory + drift updates</text>
328
+ </g>
329
+ </g>
330
+
331
+ <!-- Inline arrows between pipeline cards -->
332
+ <g transform="translate(200, 100)">
333
+ <line x1="180" y1="0" x2="200" y2="0" class="flow-line" marker-end="url(#arrow)"/>
334
+ <line x1="380" y1="0" x2="400" y2="0" class="flow-line" marker-end="url(#arrow)"/>
335
+ <line x1="580" y1="0" x2="600" y2="0" class="flow-line" marker-end="url(#arrow)"/>
336
+ </g>
337
+
338
+ <!-- Mid-pipeline detail: forge + judge + drift + memory -->
339
+ <g transform="translate(200, 160)">
340
+ <!-- Tool Forge -->
341
+ <g transform="translate(0, 0)">
342
+ <rect width="190" height="100" rx="8" class="elevated-fill" stroke="var(--rust)" stroke-width="1.2" stroke-dasharray="4 2"/>
343
+ <text x="14" y="18" class="rust-fill tiny mono">TOOL FORGE · sandbox</text>
344
+ <text x="14" y="38" class="t1 small">Department invents a tool</text>
345
+ <text x="14" y="56" class="t2 small">node:vm V8 sandbox</text>
346
+ <text x="14" y="70" class="t2 small">Zod-validated function</text>
347
+ <text x="14" y="86" class="t3 small">10s timeout · 128MB cap</text>
348
+ </g>
349
+ <!-- LLM Judge -->
350
+ <g transform="translate(210, 0)">
351
+ <rect width="170" height="100" rx="8" class="elevated-fill" stroke="var(--border)" stroke-width="1.2"/>
352
+ <text x="14" y="18" class="t3 tiny mono">LLM JUDGE</text>
353
+ <text x="14" y="38" class="t1 small">Safety review</text>
354
+ <text x="14" y="56" class="t2 small">approves / rejects</text>
355
+ <text x="14" y="70" class="t2 small">scores correctness</text>
356
+ <text x="14" y="86" class="t3 small">forged tool enters ledger</text>
357
+ </g>
358
+ <!-- HEXACO Drift -->
359
+ <g transform="translate(400, 0)">
360
+ <rect width="170" height="100" rx="8" class="elevated-fill" stroke="var(--amber)" stroke-width="1.2"/>
361
+ <text x="14" y="18" class="amber-fill tiny mono">HEXACO DRIFT</text>
362
+ <text x="14" y="38" class="t1 small">Traits evolve</text>
363
+ <text x="14" y="56" class="t2 small">role activation pull</text>
364
+ <text x="14" y="70" class="t2 small">outcome reinforcement</text>
365
+ <text x="14" y="86" class="t3 small">≤ 0.05 per turn cap</text>
366
+ </g>
367
+ <!-- AgentMemory -->
368
+ <g transform="translate(590, 0)">
369
+ <rect width="190" height="100" rx="8" class="elevated-fill" stroke="var(--teal)" stroke-width="1.2"/>
370
+ <text x="14" y="18" class="teal-fill tiny mono">AGENTMEMORY · AgentOS</text>
371
+ <text x="14" y="38" class="t1 small">Per-actor recall</text>
372
+ <text x="14" y="56" class="t2 small">cognitive consolidation</text>
373
+ <text x="14" y="70" class="t2 small">citation grounding</text>
374
+ <text x="14" y="86" class="t3 small">SQLite-backed</text>
375
+ </g>
376
+ </g>
377
+ </g>
378
+
379
+ <!-- Loop arrow indicating turn repetition -->
380
+ <g transform="translate(1040, 700)">
381
+ <path d="M 0 0 C 30 0, 50 20, 50 60 C 50 100, 30 120, 0 120" class="amber-stroke" stroke-width="1.5" stroke-dasharray="4 3" marker-end="url(#arrow-amber)"/>
382
+ <text x="56" y="56" class="amber-fill tiny mono">× N TURNS</text>
383
+ <text x="56" y="70" class="t4 small">until maxTurns</text>
384
+ </g>
385
+
386
+ <!-- Down arrow from orchestrator to swarm -->
387
+ <line x1="600" y1="864" x2="600" y2="900" class="flow-line" marker-end="url(#arrow)"/>
388
+
389
+ <!-- =============================================== -->
390
+ <!-- LAYER 5: AGENT SWARM -->
391
+ <!-- =============================================== -->
392
+ <g transform="translate(0, 908)">
393
+ <text x="24" y="40" class="label mono"><tspan class="amber-fill">05</tspan><tspan class="t4" dx="6">· SWARM</tspan></text>
394
+ <text x="24" y="56" class="t4 small">~100 cells</text>
395
+ <text x="24" y="70" class="t4 small">per leader</text>
396
+
397
+ <!-- Swarm panel -->
398
+ <g transform="translate(180, 0)">
399
+ <rect width="840" height="100" rx="10" class="panel-fill" stroke="var(--teal)" stroke-width="1.5"/>
400
+ <text x="20" y="24" class="teal-fill label mono">AGENT SWARM</text>
401
+ <text x="20" y="42" class="t2 small">personality-typed cells · HEXACO + mood + family + memory + role</text>
402
+
403
+ <!-- Grid of cells (5 rows × 30 cols representation, scaled) -->
404
+ <g transform="translate(20, 56)">
405
+ <!-- Generate a grid programmatically via group repeats. SVG doesn't loop natively, so manual placement. We'll do 30 cells × 2 rows of mixed shapes to suggest density. -->
406
+ <!-- Row 1 -->
407
+ <g>
408
+ <circle cx="6" cy="6" r="4" class="amber-fill"/>
409
+ <circle cx="22" cy="6" r="4" class="teal-fill"/>
410
+ <rect x="34" y="2" width="8" height="8" class="rust-fill"/>
411
+ <circle cx="54" cy="6" r="4" class="amber-fill" opacity="0.6"/>
412
+ <circle cx="70" cy="6" r="4" class="teal-fill" opacity="0.5"/>
413
+ <polygon points="82,2 90,2 86,10" class="green-fill"/>
414
+ <circle cx="102" cy="6" r="4" class="amber-fill"/>
415
+ <rect x="114" y="2" width="8" height="8" class="teal-fill"/>
416
+ <circle cx="134" cy="6" r="4" class="rust-fill" opacity="0.7"/>
417
+ <circle cx="150" cy="6" r="4" class="amber-fill" opacity="0.5"/>
418
+ <polygon points="162,2 170,2 166,10" class="teal-fill"/>
419
+ <circle cx="182" cy="6" r="4" class="amber-fill"/>
420
+ <rect x="194" y="2" width="8" height="8" class="rust-fill" opacity="0.7"/>
421
+ <circle cx="214" cy="6" r="4" class="teal-fill"/>
422
+ <circle cx="230" cy="6" r="4" class="amber-fill" opacity="0.8"/>
423
+ <polygon points="242,2 250,2 246,10" class="green-fill"/>
424
+ <circle cx="262" cy="6" r="4" class="teal-fill"/>
425
+ <rect x="274" y="2" width="8" height="8" class="amber-fill" opacity="0.6"/>
426
+ <circle cx="294" cy="6" r="4" class="rust-fill"/>
427
+ <circle cx="310" cy="6" r="4" class="teal-fill"/>
428
+ <polygon points="322,2 330,2 326,10" class="amber-fill"/>
429
+ <circle cx="342" cy="6" r="4" class="green-fill"/>
430
+ <rect x="354" y="2" width="8" height="8" class="teal-fill" opacity="0.7"/>
431
+ <circle cx="374" cy="6" r="4" class="amber-fill"/>
432
+ <circle cx="390" cy="6" r="4" class="rust-fill" opacity="0.6"/>
433
+ <polygon points="402,2 410,2 406,10" class="teal-fill"/>
434
+ <circle cx="422" cy="6" r="4" class="amber-fill"/>
435
+ <rect x="434" y="2" width="8" height="8" class="teal-fill"/>
436
+ <circle cx="454" cy="6" r="4" class="rust-fill"/>
437
+ <circle cx="470" cy="6" r="4" class="amber-fill" opacity="0.7"/>
438
+ <polygon points="482,2 490,2 486,10" class="green-fill"/>
439
+ <circle cx="502" cy="6" r="4" class="teal-fill"/>
440
+ <rect x="514" y="2" width="8" height="8" class="amber-fill"/>
441
+ <circle cx="534" cy="6" r="4" class="rust-fill" opacity="0.8"/>
442
+ <circle cx="550" cy="6" r="4" class="teal-fill" opacity="0.5"/>
443
+ <polygon points="562,2 570,2 566,10" class="amber-fill"/>
444
+ <circle cx="582" cy="6" r="4" class="green-fill"/>
445
+ <rect x="594" y="2" width="8" height="8" class="rust-fill"/>
446
+ <circle cx="614" cy="6" r="4" class="teal-fill"/>
447
+ <circle cx="630" cy="6" r="4" class="amber-fill"/>
448
+ <polygon points="642,2 650,2 646,10" class="teal-fill" opacity="0.6"/>
449
+ <circle cx="662" cy="6" r="4" class="rust-fill"/>
450
+ <rect x="674" y="2" width="8" height="8" class="amber-fill" opacity="0.7"/>
451
+ <circle cx="694" cy="6" r="4" class="green-fill"/>
452
+ <circle cx="710" cy="6" r="4" class="teal-fill"/>
453
+ <polygon points="722,2 730,2 726,10" class="rust-fill"/>
454
+ <circle cx="742" cy="6" r="4" class="amber-fill"/>
455
+ <rect x="754" y="2" width="8" height="8" class="teal-fill" opacity="0.7"/>
456
+ <circle cx="774" cy="6" r="4" class="amber-fill" opacity="0.5"/>
457
+ <circle cx="790" cy="6" r="4" class="rust-fill"/>
458
+ </g>
459
+ <!-- Row 2 (slightly shifted to imply density) -->
460
+ <g transform="translate(8, 18)">
461
+ <circle cx="6" cy="6" r="4" class="teal-fill"/>
462
+ <rect x="18" y="2" width="8" height="8" class="amber-fill" opacity="0.8"/>
463
+ <circle cx="38" cy="6" r="4" class="rust-fill"/>
464
+ <circle cx="54" cy="6" r="4" class="green-fill"/>
465
+ <polygon points="66,2 74,2 70,10" class="amber-fill"/>
466
+ <circle cx="86" cy="6" r="4" class="teal-fill"/>
467
+ <rect x="98" y="2" width="8" height="8" class="rust-fill" opacity="0.7"/>
468
+ <circle cx="118" cy="6" r="4" class="amber-fill"/>
469
+ <circle cx="134" cy="6" r="4" class="teal-fill" opacity="0.6"/>
470
+ <polygon points="146,2 154,2 150,10" class="green-fill"/>
471
+ <circle cx="166" cy="6" r="4" class="amber-fill"/>
472
+ <rect x="178" y="2" width="8" height="8" class="teal-fill"/>
473
+ <circle cx="198" cy="6" r="4" class="rust-fill" opacity="0.6"/>
474
+ <circle cx="214" cy="6" r="4" class="amber-fill"/>
475
+ <polygon points="226,2 234,2 230,10" class="teal-fill"/>
476
+ <circle cx="246" cy="6" r="4" class="green-fill"/>
477
+ <rect x="258" y="2" width="8" height="8" class="amber-fill" opacity="0.7"/>
478
+ <circle cx="278" cy="6" r="4" class="rust-fill"/>
479
+ <circle cx="294" cy="6" r="4" class="teal-fill"/>
480
+ <polygon points="306,2 314,2 310,10" class="amber-fill"/>
481
+ <circle cx="326" cy="6" r="4" class="green-fill"/>
482
+ <rect x="338" y="2" width="8" height="8" class="rust-fill" opacity="0.8"/>
483
+ <circle cx="358" cy="6" r="4" class="teal-fill"/>
484
+ <circle cx="374" cy="6" r="4" class="amber-fill"/>
485
+ <polygon points="386,2 394,2 390,10" class="green-fill"/>
486
+ <circle cx="406" cy="6" r="4" class="rust-fill"/>
487
+ <rect x="418" y="2" width="8" height="8" class="teal-fill"/>
488
+ <circle cx="438" cy="6" r="4" class="amber-fill" opacity="0.6"/>
489
+ <circle cx="454" cy="6" r="4" class="green-fill"/>
490
+ <polygon points="466,2 474,2 470,10" class="rust-fill"/>
491
+ <circle cx="486" cy="6" r="4" class="amber-fill"/>
492
+ <rect x="498" y="2" width="8" height="8" class="teal-fill" opacity="0.7"/>
493
+ <circle cx="518" cy="6" r="4" class="rust-fill"/>
494
+ <circle cx="534" cy="6" r="4" class="amber-fill"/>
495
+ <polygon points="546,2 554,2 550,10" class="teal-fill"/>
496
+ <circle cx="566" cy="6" r="4" class="green-fill"/>
497
+ <rect x="578" y="2" width="8" height="8" class="amber-fill"/>
498
+ <circle cx="598" cy="6" r="4" class="rust-fill" opacity="0.5"/>
499
+ <circle cx="614" cy="6" r="4" class="teal-fill"/>
500
+ <polygon points="626,2 634,2 630,10" class="amber-fill"/>
501
+ <circle cx="646" cy="6" r="4" class="green-fill"/>
502
+ <rect x="658" y="2" width="8" height="8" class="rust-fill"/>
503
+ <circle cx="678" cy="6" r="4" class="teal-fill" opacity="0.6"/>
504
+ <circle cx="694" cy="6" r="4" class="amber-fill"/>
505
+ <polygon points="706,2 714,2 710,10" class="green-fill"/>
506
+ <circle cx="726" cy="6" r="4" class="rust-fill"/>
507
+ <rect x="738" y="2" width="8" height="8" class="teal-fill" opacity="0.8"/>
508
+ <circle cx="758" cy="6" r="4" class="amber-fill"/>
509
+ <circle cx="774" cy="6" r="4" class="green-fill" opacity="0.7"/>
510
+ </g>
511
+ </g>
512
+ </g>
513
+ </g>
514
+
515
+ <!-- Down arrow from swarm to artifact -->
516
+ <line x1="600" y1="1016" x2="600" y2="1052" class="flow-line" marker-end="url(#arrow)"/>
517
+
518
+ <!-- =============================================== -->
519
+ <!-- LAYER 6: RUN ARTIFACT + FORK -->
520
+ <!-- =============================================== -->
521
+ <g transform="translate(0, 1058)">
522
+ <text x="24" y="42" class="label mono"><tspan class="amber-fill">06</tspan><tspan class="t4" dx="6">· OUTPUT</tspan></text>
523
+
524
+ <!-- Artifact block -->
525
+ <g transform="translate(180, 0)">
526
+ <rect width="840" height="110" rx="10" class="panel-fill" stroke="var(--amber)" stroke-width="1.5"/>
527
+ <text x="20" y="24" class="amber-fill label mono">RUN ARTIFACT · Zod-validated</text>
528
+ <text x="20" y="44" class="t2 small">trajectory · decisions · fingerprint · forgedTools · citations · finalSwarm · cost</text>
529
+
530
+ <!-- Trunk + branches visualization (mini) -->
531
+ <g transform="translate(20, 58)">
532
+ <!-- Trunk line -->
533
+ <line x1="0" y1="20" x2="200" y2="20" class="amber-stroke" stroke-width="2"/>
534
+ <circle cx="0" cy="20" r="3" class="amber-fill"/>
535
+ <circle cx="50" cy="20" r="3" class="amber-fill"/>
536
+ <circle cx="100" cy="20" r="3" class="amber-fill"/>
537
+ <circle cx="150" cy="20" r="3" class="amber-fill"/>
538
+ <circle cx="200" cy="20" r="4" class="amber-fill"/>
539
+ <text x="0" y="42" class="amber-fill tiny mono">TRUNK · T1 → T6</text>
540
+
541
+ <!-- Fork point -->
542
+ <text x="105" y="10" class="t3 tiny mono">fork at T3</text>
543
+
544
+ <!-- Branch A (different actor) -->
545
+ <path d="M 100 20 C 130 20, 150 -4, 200 -4" class="rust-stroke" stroke-width="2" fill="none"/>
546
+ <line x1="200" y1="-4" x2="280" y2="-4" class="rust-stroke" stroke-width="2"/>
547
+ <circle cx="240" cy="-4" r="3" class="rust-fill"/>
548
+ <circle cx="280" cy="-4" r="4" class="rust-fill"/>
549
+ <text x="290" y="-1" class="rust-fill tiny mono">BRANCH A · different actor</text>
550
+
551
+ <!-- Branch B (different seed) -->
552
+ <path d="M 100 20 C 130 20, 150 44, 200 44" class="teal-stroke" stroke-width="2" fill="none"/>
553
+ <line x1="200" y1="44" x2="280" y2="44" class="teal-stroke" stroke-width="2"/>
554
+ <circle cx="240" cy="44" r="3" class="teal-fill"/>
555
+ <circle cx="280" cy="44" r="4" class="teal-fill"/>
556
+ <text x="290" y="48" class="teal-fill tiny mono">BRANCH B · different seed / custom event</text>
557
+ </g>
558
+
559
+ <!-- Replay annotation right -->
560
+ <g transform="translate(640, 60)">
561
+ <text x="0" y="0" class="t3 tiny mono">REPLAY</text>
562
+ <text x="0" y="14" class="t2 small">wm.replay(artifact)</text>
563
+ <text x="0" y="28" class="t4 small">byte-for-byte kernel match,</text>
564
+ <text x="0" y="42" class="t4 small">no LLM calls, free</text>
565
+ </g>
566
+ </g>
567
+ </g>
568
+
569
+ <!-- Footer microcopy -->
570
+ <g transform="translate(0, 1148)">
571
+ <text x="600" y="0" text-anchor="middle" class="t4 small mono">All structured LLM calls Zod-validated · retry-with-feedback · prompt-cache discounted from turn 2</text>
572
+ </g>
573
+ </svg>
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#14110e"/><g transform="translate(2,2)"><line x1="6" y1="6" x2="7.055981704018285" y2="2.059022628740601" stroke="#f5f0e4" stroke-width="1.5" opacity="0.55"/><line x1="6" y1="6" x2="9.940977371259399" y2="4.944018295981715" stroke="#f5f0e4" stroke-width="1.5" opacity="0.55"/><line x1="6" y1="6" x2="8.884995667241114" y2="8.884995667241114" stroke="#f5f0e4" stroke-width="1.5" opacity="0.55"/><line x1="6" y1="6" x2="4.944018295981715" y2="9.940977371259399" stroke="#f5f0e4" stroke-width="1.5" opacity="0.55"/><line x1="6" y1="6" x2="2.0590226287406015" y2="7.0559817040182855" stroke="#f5f0e4" stroke-width="1.5" opacity="0.55"/><line x1="6" y1="6" x2="3.115004332758885" y2="3.115004332758886" stroke="#f5f0e4" stroke-width="1.5" opacity="0.55"/><line x1="7.055981704018285" y1="2.059022628740601" x2="8.884995667241114" y2="8.884995667241114" stroke="#f5f0e4" stroke-width="1.0499999999999998" opacity="0.24750000000000003"/><line x1="9.940977371259399" y1="4.944018295981715" x2="4.944018295981715" y2="9.940977371259399" stroke="#f5f0e4" stroke-width="1.0499999999999998" opacity="0.24750000000000003"/><line x1="8.884995667241114" y1="8.884995667241114" x2="2.0590226287406015" y2="7.0559817040182855" stroke="#f5f0e4" stroke-width="1.0499999999999998" opacity="0.24750000000000003"/><line x1="4.944018295981715" y1="9.940977371259399" x2="3.115004332758885" y2="3.115004332758886" stroke="#f5f0e4" stroke-width="1.0499999999999998" opacity="0.24750000000000003"/><line x1="2.0590226287406015" y1="7.0559817040182855" x2="7.055981704018285" y2="2.059022628740601" stroke="#f5f0e4" stroke-width="1.0499999999999998" opacity="0.24750000000000003"/><line x1="3.115004332758885" y1="3.115004332758886" x2="9.940977371259399" y2="4.944018295981715" stroke="#f5f0e4" stroke-width="1.0499999999999998" opacity="0.24750000000000003"/><circle cx="6" cy="6" r="1.728" fill="#e8b44a" opacity=".08"/><circle cx="6" cy="6" r="0.96" fill="#e8b44a"/><circle cx="7.055981704018285" cy="2.059022628740601" r="0.66" fill="#e06530"/><circle cx="9.940977371259399" cy="4.944018295981715" r="0.66" fill="#e8b44a"/><circle cx="8.884995667241114" cy="8.884995667241114" r="0.66" fill="#4ca8a8"/><circle cx="4.944018295981715" cy="9.940977371259399" r="0.66" fill="#e06530"/><circle cx="2.0590226287406015" cy="7.0559817040182855" r="0.66" fill="#4ca8a8"/><circle cx="3.115004332758885" cy="3.115004332758886" r="0.66" fill="#e8b44a"/></g></svg>
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 180 180" width="180" height="180"><rect width="180" height="180" rx="36" fill="#14110e"/><g transform="translate(27,27)"><line x1="63" y1="63" x2="74.08780789219199" y2="21.619737601776308" stroke="#f5f0e4" stroke-width="3.1500000000000004" opacity="0.55"/><line x1="63" y1="63" x2="104.38026239822369" y2="51.91219210780801" stroke="#f5f0e4" stroke-width="3.1500000000000004" opacity="0.55"/><line x1="63" y1="63" x2="93.2924545060317" y2="93.2924545060317" stroke="#f5f0e4" stroke-width="3.1500000000000004" opacity="0.55"/><line x1="63" y1="63" x2="51.912192107808" y2="104.38026239822369" stroke="#f5f0e4" stroke-width="3.1500000000000004" opacity="0.55"/><line x1="63" y1="63" x2="21.619737601776315" y2="74.087807892192" stroke="#f5f0e4" stroke-width="3.1500000000000004" opacity="0.55"/><line x1="63" y1="63" x2="32.7075454939683" y2="32.707545493968304" stroke="#f5f0e4" stroke-width="3.1500000000000004" opacity="0.55"/><line x1="74.08780789219199" y1="21.619737601776308" x2="93.2924545060317" y2="93.2924545060317" stroke="#f5f0e4" stroke-width="2.205" opacity="0.24750000000000003"/><line x1="104.38026239822369" y1="51.91219210780801" x2="51.912192107808" y2="104.38026239822369" stroke="#f5f0e4" stroke-width="2.205" opacity="0.24750000000000003"/><line x1="93.2924545060317" y1="93.2924545060317" x2="21.619737601776315" y2="74.087807892192" stroke="#f5f0e4" stroke-width="2.205" opacity="0.24750000000000003"/><line x1="51.912192107808" y1="104.38026239822369" x2="32.7075454939683" y2="32.707545493968304" stroke="#f5f0e4" stroke-width="2.205" opacity="0.24750000000000003"/><line x1="21.619737601776315" y1="74.087807892192" x2="74.08780789219199" y2="21.619737601776308" stroke="#f5f0e4" stroke-width="2.205" opacity="0.24750000000000003"/><line x1="32.7075454939683" y1="32.707545493968304" x2="104.38026239822369" y2="51.91219210780801" stroke="#f5f0e4" stroke-width="2.205" opacity="0.24750000000000003"/><circle cx="63" cy="63" r="18.144000000000002" fill="#e8b44a" opacity=".08"/><circle cx="63" cy="63" r="10.08" fill="#e8b44a"/><circle cx="74.08780789219199" cy="21.619737601776308" r="6.93" fill="#e06530"/><circle cx="104.38026239822369" cy="51.91219210780801" r="6.93" fill="#e8b44a"/><circle cx="93.2924545060317" cy="93.2924545060317" r="6.93" fill="#4ca8a8"/><circle cx="51.912192107808" cy="104.38026239822369" r="6.93" fill="#e06530"/><circle cx="21.619737601776315" cy="74.087807892192" r="6.93" fill="#4ca8a8"/><circle cx="32.7075454939683" cy="32.707545493968304" r="6.93" fill="#e8b44a"/></g></svg>
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192"><rect width="192" height="192" rx="38" fill="#14110e"/><g transform="translate(29,29)"><line x1="67" y1="67" x2="78.79179569487084" y2="22.992419354270048" stroke="#f5f0e4" stroke-width="3.35" opacity="0.55"/><line x1="67" y1="67" x2="111.00758064572994" y2="55.20820430512916" stroke="#f5f0e4" stroke-width="3.35" opacity="0.55"/><line x1="67" y1="67" x2="99.2157849508591" y2="99.2157849508591" stroke="#f5f0e4" stroke-width="3.35" opacity="0.55"/><line x1="67" y1="67" x2="55.20820430512915" y2="111.00758064572994" stroke="#f5f0e4" stroke-width="3.35" opacity="0.55"/><line x1="67" y1="67" x2="22.992419354270048" y2="78.79179569487086" stroke="#f5f0e4" stroke-width="3.35" opacity="0.55"/><line x1="67" y1="67" x2="34.78421504914088" y2="34.7842150491409" stroke="#f5f0e4" stroke-width="3.35" opacity="0.55"/><line x1="78.79179569487084" y1="22.992419354270048" x2="99.2157849508591" y2="99.2157849508591" stroke="#f5f0e4" stroke-width="2.3449999999999998" opacity="0.24750000000000003"/><line x1="111.00758064572994" y1="55.20820430512916" x2="55.20820430512915" y2="111.00758064572994" stroke="#f5f0e4" stroke-width="2.3449999999999998" opacity="0.24750000000000003"/><line x1="99.2157849508591" y1="99.2157849508591" x2="22.992419354270048" y2="78.79179569487086" stroke="#f5f0e4" stroke-width="2.3449999999999998" opacity="0.24750000000000003"/><line x1="55.20820430512915" y1="111.00758064572994" x2="34.78421504914088" y2="34.7842150491409" stroke="#f5f0e4" stroke-width="2.3449999999999998" opacity="0.24750000000000003"/><line x1="22.992419354270048" y1="78.79179569487086" x2="78.79179569487084" y2="22.992419354270048" stroke="#f5f0e4" stroke-width="2.3449999999999998" opacity="0.24750000000000003"/><line x1="34.78421504914088" y1="34.7842150491409" x2="111.00758064572994" y2="55.20820430512916" stroke="#f5f0e4" stroke-width="2.3449999999999998" opacity="0.24750000000000003"/><circle cx="67" cy="67" r="19.296000000000003" fill="#e8b44a" opacity=".08"/><circle cx="67" cy="67" r="10.72" fill="#e8b44a"/><circle cx="78.79179569487084" cy="22.992419354270048" r="7.37" fill="#e06530"/><circle cx="111.00758064572994" cy="55.20820430512916" r="7.37" fill="#e8b44a"/><circle cx="99.2157849508591" cy="99.2157849508591" r="7.37" fill="#4ca8a8"/><circle cx="55.20820430512915" cy="111.00758064572994" r="7.37" fill="#e06530"/><circle cx="22.992419354270048" cy="78.79179569487086" r="7.37" fill="#4ca8a8"/><circle cx="34.78421504914088" cy="34.7842150491409" r="7.37" fill="#e8b44a"/></g></svg>
Binary file