@agent-e/core 1.1.3 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,25 +13,30 @@ npm install @agent-e/core
13
13
  ```typescript
14
14
  import { AgentE } from '@agent-e/core';
15
15
 
16
- const agent = new AgentE({
17
- adapter: {
18
- getState: () => ({
19
- tick: currentTick,
20
- agentBalances: { /* id → gold */ },
21
- agentRoles: { /* id → role */ },
22
- agentInventories: { /* id → { resource → qty } */ },
23
- marketPrices: { /* resourceprice */ },
24
- agentSatisfaction: { /* id0-100 */ },
25
- poolSizes: { /* pool amount */ },
26
- }),
27
- setParam: async (param, value) => {
28
- // Apply parameter change to your economy
29
- },
16
+ const adapter = {
17
+ getState: () => ({
18
+ tick: currentTick,
19
+ agentBalances: { /* id → balance */ },
20
+ agentRoles: { /* id → role */ },
21
+ agentInventories: { /* id → { resource → qty } */ },
22
+ marketPrices: { /* resource → price */ },
23
+ agentSatisfaction: { /* id0-100 */ },
24
+ poolSizes: { /* poolamount */ },
25
+ roles: ['consumer', 'producer'], // all possible roles
26
+ resources: ['goodA', 'goodB'], // all possible resources
27
+ currency: 'credits', // currency name
28
+ }),
29
+ setParam: async (param, value) => {
30
+ // Apply parameter change to your economy
30
31
  },
32
+ };
33
+
34
+ const agent = new AgentE({
35
+ adapter,
31
36
  mode: 'advisor', // or 'autonomous'
32
37
  });
33
38
 
34
- agent.connect(agent.adapter).start();
39
+ agent.connect(adapter).start();
35
40
 
36
41
  // Call once per tick in your loop:
37
42
  await agent.tick();
@@ -58,15 +63,29 @@ Organized across 15 categories: supply chain, incentives, population, currency f
58
63
 
59
64
  Each principle has a `check(metrics, thresholds)` function that returns either `{ violated: false }` or a violation with severity, evidence, suggested action, confidence, and estimated lag.
60
65
 
66
+ ## Tick Configuration
67
+
68
+ ```typescript
69
+ const agent = new AgentE({
70
+ adapter: yourAdapter,
71
+ tickConfig: {
72
+ duration: 5, // one tick = 5 seconds
73
+ unit: 'second',
74
+ mediumWindow: 12, // medium metrics = every 12 ticks (60s)
75
+ coarseWindow: 120, // coarse metrics = every 120 ticks (10min)
76
+ },
77
+ });
78
+ ```
79
+
61
80
  ## Developer API
62
81
 
63
82
  ```typescript
64
83
  // Lock a parameter from automated adjustment
65
- agent.lock('craftingCost');
66
- agent.unlock('craftingCost');
84
+ agent.lock('productionCost');
85
+ agent.unlock('productionCost');
67
86
 
68
87
  // Constrain a parameter to a range
69
- agent.constrain('auctionFee', { min: 0.01, max: 0.50 });
88
+ agent.constrain('transactionFee', { min: 0.01, max: 0.50 });
70
89
 
71
90
  // Add a custom principle
72
91
  agent.addPrinciple(myPrinciple);
@@ -96,21 +115,21 @@ import type { Principle } from '@agent-e/core';
96
115
 
