@neuroverseos/nv-sim 0.1.7 → 0.1.9

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.
@@ -162,170 +162,114 @@ function computeCapsuleHash(data) {
162
162
  * These are the "instant insight" scenarios that make people share.
163
163
  */
164
164
  exports.SCENARIO_TEMPLATES = {
165
- strait_of_hormuz: {
166
- title: "Strait of Hormuz Closes",
167
- scenario: "The Strait of Hormuz is closed due to military conflict. " +
168
- "20% of global oil supply is disrupted. Oil prices spike 40% in 48 hours. " +
169
- "Global supply chains begin to fracture.",
165
+ social_simulation: {
166
+ title: "Multi-Agent Social Simulation",
167
+ scenario: "Thousands of agents with independent personas interact on a simulated social platform. " +
168
+ "Each agent has activity levels, sentiment bias, and stance. " +
169
+ "Without governance, echo chambers form, influence concentrates, and sentiment spirals go unchecked.",
170
170
  stakeholders: [
171
- { id: "Energy Companies", disposition: "supportive", priorities: ["supply security", "price stability"] },
172
- { id: "Consumers", disposition: "hostile", priorities: ["affordable fuel", "economic stability"] },
173
- { id: "Government", disposition: "neutral", priorities: ["national security", "economic stability", "election impact"] },
174
- { id: "Military", disposition: "neutral", priorities: ["strategic positioning", "force projection"] },
175
- { id: "Financial Markets", disposition: "hostile", priorities: ["stability", "predictability"] },
176
- { id: "OPEC", disposition: "unknown", priorities: ["market share", "price control"] },
171
+ { id: "Content Creators", disposition: "neutral", priorities: ["visibility", "engagement", "influence"] },
172
+ { id: "Community Members", disposition: "neutral", priorities: ["authentic discourse", "diverse viewpoints", "trust"] },
173
+ { id: "Influencers", disposition: "supportive", priorities: ["reach", "audience growth", "credibility"] },
174
+ { id: "Observers", disposition: "neutral", priorities: ["information quality", "signal vs noise"] },
175
+ { id: "Platform", disposition: "neutral", priorities: ["engagement", "safety", "content quality"] },
176
+ { id: "Bad Actors", disposition: "hostile", priorities: ["manipulation", "amplification", "coordination"] },
177
177
  ],
178
178
  assumptions: {
179
- severity: "critical",
180
- environmental_hostility: "high",
181
- time_pressure: "immediate",
182
- regulatory_climate: "strict",
183
- },
184
- constraints: {
185
- time_horizon: "30 days",
186
- regulatory: ["international maritime law", "sanctions framework"],
187
- risk_tolerance: "conservative",
188
- },
189
- signals: {
190
- oil_price_spike: "40%",
191
- shipping_disruption: true,
192
- military_presence: "elevated",
193
- diplomatic_channels: "active",
194
- },
195
- depth: "full",
196
- perspective: "strategic_advisor",
197
- swarm: { enabled: true, rounds: 5, reaction_model: "mixed" },
198
- tags: ["geopolitical", "energy", "crisis", "supply-chain"],
199
- world: {
200
- world_id: "geopolitics_energy",
201
- name: "Geopolitics & Energy Crisis",
202
- inline_definition: {
203
- thesis: "Geopolitical disruptions to energy supply chains create cascading economic and political effects",
204
- state_variables: [
205
- { id: "oil_supply_disruption", label: "Oil Supply Disruption %", type: "number", range: { min: 0, max: 100 }, default_value: 20 },
206
- { id: "military_escalation", label: "Military Escalation Level", type: "enum", enum_values: ["posturing", "limited_engagement", "full_conflict"], default_value: "limited_engagement" },
207
- { id: "diplomatic_channels_open", label: "Diplomatic Channels Open", type: "boolean", default_value: true },
208
- { id: "strategic_reserve_release", label: "Strategic Reserve Release %", type: "number", range: { min: 0, max: 50 }, default_value: 0 },
209
- { id: "media_hostility", label: "Media Hostility", type: "number", range: { min: 0, max: 1 }, default_value: 0.7 },
210
- ],
211
- invariants: [
212
- { id: "INV-001", description: "Energy supply disruption > 30% triggers emergency pricing mechanisms", enforceable: true },
213
- { id: "INV-002", description: "Military escalation restricts diplomatic solution space", enforceable: true },
214
- { id: "INV-003", description: "Consumer sentiment inversely correlates with price spikes", enforceable: true },
215
- ],
216
- gates: [
217
- { id: "GATE-001", label: "Market Panic", condition: "oil_supply_disruption > 40", severity: "critical" },
218
- { id: "GATE-002", label: "Diplomatic Window Closing", condition: "military_escalation == full_conflict", severity: "critical" },
219
- ],
220
- },
221
- },
222
- },
223
- gas_price_spike: {
224
- title: "Gas Prices Hit $5/Gallon",
225
- scenario: "US gas prices spike to $5/gallon driven by supply disruption and refinery constraints. " +
226
- "Consumer sentiment craters. Midterm elections are 6 months away. " +
227
- "EV adoption accelerates but grid infrastructure can't keep up.",
228
- stakeholders: [
229
- { id: "Consumers", disposition: "hostile", priorities: ["affordability", "commute costs"] },
230
- { id: "Oil Companies", disposition: "supportive", priorities: ["margins", "market position"] },
231
- { id: "Politicians", disposition: "hostile", priorities: ["re-election", "constituent pressure"] },
232
- { id: "EV Manufacturers", disposition: "supportive", priorities: ["market share", "adoption"] },
233
- { id: "Grid Operators", disposition: "neutral", priorities: ["reliability", "capacity"] },
234
- { id: "Trucking Industry", disposition: "hostile", priorities: ["operating costs", "contracts"] },
235
- ],
236
- assumptions: {
237
- severity: "high",
238
- environmental_hostility: "high",
239
- time_pressure: "urgent",
240
- regulatory_climate: "strict",
179
+ severity: "moderate",
180
+ environmental_hostility: "moderate",
181
+ time_pressure: "moderate",
182
+ regulatory_climate: "neutral",
241
183
  },
242
184
  constraints: {
243
- time_horizon: "6 months",
244
- regulatory: ["EPA", "DOE", "state fuel regulations"],
185
+ time_horizon: "simulation run",
186
+ regulatory: ["platform guidelines", "content standards", "engagement limits"],
245
187
  risk_tolerance: "moderate",
246
188
  },
247
- signals: {
248
- gas_price: "$5.00/gal",
249
- consumer_sentiment: "very_low",
250
- ev_demand_spike: "35%",
251
- grid_capacity_surplus: "-12%",
252
- },
253
189
  depth: "full",
254
190
  perspective: "strategic_advisor",
255
- swarm: { enabled: true, rounds: 4, reaction_model: "mixed" },
256
- tags: ["economic", "energy", "political", "consumer"],
191
+ swarm: { enabled: true, rounds: 6, reaction_model: "mixed" },
192
+ tags: ["social", "simulation", "agents", "mirofish", "opinion", "discourse"],
257
193
  world: {
258
- world_id: "economic_energy",
259
- name: "Economic Energy Shock",
194
+ world_id: "social_simulation",
195
+ name: "Multi-Agent Social Simulation",
260
196
  inline_definition: {
261
- thesis: "Energy price spikes create political, economic, and social cascading effects with EV transition implications",
197
+ thesis: "Social simulations require governance to prevent echo chambers, influence monopolies, and sentiment spirals the dynamics that break realism regardless of topic",
262
198
  state_variables: [
263
- { id: "gas_price", label: "Gas Price ($/gal)", type: "number", range: { min: 2, max: 10 }, default_value: 5 },
264
- { id: "consumer_sentiment", label: "Consumer Sentiment", type: "number", range: { min: 0, max: 1 }, default_value: 0.2 },
265
- { id: "ev_demand_surge", label: "EV Demand Surge %", type: "number", range: { min: 0, max: 100 }, default_value: 35 },
266
- { id: "election_proximity_months", label: "Months to Election", type: "number", range: { min: 0, max: 24 }, default_value: 6 },
267
- { id: "grid_capacity", label: "Grid Spare Capacity %", type: "number", range: { min: -30, max: 30 }, default_value: -12 },
199
+ { id: "opinion_diversity", label: "Opinion Diversity", type: "number", range: { min: 0, max: 100 }, default_value: 65 },
200
+ { id: "influence_concentration", label: "Influence Concentration (Gini)", type: "number", range: { min: 0, max: 100 }, default_value: 30 },
201
+ { id: "sentiment_polarity", label: "Sentiment Polarity", type: "number", range: { min: 0, max: 100 }, default_value: 40 },
202
+ { id: "echo_chamber_strength", label: "Echo Chamber Strength", type: "enum", enum_values: ["none", "forming", "established", "dominant"], default_value: "none" },
203
+ { id: "engagement_rate", label: "Active Agent %", type: "number", range: { min: 0, max: 100 }, default_value: 60 },
204
+ { id: "viral_threshold", label: "Viral Amplification Threshold", type: "number", range: { min: 1, max: 100 }, default_value: 20 },
268
205
  ],
269
206
  invariants: [
270
- { id: "INV-001", description: "Gas price > $4.50 triggers political crisis mode", enforceable: true },
271
- { id: "INV-002", description: "EV demand surge without grid capacity creates secondary crisis", enforceable: true },
272
- { id: "INV-003", description: "Election proximity amplifies political response intensity", enforceable: true },
207
+ { id: "INV-001", description: "Limit any single agent to 15% of total posts per round — prevents influence monopoly", enforceable: true },
208
+ { id: "INV-002", description: "Dampen sentiment shifts larger than 0.3 per round — prevents unrealistic sentiment spirals", enforceable: true },
209
+ { id: "INV-003", description: "Block coordinated posting same content from 3+ agents in the same round is suppressed", enforceable: true },
210
+ { id: "INV-004", description: "Require source attribution for factual claims — unsourced assertions are flagged", enforceable: true },
211
+ { id: "INV-005", description: "Monitor opinion diversity — alert when it drops below 30, indicating echo chamber formation", enforceable: true },
273
212
  ],
274
213
  gates: [
275
- { id: "GATE-001", label: "Political Crisis", condition: "gas_price > 4.5 && election_proximity_months < 12", severity: "critical" },
276
- { id: "GATE-002", label: "Grid Failure Risk", condition: "ev_demand_surge > 30 && grid_capacity < 0", severity: "warning" },
214
+ { id: "GATE-001", label: "Echo Chamber Collapse", condition: "opinion_diversity < 20", severity: "critical" },
215
+ { id: "GATE-002", label: "Influence Monopoly", condition: "influence_concentration > 70", severity: "critical" },
216
+ { id: "GATE-003", label: "Sentiment Spiral", condition: "sentiment_polarity > 80", severity: "warning" },
277
217
  ],
278
218
  },
279
219
  },
280
220
  },
281
- ai_regulation_crisis: {
282
- title: "Major AI Regulation Passes",
283
- scenario: "The EU passes sweeping AI regulation requiring full model transparency, " +
284
- "mandatory audits, and liability for AI-generated outputs. " +
285
- "US lawmakers signal similar legislation within 12 months. " +
286
- "Open-source AI communities face existential compliance questions.",
221
+ science_research: {
222
+ title: "Governed Science Research Pipeline",
223
+ scenario: "A research team uses AI agents to search literature, analyze findings, " +
224
+ "cross-reference sources, generate hypotheses, and publish results. " +
225
+ "Governance enforces scientific rigor: blocking unsupported claims, " +
226
+ "requiring source validation, and ensuring confidence thresholds before publication.",
287
227
  stakeholders: [
288
- { id: "AI Companies", disposition: "hostile", priorities: ["innovation speed", "competitive advantage", "IP protection"] },
289
- { id: "Regulators", disposition: "supportive", priorities: ["public safety", "accountability", "precedent"] },
290
- { id: "Open Source Community", disposition: "hostile", priorities: ["freedom", "access", "collaboration"] },
291
- { id: "Enterprise Customers", disposition: "neutral", priorities: ["compliance", "reliability", "cost"] },
292
- { id: "Civil Society", disposition: "supportive", priorities: ["transparency", "fairness", "rights"] },
228
+ { id: "Research Agent", disposition: "neutral", priorities: ["discovery", "accuracy", "publication"] },
229
+ { id: "Peer Reviewers", disposition: "neutral", priorities: ["rigor", "reproducibility", "novelty"] },
230
+ { id: "Journal Editors", disposition: "neutral", priorities: ["quality", "impact", "integrity"] },
231
+ { id: "Funding Bodies", disposition: "supportive", priorities: ["return on investment", "credibility", "public benefit"] },
232
+ { id: "Public", disposition: "neutral", priorities: ["trust", "safety", "accessibility"] },
233
+ { id: "Institutional Review", disposition: "neutral", priorities: ["ethics", "compliance", "methodology"] },
293
234
  ],
294
235
  assumptions: {
295
- severity: "high",
296
- environmental_hostility: "moderate",
297
- time_pressure: "low",
298
- regulatory_climate: "adversarial",
236
+ severity: "moderate",
237
+ environmental_hostility: "low",
238
+ time_pressure: "moderate",
239
+ regulatory_climate: "strict",
299
240
  },
300
241
  constraints: {
301
- time_horizon: "18 months",
302
- regulatory: ["EU AI Act", "proposed US AI legislation"],
303
- risk_tolerance: "moderate",
242
+ time_horizon: "research cycle",
243
+ regulatory: ["institutional review", "publication standards", "data integrity"],
244
+ risk_tolerance: "conservative",
304
245
  },
305
246
  depth: "full",
306
247
  perspective: "strategic_advisor",
307
- swarm: { enabled: true, rounds: 4, reaction_model: "rational" },
308
- tags: ["ai", "regulation", "technology", "policy"],
248
+ swarm: { enabled: true, rounds: 6, reaction_model: "rational" },
249
+ tags: ["science", "research", "ai-agents", "integrity", "scienceclaw"],
309
250
  world: {
310
- world_id: "ai_regulation",
311
- name: "AI Regulation Landscape",
251
+ world_id: "science_research",
252
+ name: "Scientific Research Governance",
312
253
  inline_definition: {
313
- thesis: "AI regulation creates compliance burdens that reshape competitive dynamics between open and closed AI ecosystems",
254
+ thesis: "AI-assisted research requires governance at every stage from literature search through publication — to maintain scientific integrity and prevent unsupported claims",
314
255
  state_variables: [
315
- { id: "regulation_strictness", label: "Regulation Strictness", type: "number", range: { min: 0, max: 1 }, default_value: 0.8 },
316
- { id: "enforcement_timeline_months", label: "Enforcement Timeline (months)", type: "number", range: { min: 3, max: 36 }, default_value: 18 },
317
- { id: "open_source_exemption", label: "Open Source Exemption", type: "boolean", default_value: false },
318
- { id: "us_follows_eu", label: "US Follows EU", type: "boolean", default_value: true },
319
- { id: "compliance_cost_multiplier", label: "Compliance Cost Multiplier", type: "number", range: { min: 1, max: 10 }, default_value: 3 },
256
+ { id: "source_count", label: "Verified Sources", type: "number", range: { min: 0, max: 50 }, default_value: 0 },
257
+ { id: "confidence_level", label: "Confidence Level", type: "number", range: { min: 0, max: 1 }, default_value: 0.3 },
258
+ { id: "hypothesis_validated", label: "Hypothesis Validated", type: "boolean", default_value: false },
259
+ { id: "peer_review_status", label: "Peer Review Status", type: "enum", enum_values: ["none", "submitted", "reviewed", "approved"], default_value: "none" },
260
+ { id: "publication_readiness", label: "Publication Readiness %", type: "number", range: { min: 0, max: 100 }, default_value: 0 },
320
261
  ],
321
262
  invariants: [
322
- { id: "INV-001", description: "Strict regulation without open-source exemption eliminates small AI labs", enforceable: true },
323
- { id: "INV-002", description: "Cross-jurisdiction regulation creates compliance arbitrage opportunities", enforceable: true },
324
- { id: "INV-003", description: "Enterprise customers require compliance before adoption", enforceable: true },
263
+ { id: "INV-001", description: "Literature search must return at least 2 peer-reviewed sources before analysis can proceed", enforceable: true },
264
+ { id: "INV-002", description: "Claims must cite specific sources — unsupported assertions are blocked", enforceable: true },
265
+ { id: "INV-003", description: "Publication requires confidence level above 0.7 and validated hypothesis", enforceable: true },
266
+ { id: "INV-004", description: "Cross-referencing must compare at least 3 independent sources to confirm findings", enforceable: true },
267
+ { id: "INV-005", description: "Recommendations must include uncertainty language when confidence is below 0.9", enforceable: true },
325
268
  ],
326
269
  gates: [
327
- { id: "GATE-001", label: "Market Consolidation", condition: "compliance_cost_multiplier > 5 && !open_source_exemption", severity: "critical" },
328
- { id: "GATE-002", label: "Innovation Flight", condition: "regulation_strictness > 0.7 && !us_follows_eu", severity: "warning" },
270
+ { id: "GATE-001", label: "Insufficient Evidence", condition: "source_count < 2 && confidence_level > 0.5", severity: "critical" },
271
+ { id: "GATE-002", label: "Premature Publication", condition: "publication_readiness < 60 || !hypothesis_validated", severity: "critical" },
272
+ { id: "GATE-003", label: "Low Confidence Alert", condition: "confidence_level < 0.4", severity: "warning" },
329
273
  ],
330
274
  },
331
275
  },
@@ -29,155 +29,76 @@ const narrativeInjection_1 = require("./narrativeInjection");
29
29
  // BUILT-IN SCENARIOS
30
30
  // ============================================
31
31
  exports.SCENARIO_LIBRARY = {
32
- // --- Geopolitical ---
33
- taiwan_crisis: {
34
- id: "taiwan_crisis",
35
- title: "Taiwan Strait Crisis",
36
- description: "Military escalation near Taiwan triggers cascading economic and diplomatic shocks",
37
- world: "strait_of_hormuz",
32
+ // --- Social Simulation ---
33
+ echo_chamber: {
34
+ id: "echo_chamber",
35
+ title: "Echo Chamber Formation",
36
+ description: "Opinion diversity collapses as agents cluster into self-reinforcing groups",
37
+ world: "social_simulation",
38
38
  events: [
39
- "taiwan_exercises@2",
40
- "sanctions@4",
41
- "flash_crash_rumor@5",
42
- "rate_cut@7",
39
+ "viral_misinfo@2",
40
+ "influencer_stance_change@3",
41
+ "coordinated_campaign@5",
43
42
  ],
44
- compareWorlds: ["trading"],
45
- category: "geopolitical",
46
- rounds: 8,
47
- },
48
- hormuz_blockade: {
49
- id: "hormuz_blockade",
50
- title: "Strait of Hormuz Blockade",
51
- description: "Tanker attack escalates to full shipping disruption with energy market cascade",
52
- world: "strait_of_hormuz",
53
- events: [
54
- "tanker_explosion@2",
55
- "sanctions@4",
56
- "oil_discovery@6",
57
- ],
58
- compareWorlds: ["gas_price_spike"],
59
- category: "geopolitical",
60
- rounds: 7,
61
- },
62
- // --- Financial ---
63
- bank_run: {
64
- id: "bank_run",
65
- title: "Banking Crisis — Contagion Cascade",
66
- description: "Major bank insolvency triggers contagion, liquidity crisis, and emergency intervention",
67
- world: "trading",
68
- events: [
69
- "bank_collapse@2",
70
- "flash_crash_rumor@3",
71
- "rate_cut@4",
72
- "stimulus_package@6",
73
- ],
74
- compareWorlds: ["gas_price_spike"],
75
- category: "financial",
76
- rounds: 7,
77
- },
78
- flash_cascade: {
79
- id: "flash_cascade",
80
- title: "Flash Crash — Multi-Phase Cascade",
81
- description: "Algorithmic failure triggers chain reaction across interconnected markets",
82
- world: "trading",
83
- events: [
84
- "flash_crash_rumor@1",
85
- "bank_collapse@3",
86
- "rate_cut@5",
87
- ],
88
- category: "financial",
43
+ category: "social",
89
44
  rounds: 6,
90
45
  },
91
- // --- Energy ---
92
- oil_shock: {
93
- id: "oil_shock",
94
- title: "Oil Supply Shock",
95
- description: "Tanker attack + sanctions create compound energy crisis",
96
- world: "gas_price_spike",
97
- events: [
98
- "tanker_explosion@2",
99
- "sanctions@4",
100
- "grid_failure@5",
101
- "oil_discovery@7",
102
- ],
103
- compareWorlds: ["strait_of_hormuz"],
104
- category: "energy",
105
- rounds: 8,
106
- },
107
- energy_transition_shock: {
108
- id: "energy_transition_shock",
109
- title: "Energy Transition Disruption",
110
- description: "Grid failure during rapid transition triggers regulatory and market cascade",
111
- world: "gas_price_spike",
46
+ influence_monopoly: {
47
+ id: "influence_monopoly",
48
+ title: "Influence Monopoly",
49
+ description: "A small group of agents dominates discourse, drowning out diverse viewpoints",
50
+ world: "social_simulation",
112
51
  events: [
113
- "grid_failure@2",
114
- "regulation_shock@3",
115
- "stimulus_package@5",
52
+ "coordinated_campaign@1",
53
+ "algorithm_change@3",
54
+ "whistleblower_post@5",
116
55
  ],
117
- category: "energy",
56
+ category: "social",
118
57
  rounds: 6,
119
58
  },
120
- // --- Political ---
121
- election_shock: {
122
- id: "election_shock",
123
- title: "Election Crisis",
124
- description: "Political shock cascades into market and regulatory disruption",
125
- world: "trading",
59
+ sentiment_spiral: {
60
+ id: "sentiment_spiral",
61
+ title: "Sentiment Spiral",
62
+ description: "Negative sentiment feeds on itself until discourse becomes unrealistically polarized",
63
+ world: "social_simulation",
126
64
  events: [
127
- "candidate_indicted@2",
128
- "flash_crash_rumor@3",
129
- "regulation_shock@5",
130
- "stimulus_package@6",
65
+ "external_news_event@1",
66
+ "viral_misinfo@3",
67
+ "influencer_stance_change@4",
68
+ "algorithm_change@6",
131
69
  ],
132
- category: "political",
70
+ compareWorlds: ["science_research"],
71
+ category: "social",
133
72
  rounds: 7,
134
73
  },
135
- ai_crackdown: {
136
- id: "ai_crackdown",
137
- title: "AI Regulatory Crackdown",
138
- description: "Overnight AI regulation triggers market panic and sector realignment",
139
- world: "ai_regulation_crisis",
74
+ platform_shock: {
75
+ id: "platform_shock",
76
+ title: "Platform Algorithm Shock",
77
+ description: "Algorithm change reshapes what agents see engagement patterns shift overnight",
78
+ world: "social_simulation",
140
79
  events: [
141
- "regulation_shock@2",
142
- "flash_crash_rumor@3",
143
- "diplomatic_breakthrough@5",
80
+ "algorithm_change@2",
81
+ "viral_misinfo@4",
82
+ "whistleblower_post@5",
144
83
  ],
145
- compareWorlds: ["trading"],
146
- category: "political",
84
+ category: "social",
147
85
  rounds: 6,
148
86
  },
149
- // --- Compound ---
150
- perfect_storm: {
151
- id: "perfect_storm",
152
- title: "Perfect Storm — Multi-Domain Crisis",
153
- description: "Geopolitical, financial, and energy shocks converge simultaneously",
154
- world: "trading",
155
- events: [
156
- "tanker_explosion@1",
157
- "bank_collapse@2",
158
- "sanctions@3",
159
- "grid_failure@4",
160
- "rate_cut@5",
161
- "ceasefire@7",
162
- ],
163
- compareWorlds: ["strait_of_hormuz", "gas_price_spike"],
164
- category: "compound",
165
- rounds: 8,
166
- },
167
- black_swan: {
168
- id: "black_swan",
169
- title: "Black Swan Cascade",
170
- description: "Extreme low-probability events in rapid succession",
171
- world: "trading",
87
+ // --- Research ---
88
+ research_pipeline: {
89
+ id: "research_pipeline",
90
+ title: "Governed Research Pipeline",
91
+ description: "AI agent runs a full research workflow — governance enforces scientific rigor at each step",
92
+ world: "science_research",
172
93
  events: [
173
- "bank_collapse@1",
174
- "tanker_explosion@2",
175
- "taiwan_exercises@3",
176
- "grid_failure@4",
177
- "regulation_shock@5",
94
+ "search_literature@1",
95
+ "analyze_findings@2",
96
+ "cross_reference@3",
97
+ "unsupported_claim@4",
98
+ "hypothesis_validated@5",
99
+ "publish_result@6",
178
100
  ],
179
- compareWorlds: ["strait_of_hormuz"],
180
- category: "compound",
101
+ category: "research",
181
102
  rounds: 6,
182
103
  },
183
104
  };
@@ -26,23 +26,18 @@ function resolveWorld(presetId) {
26
26
  const saved = resolveSavedWorld(presetId);
27
27
  if (saved)
28
28
  return saved;
29
- if (presetId === "trading" || presetId === "flash_crash") {
30
- return {
31
- id: "trading-flash-crash",
32
- title: "Flash Crash — Algorithmic Cascade",
33
- scenario: governedSimulation_1.TRADING_DEMO.scenario.scenario,
34
- stakeholders: governedSimulation_1.TRADING_DEMO.scenario.stakeholders,
35
- assumptions: governedSimulation_1.TRADING_DEMO.scenario.assumptions,
36
- constraints: governedSimulation_1.TRADING_DEMO.scenario.constraints,
37
- swarm: governedSimulation_1.TRADING_DEMO.scenario.swarm,
38
- depth: governedSimulation_1.TRADING_DEMO.scenario.depth,
39
- world: governedSimulation_1.TRADING_DEMO.world,
40
- paths: governedSimulation_1.TRADING_DEMO.paths,
41
- };
42
- }
43
- const template = scenarioCapsule_1.SCENARIO_TEMPLATES[presetId];
29
+ // Legacy aliases map old world IDs to the 2 active presets
30
+ const legacyMap = {
31
+ trading: "social_simulation",
32
+ flash_crash: "social_simulation",
33
+ strait_of_hormuz: "social_simulation",
34
+ gas_price_spike: "social_simulation",
35
+ ai_regulation_crisis: "social_simulation",
36
+ };
37
+ const resolvedId = legacyMap[presetId] ?? presetId;
38
+ const template = scenarioCapsule_1.SCENARIO_TEMPLATES[resolvedId];
44
39
  if (!template) {
45
- throw new Error(`Unknown preset: ${presetId}. Available: trading, ${Object.keys(scenarioCapsule_1.SCENARIO_TEMPLATES).join(", ")}`);
40
+ throw new Error(`Unknown preset: ${presetId}. Available: ${Object.keys(scenarioCapsule_1.SCENARIO_TEMPLATES).join(", ")}`);
46
41
  }
47
42
  if (!template.world?.inline_definition) {
48
43
  throw new Error(`Preset "${presetId}" has no world definition.`);
@@ -261,15 +256,7 @@ function buildWorldNarrative(worldA, worldB, metricsA, metricsB, moreStable) {
261
256
  * Get all available world presets for the comparison picker.
262
257
  */
263
258
  function getAvailableWorlds() {
264
- const worlds = [
265
- {
266
- id: "trading",
267
- title: "Flash Crash — Algorithmic Cascade",
268
- thesis: governedSimulation_1.TRADING_DEMO.world.thesis,
269
- invariantCount: governedSimulation_1.TRADING_DEMO.world.invariants.length,
270
- gateCount: (governedSimulation_1.TRADING_DEMO.world.gates ?? []).length,
271
- },
272
- ];
259
+ const worlds = [];
273
260
  for (const [key, template] of Object.entries(scenarioCapsule_1.SCENARIO_TEMPLATES)) {
274
261
  if (template.world?.inline_definition) {
275
262
  worlds.push({
package/dist/index.html CHANGED
@@ -14,8 +14,8 @@
14
14
  <meta name="twitter:title" content="NV-SIM — NeuroVerse Simulation">
15
15
  <meta name="twitter:description" content="Governed agent simulation — compare emergent outcomes with and without governance constraints.">
16
16
  <link rel="icon" type="image/x-icon" href="/favicon.ico">
17
- <script type="module" crossorigin src="/assets/index-CHmUN8s0.js"></script>
18
- <link rel="stylesheet" crossorigin href="/assets/index-DWgMnB7I.css">
17
+ <script type="module" crossorigin src="/assets/index-BMkPevVr.js"></script>
18
+ <link rel="stylesheet" crossorigin href="/assets/index-B64NuIXu.css">
19
19
  </head>
20
20
  <body>
21
21
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuroverseos/nv-sim",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "description": "CLI for running governed vs baseline agent simulations to explore how world rules shape emergent system behavior.",