97
116
  const myRule: Principle = {
98
117
  id: 'MY_01',
99
- name: 'Healer Population Floor',
118
+ name: 'Support Role Population Floor',
100
119
  category: 'population',
101
- description: 'Healer share below 5% is a crisis',
120
+ description: 'Support role share below 5% is a crisis',
102
121
  check(metrics, thresholds) {
103
- const share = metrics.roleShares['Healer'] ?? 0;
122
+ const share = metrics.roleShares['support'] ?? 0;
104
123
  if (share < 0.05) {
105
124
  return {
106
125
  violated: true,
107
126
  severity: 8,
108
127
  evidence: { share },
109
128
  suggestedAction: {
110
- parameter: 'healerReward',
129
+ parameter: 'supportReward',
111
130
  direction: 'increase',
112
131
  magnitude: 0.25,
113
- reasoning: 'Healer population critically low.',
132
+ reasoning: 'Support role population critically low.',
114
133
  },
115
134
  confidence: 0.90,
116
135
  estimatedLag: 10,
package/dist/index.d.mts CHANGED
@@ -184,8 +184,8 @@ interface Thresholds {
184
184
  replacementRateMultiplier: number;
185
185
  maxAdjustmentPercent: number;
186
186
  cooldownTicks: number;
187
- arenaWinRate: number;
188
- arenaHouseCut: number;
187
+ poolWinRate: number;
188
+ poolHouseCut: number;
189
189
  roleSwitchFrictionMax: number;
190
190
  poolCapPercent: number;
191
191
  poolDecayRate: number;
@@ -204,12 +204,23 @@ interface Thresholds {
204
204
  giftTradeFilterRatio: number;
205
205
  disposalTradeWeightDiscount: number;
206
206
  }
207
+ interface TickConfig {
208
+ /** How many real-world units one tick represents. Default: 1 */
209
+ duration: number;
210
+ /** The unit of time. Default: 'tick' (abstract). Examples: 'second', 'minute', 'block', 'frame' */
211
+ unit: string;
212
+ /** Medium-resolution metric window in ticks. Default: 10 */
213
+ mediumWindow?: number;
214
+ /** Coarse-resolution metric window in ticks. Default: 100 */
215
+ coarseWindow?: number;
216
+ }
207
217
  type AgentEMode = 'autonomous' | 'advisor';
208
218
  interface AgentEConfig {
209
- adapter: EconomyAdapter | 'game' | 'defi' | 'marketplace';
219
+ adapter: EconomyAdapter;
210
220
  mode?: AgentEMode;
211
221
  dominantRoles?: string[];
212
222
  idealDistribution?: Record<string, number>;
223
+ tickConfig?: Partial<TickConfig>;
213
224
  gracePeriod?: number;
214
225
  checkInterval?: number;
215
226
  maxAdjustmentPercent?: number;
@@ -219,7 +230,7 @@ interface AgentEConfig {
219
230
  onAlert?: (diagnosis: Diagnosis) => void;
220
231
  onRollback?: (plan: ActionPlan, reason: string) => void;
221
232
  }
222
- type PersonaType = 'Gamer' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
233
+ type PersonaType = 'Active' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
223
234
  interface PersonaProfile {
224
235
  type: PersonaType;
225
236
  share: number;
@@ -278,14 +289,17 @@ declare class DecisionLog {
278
289
  declare class MetricStore {
279
290
  /** Fine: last 200 ticks, one entry per tick */
280
291
  private fine;
281
- /** Medium: last 200 windows of 10 ticks */
292
+ /** Medium: last 200 windows */
282
293
  private medium;
283
- /** Coarse: last 200 epochs of 100 ticks */
294
+ /** Coarse: last 200 epochs */
284
295
  private coarse;
296
+ private mediumWindow;
297
+ private coarseWindow;
285
298
  private ticksSinceLastMedium;
286
299
  private ticksSinceLastCoarse;
287
300
  private mediumAccumulator;
288
301
  private coarseAccumulator;
302
+ constructor(tickConfig?: Partial<TickConfig>);
289
303
  record(metrics: EconomyMetrics): void;
290
304
  latest(resolution?: MetricResolution): EconomyMetrics;
291
305
  query(q: MetricQuery): MetricQueryResult;
@@ -354,6 +368,8 @@ declare class Observer {
354
368
  private previousPrices;
355
369
  private customMetricFns;
356
370
  private anchorBaseline;
371
+ private tickConfig;
372
+ constructor(tickConfig?: Partial<TickConfig>);
357
373
  registerCustomMetric(name: string, fn: (state: EconomyState) => number): void;
358
374
  compute(state: EconomyState, recentEvents: EconomicEvent[]): EconomyMetrics;
359
375
  }
@@ -530,4 +546,4 @@ declare const LIVEOPS_PRINCIPLES: Principle[];
530
546
  /** All 60 built-in principles in priority order (supply chain → liveops) */
531
547
  declare const ALL_PRINCIPLES: Principle[];
532
548
 
533
- export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, emptyMetrics };
549
+ export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, type TickConfig, emptyMetrics };
package/dist/index.d.ts CHANGED
@@ -184,8 +184,8 @@ interface Thresholds {
184
184
  replacementRateMultiplier: number;
185
185
  maxAdjustmentPercent: number;
186
186
  cooldownTicks: number;
187
- arenaWinRate: number;
188
- arenaHouseCut: number;
187
+ poolWinRate: number;
188
+ poolHouseCut: number;
189
189
  roleSwitchFrictionMax: number;
190
190
  poolCapPercent: number;
191
191
  poolDecayRate: number;
@@ -204,12 +204,23 @@ interface Thresholds {
204
204
  giftTradeFilterRatio: number;
205
205
  disposalTradeWeightDiscount: number;
206
206
  }
207
+ interface TickConfig {
208
+ /** How many real-world units one tick represents. Default: 1 */
209
+ duration: number;
210
+ /** The unit of time. Default: 'tick' (abstract). Examples: 'second', 'minute', 'block', 'frame' */
211
+ unit: string;
212
+ /** Medium-resolution metric window in ticks. Default: 10 */
213
+ mediumWindow?: number;
214
+ /** Coarse-resolution metric window in ticks. Default: 100 */
215
+ coarseWindow?: number;
216
+ }
207
217
  type AgentEMode = 'autonomous' | 'advisor';
208
218
  interface AgentEConfig {
209
- adapter: EconomyAdapter | 'game' | 'defi' | 'marketplace';
219
+ adapter: EconomyAdapter;
210
220
  mode?: AgentEMode;
211
221
  dominantRoles?: string[];
212
222
  idealDistribution?: Record<string, number>;
223
+ tickConfig?: Partial<TickConfig>;
213
224
  gracePeriod?: number;
214
225
  checkInterval?: number;
215
226
  maxAdjustmentPercent?: number;
@@ -219,7 +230,7 @@ interface AgentEConfig {
219
230
  onAlert?: (diagnosis: Diagnosis) => void;
220
231
  onRollback?: (plan: ActionPlan, reason: string) => void;
221
232
  }
222
- type PersonaType = 'Gamer' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
233
+ type PersonaType = 'Active' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
223
234
  interface PersonaProfile {
224
235
  type: PersonaType;
225
236
  share: number;
@@ -278,14 +289,17 @@ declare class DecisionLog {
278
289
  declare class MetricStore {
279
290
  /** Fine: last 200 ticks, one entry per tick */
280
291
  private fine;
281
- /** Medium: last 200 windows of 10 ticks */
292
+ /** Medium: last 200 windows */
282
293
  private medium;
283
- /** Coarse: last 200 epochs of 100 ticks */
294
+ /** Coarse: last 200 epochs */
284
295
  private coarse;
296
+ private mediumWindow;
297
+ private coarseWindow;
285
298
  private ticksSinceLastMedium;
286
299
  private ticksSinceLastCoarse;
287
300
  private mediumAccumulator;
288
301
  private coarseAccumulator;
302
+ constructor(tickConfig?: Partial<TickConfig>);
289
303
  record(metrics: EconomyMetrics): void;
290
304
  latest(resolution?: MetricResolution): EconomyMetrics;
291
305
  query(q: MetricQuery): MetricQueryResult;
@@ -354,6 +368,8 @@ declare class Observer {
354
368
  private previousPrices;
355
369
  private customMetricFns;
356
370
  private anchorBaseline;
371
+ private tickConfig;
372
+ constructor(tickConfig?: Partial<TickConfig>);
357
373
  registerCustomMetric(name: string, fn: (state: EconomyState) => number): void;
358
374
  compute(state: EconomyState, recentEvents: EconomicEvent[]): EconomyMetrics;
359
375
  }
@@ -530,4 +546,4 @@ declare const LIVEOPS_PRINCIPLES: Principle[];
530
546
  /** All 60 built-in principles in priority order (supply chain → liveops) */
531
547
  declare const ALL_PRINCIPLES: Principle[];
532
548
 
533
- export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, emptyMetrics };
549
+ export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, type TickConfig, emptyMetrics };