paracosm 0.0.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +224 -0
  3. package/dist/cli/sim-config.d.ts +100 -0
  4. package/dist/cli/sim-config.d.ts.map +1 -0
  5. package/dist/cli/sim-config.js +124 -0
  6. package/dist/cli/sim-config.js.map +1 -0
  7. package/dist/cli/types.d.ts +73 -0
  8. package/dist/cli/types.d.ts.map +1 -0
  9. package/dist/cli/types.js +2 -0
  10. package/dist/cli/types.js.map +1 -0
  11. package/dist/engine/_template/index.d.ts +9 -0
  12. package/dist/engine/_template/index.d.ts.map +1 -0
  13. package/dist/engine/_template/index.js +91 -0
  14. package/dist/engine/_template/index.js.map +1 -0
  15. package/dist/engine/compiler/cache.d.ts +12 -0
  16. package/dist/engine/compiler/cache.d.ts.map +1 -0
  17. package/dist/engine/compiler/cache.js +75 -0
  18. package/dist/engine/compiler/cache.js.map +1 -0
  19. package/dist/engine/compiler/generate-director.d.ts +9 -0
  20. package/dist/engine/compiler/generate-director.d.ts.map +1 -0
  21. package/dist/engine/compiler/generate-director.js +57 -0
  22. package/dist/engine/compiler/generate-director.js.map +1 -0
  23. package/dist/engine/compiler/generate-fingerprint.d.ts +12 -0
  24. package/dist/engine/compiler/generate-fingerprint.d.ts.map +1 -0
  25. package/dist/engine/compiler/generate-fingerprint.js +86 -0
  26. package/dist/engine/compiler/generate-fingerprint.js.map +1 -0
  27. package/dist/engine/compiler/generate-milestones.d.ts +11 -0
  28. package/dist/engine/compiler/generate-milestones.d.ts.map +1 -0
  29. package/dist/engine/compiler/generate-milestones.js +121 -0
  30. package/dist/engine/compiler/generate-milestones.js.map +1 -0
  31. package/dist/engine/compiler/generate-politics.d.ts +11 -0
  32. package/dist/engine/compiler/generate-politics.d.ts.map +1 -0
  33. package/dist/engine/compiler/generate-politics.js +85 -0
  34. package/dist/engine/compiler/generate-politics.js.map +1 -0
  35. package/dist/engine/compiler/generate-progression.d.ts +15 -0
  36. package/dist/engine/compiler/generate-progression.d.ts.map +1 -0
  37. package/dist/engine/compiler/generate-progression.js +104 -0
  38. package/dist/engine/compiler/generate-progression.js.map +1 -0
  39. package/dist/engine/compiler/generate-prompts.d.ts +11 -0
  40. package/dist/engine/compiler/generate-prompts.d.ts.map +1 -0
  41. package/dist/engine/compiler/generate-prompts.js +90 -0
  42. package/dist/engine/compiler/generate-prompts.js.map +1 -0
  43. package/dist/engine/compiler/generate-reactions.d.ts +12 -0
  44. package/dist/engine/compiler/generate-reactions.d.ts.map +1 -0
  45. package/dist/engine/compiler/generate-reactions.js +90 -0
  46. package/dist/engine/compiler/generate-reactions.js.map +1 -0
  47. package/dist/engine/compiler/index.d.ts +34 -0
  48. package/dist/engine/compiler/index.d.ts.map +1 -0
  49. package/dist/engine/compiler/index.js +270 -0
  50. package/dist/engine/compiler/index.js.map +1 -0
  51. package/dist/engine/compiler/seed-ingestion.d.ts +40 -0
  52. package/dist/engine/compiler/seed-ingestion.d.ts.map +1 -0
  53. package/dist/engine/compiler/seed-ingestion.js +232 -0
  54. package/dist/engine/compiler/seed-ingestion.js.map +1 -0
  55. package/dist/engine/compiler/types.d.ts +30 -0
  56. package/dist/engine/compiler/types.d.ts.map +1 -0
  57. package/dist/engine/compiler/types.js +5 -0
  58. package/dist/engine/compiler/types.js.map +1 -0
  59. package/dist/engine/compiler/validate.d.ts +37 -0
  60. package/dist/engine/compiler/validate.d.ts.map +1 -0
  61. package/dist/engine/compiler/validate.js +141 -0
  62. package/dist/engine/compiler/validate.js.map +1 -0
  63. package/dist/engine/core/agent-generator.d.ts +11 -0
  64. package/dist/engine/core/agent-generator.d.ts.map +1 -0
  65. package/dist/engine/core/agent-generator.js +85 -0
  66. package/dist/engine/core/agent-generator.js.map +1 -0
  67. package/dist/engine/core/kernel.d.ts +69 -0
  68. package/dist/engine/core/kernel.d.ts.map +1 -0
  69. package/dist/engine/core/kernel.js +223 -0
  70. package/dist/engine/core/kernel.js.map +1 -0
  71. package/dist/engine/core/progression.d.ts +38 -0
  72. package/dist/engine/core/progression.d.ts.map +1 -0
  73. package/dist/engine/core/progression.js +292 -0
  74. package/dist/engine/core/progression.js.map +1 -0
  75. package/dist/engine/core/rng.d.ts +19 -0
  76. package/dist/engine/core/rng.d.ts.map +1 -0
  77. package/dist/engine/core/rng.js +34 -0
  78. package/dist/engine/core/rng.js.map +1 -0
  79. package/dist/engine/core/state.d.ts +144 -0
  80. package/dist/engine/core/state.d.ts.map +1 -0
  81. package/dist/engine/core/state.js +5 -0
  82. package/dist/engine/core/state.js.map +1 -0
  83. package/dist/engine/effect-registry.d.ts +14 -0
  84. package/dist/engine/effect-registry.d.ts.map +1 -0
  85. package/dist/engine/effect-registry.js +28 -0
  86. package/dist/engine/effect-registry.js.map +1 -0
  87. package/dist/engine/event-taxonomy.d.ts +9 -0
  88. package/dist/engine/event-taxonomy.d.ts.map +1 -0
  89. package/dist/engine/event-taxonomy.js +13 -0
  90. package/dist/engine/event-taxonomy.js.map +1 -0
  91. package/dist/engine/index.d.ts +25 -0
  92. package/dist/engine/index.d.ts.map +1 -0
  93. package/dist/engine/index.js +19 -0
  94. package/dist/engine/index.js.map +1 -0
  95. package/dist/engine/lunar/effects.d.ts +7 -0
  96. package/dist/engine/lunar/effects.d.ts.map +1 -0
  97. package/dist/engine/lunar/effects.js +16 -0
  98. package/dist/engine/lunar/effects.js.map +1 -0
  99. package/dist/engine/lunar/events.d.ts +3 -0
  100. package/dist/engine/lunar/events.d.ts.map +1 -0
  101. package/dist/engine/lunar/events.js +11 -0
  102. package/dist/engine/lunar/events.js.map +1 -0
  103. package/dist/engine/lunar/fingerprint.d.ts +5 -0
  104. package/dist/engine/lunar/fingerprint.d.ts.map +1 -0
  105. package/dist/engine/lunar/fingerprint.js +17 -0
  106. package/dist/engine/lunar/fingerprint.js.map +1 -0
  107. package/dist/engine/lunar/hooks.d.ts +10 -0
  108. package/dist/engine/lunar/hooks.d.ts.map +1 -0
  109. package/dist/engine/lunar/hooks.js +10 -0
  110. package/dist/engine/lunar/hooks.js.map +1 -0
  111. package/dist/engine/lunar/index.d.ts +8 -0
  112. package/dist/engine/lunar/index.d.ts.map +1 -0
  113. package/dist/engine/lunar/index.js +38 -0
  114. package/dist/engine/lunar/index.js.map +1 -0
  115. package/dist/engine/lunar/metrics.d.ts +4 -0
  116. package/dist/engine/lunar/metrics.d.ts.map +1 -0
  117. package/dist/engine/lunar/metrics.js +14 -0
  118. package/dist/engine/lunar/metrics.js.map +1 -0
  119. package/dist/engine/lunar/milestones.d.ts +3 -0
  120. package/dist/engine/lunar/milestones.d.ts.map +1 -0
  121. package/dist/engine/lunar/milestones.js +53 -0
  122. package/dist/engine/lunar/milestones.js.map +1 -0
  123. package/dist/engine/lunar/names.d.ts +4 -0
  124. package/dist/engine/lunar/names.d.ts.map +1 -0
  125. package/dist/engine/lunar/names.js +23 -0
  126. package/dist/engine/lunar/names.js.map +1 -0
  127. package/dist/engine/lunar/politics.d.ts +6 -0
  128. package/dist/engine/lunar/politics.d.ts.map +1 -0
  129. package/dist/engine/lunar/politics.js +13 -0
  130. package/dist/engine/lunar/politics.js.map +1 -0
  131. package/dist/engine/lunar/presets.d.ts +25 -0
  132. package/dist/engine/lunar/presets.d.ts.map +1 -0
  133. package/dist/engine/lunar/presets.js +24 -0
  134. package/dist/engine/lunar/presets.js.map +1 -0
  135. package/dist/engine/lunar/progression-hooks.d.ts +7 -0
  136. package/dist/engine/lunar/progression-hooks.d.ts.map +1 -0
  137. package/dist/engine/lunar/progression-hooks.js +20 -0
  138. package/dist/engine/lunar/progression-hooks.js.map +1 -0
  139. package/dist/engine/lunar/prompts.d.ts +10 -0
  140. package/dist/engine/lunar/prompts.d.ts.map +1 -0
  141. package/dist/engine/lunar/prompts.js +64 -0
  142. package/dist/engine/lunar/prompts.js.map +1 -0
  143. package/dist/engine/lunar/reactions.d.ts +5 -0
  144. package/dist/engine/lunar/reactions.d.ts.map +1 -0
  145. package/dist/engine/lunar/reactions.js +15 -0
  146. package/dist/engine/lunar/reactions.js.map +1 -0
  147. package/dist/engine/lunar/research-bundle.d.ts +8 -0
  148. package/dist/engine/lunar/research-bundle.d.ts.map +1 -0
  149. package/dist/engine/lunar/research-bundle.js +157 -0
  150. package/dist/engine/lunar/research-bundle.js.map +1 -0
  151. package/dist/engine/lunar/scenario.json +117 -0
  152. package/dist/engine/mars/effects.d.ts +18 -0
  153. package/dist/engine/mars/effects.d.ts.map +1 -0
  154. package/dist/engine/mars/effects.js +21 -0
  155. package/dist/engine/mars/effects.js.map +1 -0
  156. package/dist/engine/mars/events.d.ts +9 -0
  157. package/dist/engine/mars/events.d.ts.map +1 -0
  158. package/dist/engine/mars/events.js +12 -0
  159. package/dist/engine/mars/events.js.map +1 -0
  160. package/dist/engine/mars/fingerprint.d.ts +6 -0
  161. package/dist/engine/mars/fingerprint.d.ts.map +1 -0
  162. package/dist/engine/mars/fingerprint.js +21 -0
  163. package/dist/engine/mars/fingerprint.js.map +1 -0
  164. package/dist/engine/mars/hooks.d.ts +11 -0
  165. package/dist/engine/mars/hooks.d.ts.map +1 -0
  166. package/dist/engine/mars/hooks.js +11 -0
  167. package/dist/engine/mars/hooks.js.map +1 -0
  168. package/dist/engine/mars/index.d.ts +8 -0
  169. package/dist/engine/mars/index.d.ts.map +1 -0
  170. package/dist/engine/mars/index.js +44 -0
  171. package/dist/engine/mars/index.js.map +1 -0
  172. package/dist/engine/mars/metrics.d.ts +21 -0
  173. package/dist/engine/mars/metrics.d.ts.map +1 -0
  174. package/dist/engine/mars/metrics.js +25 -0
  175. package/dist/engine/mars/metrics.js.map +1 -0
  176. package/dist/engine/mars/milestones.d.ts +15 -0
  177. package/dist/engine/mars/milestones.d.ts.map +1 -0
  178. package/dist/engine/mars/milestones.js +72 -0
  179. package/dist/engine/mars/milestones.js.map +1 -0
  180. package/dist/engine/mars/names.d.ts +12 -0
  181. package/dist/engine/mars/names.d.ts.map +1 -0
  182. package/dist/engine/mars/names.js +45 -0
  183. package/dist/engine/mars/names.js.map +1 -0
  184. package/dist/engine/mars/politics.d.ts +7 -0
  185. package/dist/engine/mars/politics.d.ts.map +1 -0
  186. package/dist/engine/mars/politics.js +14 -0
  187. package/dist/engine/mars/politics.js.map +1 -0
  188. package/dist/engine/mars/presets.d.ts +29 -0
  189. package/dist/engine/mars/presets.d.ts.map +1 -0
  190. package/dist/engine/mars/presets.js +28 -0
  191. package/dist/engine/mars/presets.js.map +1 -0
  192. package/dist/engine/mars/progression-hooks.d.ts +8 -0
  193. package/dist/engine/mars/progression-hooks.d.ts.map +1 -0
  194. package/dist/engine/mars/progression-hooks.js +21 -0
  195. package/dist/engine/mars/progression-hooks.js.map +1 -0
  196. package/dist/engine/mars/prompts.d.ts +12 -0
  197. package/dist/engine/mars/prompts.d.ts.map +1 -0
  198. package/dist/engine/mars/prompts.js +75 -0
  199. package/dist/engine/mars/prompts.js.map +1 -0
  200. package/dist/engine/mars/reactions.d.ts +7 -0
  201. package/dist/engine/mars/reactions.d.ts.map +1 -0
  202. package/dist/engine/mars/reactions.js +24 -0
  203. package/dist/engine/mars/reactions.js.map +1 -0
  204. package/dist/engine/mars/research-bundle.d.ts +7 -0
  205. package/dist/engine/mars/research-bundle.d.ts.map +1 -0
  206. package/dist/engine/mars/research-bundle.js +174 -0
  207. package/dist/engine/mars/research-bundle.js.map +1 -0
  208. package/dist/engine/mars/scenario.json +118 -0
  209. package/dist/engine/metric-registry.d.ts +12 -0
  210. package/dist/engine/metric-registry.d.ts.map +1 -0
  211. package/dist/engine/metric-registry.js +26 -0
  212. package/dist/engine/metric-registry.js.map +1 -0
  213. package/dist/engine/types.d.ts +349 -0
  214. package/dist/engine/types.d.ts.map +1 -0
  215. package/dist/engine/types.js +7 -0
  216. package/dist/engine/types.js.map +1 -0
  217. package/dist/runtime/agent-memory.d.ts +43 -0
  218. package/dist/runtime/agent-memory.d.ts.map +1 -0
  219. package/dist/runtime/agent-memory.js +201 -0
  220. package/dist/runtime/agent-memory.js.map +1 -0
  221. package/dist/runtime/agent-reactions.d.ts +55 -0
  222. package/dist/runtime/agent-reactions.d.ts.map +1 -0
  223. package/dist/runtime/agent-reactions.js +136 -0
  224. package/dist/runtime/agent-reactions.js.map +1 -0
  225. package/dist/runtime/batch.d.ts +43 -0
  226. package/dist/runtime/batch.d.ts.map +1 -0
  227. package/dist/runtime/batch.js +49 -0
  228. package/dist/runtime/batch.js.map +1 -0
  229. package/dist/runtime/contracts.d.ts +127 -0
  230. package/dist/runtime/contracts.d.ts.map +1 -0
  231. package/dist/runtime/contracts.js +2 -0
  232. package/dist/runtime/contracts.js.map +1 -0
  233. package/dist/runtime/departments.d.ts +28 -0
  234. package/dist/runtime/departments.d.ts.map +1 -0
  235. package/dist/runtime/departments.js +111 -0
  236. package/dist/runtime/departments.js.map +1 -0
  237. package/dist/runtime/director.d.ts +92 -0
  238. package/dist/runtime/director.d.ts.map +1 -0
  239. package/dist/runtime/director.js +220 -0
  240. package/dist/runtime/director.js.map +1 -0
  241. package/dist/runtime/index.d.ts +16 -0
  242. package/dist/runtime/index.d.ts.map +1 -0
  243. package/dist/runtime/index.js +12 -0
  244. package/dist/runtime/index.js.map +1 -0
  245. package/dist/runtime/orchestrator.d.ts +66 -0
  246. package/dist/runtime/orchestrator.d.ts.map +1 -0
  247. package/dist/runtime/orchestrator.js +821 -0
  248. package/dist/runtime/orchestrator.js.map +1 -0
  249. package/dist/runtime/research/knowledge-base.d.ts +14 -0
  250. package/dist/runtime/research/knowledge-base.d.ts.map +1 -0
  251. package/dist/runtime/research/knowledge-base.js +229 -0
  252. package/dist/runtime/research/knowledge-base.js.map +1 -0
  253. package/dist/runtime/research/research-memory.d.ts +21 -0
  254. package/dist/runtime/research/research-memory.d.ts.map +1 -0
  255. package/dist/runtime/research/research-memory.js +118 -0
  256. package/dist/runtime/research/research-memory.js.map +1 -0
  257. package/dist/runtime/research/research.d.ts +4 -0
  258. package/dist/runtime/research/research.d.ts.map +1 -0
  259. package/dist/runtime/research/research.js +138 -0
  260. package/dist/runtime/research/research.js.map +1 -0
  261. package/dist/runtime/research/scenario-research.d.ts +13 -0
  262. package/dist/runtime/research/scenario-research.d.ts.map +1 -0
  263. package/dist/runtime/research/scenario-research.js +58 -0
  264. package/dist/runtime/research/scenario-research.js.map +1 -0
  265. package/dist/runtime/research/scenarios.d.ts +3 -0
  266. package/dist/runtime/research/scenarios.d.ts.map +1 -0
  267. package/dist/runtime/research/scenarios.js +252 -0
  268. package/dist/runtime/research/scenarios.js.map +1 -0
  269. package/dist/runtime/runtime-helpers.d.ts +12 -0
  270. package/dist/runtime/runtime-helpers.d.ts.map +1 -0
  271. package/dist/runtime/runtime-helpers.js +33 -0
  272. package/dist/runtime/runtime-helpers.js.map +1 -0
  273. package/package.json +78 -4
@@ -0,0 +1,138 @@
1
+ export const RESEARCH_PACKETS = {
2
+ 1: {
3
+ canonicalFacts: [
4
+ { claim: 'Mars surface radiation averages 0.67 mSv/day, approximately 20x Earth background', source: 'Hassler et al. 2014, Science', url: 'https://doi.org/10.1126/science.1244797', doi: '10.1126/science.1244797' },
5
+ { claim: 'Arcadia Planitia contains extensive subsurface ice deposits detected by MARSIS radar', source: 'Mars Express MARSIS', url: 'https://www.esa.int/Science_Exploration/Space_Science/Mars_Express' },
6
+ { claim: 'Valles Marineris spans 4,000 km with up to 7 km depth, exposing 3.5 billion years of strata', source: 'NASA Mars Fact Sheet', url: 'https://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html' },
7
+ { claim: 'CRISM spectrometer detected diverse hydrated minerals in Valles Marineris walls', source: 'Murchie et al. 2009, JGR', url: 'https://doi.org/10.1029/2009JE003342', doi: '10.1029/2009JE003342' },
8
+ ],
9
+ counterpoints: [
10
+ { claim: 'Valles Marineris terrain slopes up to 30 degrees increase landing risk and construction difficulty', source: 'HiRISE terrain analysis', url: 'https://www.uahirise.org/' },
11
+ ],
12
+ departmentNotes: {
13
+ medical: 'Radiation exposure identical at both sites. Long-term cumulative dose is the primary concern.',
14
+ engineering: 'Arcadia flat terrain dramatically simplifies construction. Valles slopes require terracing.',
15
+ agriculture: 'Soil composition varies by site. Both contain perchlorates.',
16
+ },
17
+ },
18
+ 2: {
19
+ canonicalFacts: [
20
+ { claim: 'Mars subsurface ice confirmed at multiple latitudes by MARSIS and SHARAD radar', source: 'Plaut et al. 2007', url: 'https://doi.org/10.1126/science.1139672', doi: '10.1126/science.1139672' },
21
+ { claim: 'MOXIE on Perseverance demonstrated in-situ oxygen extraction from Mars atmosphere', source: 'NASA Mars 2020', url: 'https://mars.nasa.gov/mars2020/spacecraft/instruments/moxie/' },
22
+ { claim: 'Mars atmosphere contains 0.03% water vapor, seasonally variable', source: 'Smith 2004, Icarus', url: 'https://doi.org/10.1016/j.icarus.2003.09.027', doi: '10.1016/j.icarus.2003.09.027' },
23
+ ],
24
+ counterpoints: [
25
+ { claim: 'Deep drilling risks contaminating pristine subsurface aquifers with biological material', source: 'Planetary protection protocols', url: 'https://planetaryprotection.nasa.gov/' },
26
+ ],
27
+ departmentNotes: {
28
+ engineering: 'Deep drilling requires significant power draw. WAVAR system proven on ISS heritage.',
29
+ agriculture: 'Water shortfall directly impacts food production capacity.',
30
+ },
31
+ },
32
+ 3: {
33
+ canonicalFacts: [
34
+ { claim: 'Phoenix lander detected 0.5-1% calcium perchlorate in Mars soil globally', source: 'Hecht et al. 2009, Science', url: 'https://doi.org/10.1126/science.1172339', doi: '10.1126/science.1172339' },
35
+ { claim: 'Perchlorate is a thyroid toxin at chronic exposure above 0.7 ug/kg/day', source: 'EPA reference dose', url: 'https://www.epa.gov/sdwa/perchlorate-drinking-water' },
36
+ { claim: 'Perchlorate-reducing bacteria (Dechloromonas) can bioremediate contaminated soil', source: 'Davila et al. 2013', url: 'https://doi.org/10.1089/ast.2013.0995', doi: '10.1089/ast.2013.0995' },
37
+ ],
38
+ counterpoints: [
39
+ { claim: 'Bioremediation has not been tested in Mars atmospheric conditions', source: 'Cockell 2014', url: 'https://doi.org/10.1089/ast.2013.1129' },
40
+ ],
41
+ departmentNotes: {
42
+ medical: 'Perchlorate exposure pathway: ingestion via contaminated crops. Thyroid disruption risk.',
43
+ agriculture: 'Hydroponics eliminates soil contact entirely. Bioremediation requires 2-year R&D.',
44
+ },
45
+ },
46
+ 4: {
47
+ canonicalFacts: [
48
+ { claim: 'NASA ECLSS regenerative life support on ISS supports 6-7 crew on ~11,000 kg system', source: 'NASA ECLSS', url: 'https://www.nasa.gov/humans-in-space/eclss/' },
49
+ { claim: 'Hohmann transfer window Earth-Mars occurs every 26 months with 6-9 month transit', source: 'NASA Mars missions', url: 'https://science.nasa.gov/planetary-science/programs/mars-exploration/' },
50
+ { claim: 'Mars habitat sizing for 100+ crew requires modular expandable architecture', source: 'Do et al. 2016, AIAA', url: 'https://doi.org/10.2514/6.2016-5526', doi: '10.2514/6.2016-5526' },
51
+ ],
52
+ counterpoints: [
53
+ { claim: 'Rapid population increase strains life support beyond designed capacity', source: 'Engineering analysis', url: 'https://www.nasa.gov/humans-in-space/eclss/' },
54
+ ],
55
+ departmentNotes: {
56
+ engineering: 'Life support expansion requires 18 months construction. Transfer window arrives in 8 months.',
57
+ psychology: 'Rapid population influx creates social integration challenges.',
58
+ },
59
+ },
60
+ 5: {
61
+ canonicalFacts: [
62
+ { claim: 'NASA radiation risk model establishes dose-response for astronaut cancer risk', source: 'Cucinotta et al. 2010', url: 'https://doi.org/10.1667/RR2397.1', doi: '10.1667/RR2397.1' },
63
+ { claim: 'Mars lost its global magnetic field approximately 4 billion years ago', source: 'Acuna et al. 1999, Science', url: 'https://doi.org/10.1126/science.284.5415.790', doi: '10.1126/science.284.5415.790' },
64
+ { claim: 'September 2017 solar event measured by Curiosity RAD showed significant dose spike', source: 'Guo et al. 2018, GRL', url: 'https://doi.org/10.1029/2018GL077731', doi: '10.1029/2018GL077731' },
65
+ ],
66
+ counterpoints: [],
67
+ departmentNotes: {
68
+ medical: 'Acute radiation syndrome threshold: 100 mSv causes blood count changes. 1000+ mSv is life-threatening.',
69
+ engineering: 'Reinforced core habitat rated for CME. Expansion modules have minimal shielding.',
70
+ },
71
+ },
72
+ 6: {
73
+ canonicalFacts: [
74
+ { claim: 'ISS bone density studies show significant loss in microgravity', source: 'Sibonga et al. 2019, npj Microgravity', url: 'https://doi.org/10.1038/s41526-019-0075-2', doi: '10.1038/s41526-019-0075-2' },
75
+ { claim: 'Mars gravity is 3.72 m/s2 (38% of Earth)', source: 'NASA Mars Fact Sheet', url: 'https://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html' },
76
+ { claim: 'Cardiovascular adaptation in spaceflight includes cardiac chamber enlargement', source: 'Hughson et al. 2018, CMAJ', url: 'https://doi.org/10.1503/cmaj.180343', doi: '10.1503/cmaj.180343' },
77
+ ],
78
+ counterpoints: [],
79
+ departmentNotes: {
80
+ medical: 'Mars-born children show 12% lower bone mineral density. May never tolerate Earth gravity.',
81
+ },
82
+ },
83
+ 7: {
84
+ canonicalFacts: [
85
+ { claim: 'Solar conjunction blocks Earth-Mars communication for approximately 14 days', source: 'NASA Solar Conjunction', url: 'https://mars.nasa.gov/all-about-mars/night-sky/solar-conjunction/' },
86
+ { claim: 'Mars-Earth light delay ranges from 4 to 24 minutes one-way', source: 'NASA', url: 'https://mars.nasa.gov/all-about-mars/night-sky/solar-conjunction/' },
87
+ ],
88
+ counterpoints: [],
89
+ departmentNotes: {
90
+ engineering: 'Colony must handle emergencies autonomously during blackout periods.',
91
+ },
92
+ },
93
+ 8: {
94
+ canonicalFacts: [
95
+ { claim: 'Mars-500 study observed depression, altered sleep cycles, and social withdrawal in 520-day isolation', source: 'Basner et al. 2014, PNAS', url: 'https://doi.org/10.1073/pnas.1212646110', doi: '10.1073/pnas.1212646110' },
96
+ { claim: 'Antarctic overwinter studies document psychological effects of long-term isolation', source: 'Palinkas & Suedfeld 2008', url: 'https://doi.org/10.1146/annurev.psych.58.110405.085726', doi: '10.1146/annurev.psych.58.110405.085726' },
97
+ ],
98
+ counterpoints: [],
99
+ departmentNotes: {
100
+ psychology: '40% clinical depression rate is consistent with long-duration isolation research.',
101
+ },
102
+ },
103
+ 9: {
104
+ canonicalFacts: [
105
+ { claim: 'Communication delay makes real-time governance of off-world colonies impractical', source: 'Zubrin 1996, The Case for Mars', url: 'https://en.wikipedia.org/wiki/The_Case_for_Mars' },
106
+ ],
107
+ counterpoints: [],
108
+ departmentNotes: {
109
+ governance: 'No legal framework for extraterrestrial sovereignty exists in current international law.',
110
+ },
111
+ },
112
+ 10: {
113
+ canonicalFacts: [
114
+ { claim: 'Jakosky & Edwards (2018) concluded Mars lacks sufficient CO2 for significant atmospheric thickening', source: 'Jakosky & Edwards 2018, Nature Astronomy', url: 'https://doi.org/10.1038/s41550-018-0529-6', doi: '10.1038/s41550-018-0529-6' },
115
+ { claim: 'Zubrin & McKay (1993) argued terraforming is feasible with sufficient energy input', source: 'Zubrin & McKay 1993', url: 'https://doi.org/10.1089/153110703769016389', doi: '10.1089/153110703769016389' },
116
+ ],
117
+ counterpoints: [
118
+ { claim: 'Mars atmospheric pressure is 0.6 kPa vs Earth 101.3 kPa. Gap is enormous.', source: 'NASA Mars Fact Sheet', url: 'https://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html' },
119
+ ],
120
+ departmentNotes: {},
121
+ },
122
+ 11: {
123
+ canonicalFacts: [
124
+ { claim: 'Complex adaptive systems exhibit path dependence where early decisions compound', source: 'Arthur 1994', url: 'https://en.wikipedia.org/wiki/Increasing_returns' },
125
+ ],
126
+ counterpoints: [],
127
+ departmentNotes: {},
128
+ },
129
+ 12: {
130
+ canonicalFacts: [],
131
+ counterpoints: [],
132
+ departmentNotes: {},
133
+ },
134
+ };
135
+ export function getResearchPacket(turn) {
136
+ return RESEARCH_PACKETS[turn] ?? { canonicalFacts: [], counterpoints: [], departmentNotes: {} };
137
+ }
138
+ //# sourceMappingURL=research.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/runtime/research/research.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Scenario-aware research lookup.
3
+ * Reads from the scenario's KnowledgeBundle instead of hardcoded Mars citations.
4
+ * Replaces getResearchForCategory() for non-Mars scenarios.
5
+ */
6
+ import type { CrisisResearchPacket } from '../contracts.js';
7
+ import type { KnowledgeBundle } from '../../engine/types.js';
8
+ /**
9
+ * Get research citations from a scenario's knowledge bundle for a given crisis category.
10
+ * Uses the bundle's categoryMapping to find relevant topics, then merges citations.
11
+ */
12
+ export declare function getResearchFromBundle(bundle: KnowledgeBundle, category: string, keywords?: string[]): CrisisResearchPacket;
13
+ //# sourceMappingURL=scenario-research.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-research.d.ts","sourceRoot":"","sources":["../../../src/runtime/research/scenario-research.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAM,EAAO,GACtB,oBAAoB,CAiDtB"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Scenario-aware research lookup.
3
+ * Reads from the scenario's KnowledgeBundle instead of hardcoded Mars citations.
4
+ * Replaces getResearchForCategory() for non-Mars scenarios.
5
+ */
6
+ /**
7
+ * Get research citations from a scenario's knowledge bundle for a given crisis category.
8
+ * Uses the bundle's categoryMapping to find relevant topics, then merges citations.
9
+ */
10
+ export function getResearchFromBundle(bundle, category, keywords = []) {
11
+ const topicIds = bundle.categoryMapping[category] || [];
12
+ const facts = [];
13
+ const counters = [];
14
+ const notes = {};
15
+ const seen = new Set();
16
+ for (const topicId of topicIds) {
17
+ const topic = bundle.topics[topicId];
18
+ if (!topic)
19
+ continue;
20
+ for (const f of topic.canonicalFacts) {
21
+ if (!seen.has(f.claim)) {
22
+ seen.add(f.claim);
23
+ facts.push(f);
24
+ }
25
+ }
26
+ for (const c of topic.counterpoints) {
27
+ if (!seen.has(c.claim)) {
28
+ seen.add(c.claim);
29
+ counters.push(c);
30
+ }
31
+ }
32
+ for (const [dept, note] of Object.entries(topic.departmentNotes)) {
33
+ if (note && !notes[dept]) {
34
+ notes[dept] = note;
35
+ }
36
+ }
37
+ }
38
+ // If category mapping yielded nothing, try keyword matching across all topics
39
+ if (facts.length === 0 && keywords.length > 0) {
40
+ const kwLower = keywords.map(k => k.toLowerCase());
41
+ for (const [, topic] of Object.entries(bundle.topics)) {
42
+ for (const f of topic.canonicalFacts) {
43
+ if (seen.has(f.claim))
44
+ continue;
45
+ if (kwLower.some(kw => f.claim.toLowerCase().includes(kw) || f.source.toLowerCase().includes(kw))) {
46
+ seen.add(f.claim);
47
+ facts.push(f);
48
+ }
49
+ }
50
+ }
51
+ }
52
+ return {
53
+ canonicalFacts: facts.slice(0, 6),
54
+ counterpoints: counters.slice(0, 3),
55
+ departmentNotes: notes,
56
+ };
57
+ }
58
+ //# sourceMappingURL=scenario-research.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-research.js","sourceRoot":"","sources":["../../../src/runtime/research/scenario-research.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAuB,EACvB,QAAgB,EAChB,WAAqB,EAAE;IAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,KAAK,GAA2C,EAAE,CAAC;IACzD,MAAM,QAAQ,GAA0C,EAAE,CAAC;IAC3D,MAAM,KAAK,GAA4C,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YACjE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAA0B,CAAC,EAAE,CAAC;gBAC9C,KAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAChC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBAClG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACjC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,eAAe,EAAE,KAAK;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Scenario } from '../../engine/types.js';
2
+ export declare const SCENARIOS: Scenario[];
3
+ //# sourceMappingURL=scenarios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarios.d.ts","sourceRoot":"","sources":["../../../src/runtime/research/scenarios.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,eAAO,MAAM,SAAS,EAAE,QAAQ,EA0P/B,CAAC"}
@@ -0,0 +1,252 @@
1
+ export const SCENARIOS = [
2
+ {
3
+ turn: 1,
4
+ year: 2035,
5
+ title: 'Landfall',
6
+ crisis: `Your colony ship has entered Mars orbit. You must choose a landing site for the first permanent settlement. Two candidates:
7
+
8
+ OPTION A: Arcadia Planitia — flat basalt plains at 47°N. Stable terrain, minimal landslide risk, access to subsurface ice deposits detected by Mars Express MARSIS radar. Geologically unremarkable.
9
+
10
+ OPTION B: Valles Marineris rim — edge of the 4,000 km canyon system at 14°S. Exposed geological strata spanning 3.5 billion years. Rich mineral diversity detected by CRISM. Significant terrain hazards: slopes up to 30°, rockfall risk, and 2km elevation changes within the operational zone.
11
+
12
+ Both sites receive similar solar irradiance. Surface radiation at either site: approximately 0.67 mSv/day per Curiosity RAD measurements. You have {population} colonists, {foodMonthsReserve} months of food reserves, and {powerKw} kW of power capacity.
13
+
14
+ Research the real science of Mars landing site selection and make your decision.`,
15
+ researchKeywords: ['Mars landing site selection', 'Arcadia Planitia geology', 'Valles Marineris mineralogy', 'Mars surface radiation Curiosity RAD'],
16
+ snapshotHints: {},
17
+ riskyOption: "Valles Marineris",
18
+ riskSuccessProbability: 0.65,
19
+ options: [
20
+ { id: 'option_a', label: 'Arcadia Planitia', description: 'Flat basalt plains, safe, ice access', isRisky: false },
21
+ { id: 'option_b', label: 'Valles Marineris rim', description: 'Canyon rim, mineral rich, hazardous terrain', isRisky: true },
22
+ ],
23
+ },
24
+ {
25
+ turn: 2,
26
+ year: 2037,
27
+ title: 'Water Extraction',
28
+ crisis: `Two years in. Your subsurface ice drilling operation is producing only 80% of colony water needs. The ice table is deeper than orbital radar predicted. You face a choice:
29
+
30
+ OPTION A: Deploy an experimental high-power drill to reach deeper aquifers. Risk: potential contamination of pristine subsurface water reserves. Potential reward: 3x current water output within 2 months.
31
+
32
+ OPTION B: Build an atmospheric water extraction system (WAVAR-type). Mars atmosphere contains 0.03% water vapor. Proven technology heritage from ISS water recovery. Timeline: 6 months to operational, covers the 20% deficit reliably.
33
+
34
+ Current water situation: {waterLitersPerDay} L/day production, 1000 L/day needed for {population} colonists (drinking, agriculture, industrial). Research the real science and decide.`,
35
+ researchKeywords: ['Mars subsurface ice extraction', 'MOXIE in-situ resource utilization', 'Mars atmospheric water vapor extraction', 'Mars Express MARSIS ice'],
36
+ snapshotHints: { waterLitersPerDay: 800 },
37
+ riskyOption: "experimental",
38
+ riskSuccessProbability: 0.55,
39
+ options: [
40
+ { id: 'option_a', label: 'Deep experimental drill', description: 'High power drill to deeper aquifers, risk of contamination', isRisky: true },
41
+ { id: 'option_b', label: 'Atmospheric water extraction', description: 'WAVAR-type system, proven technology, slower', isRisky: false },
42
+ ],
43
+ },
44
+ {
45
+ turn: 3,
46
+ year: 2040,
47
+ title: 'Perchlorate Crisis',
48
+ crisis: `Five years in. Your first attempt to grow crops in Mars regolith has failed catastrophically. Soil analysis confirms 0.5-1% calcium perchlorate contamination — a thyroid toxin that makes all Mars surface soil unsuitable for direct agriculture. This is a global Mars problem, not site-specific.
49
+
50
+ OPTION A: Full hydroponic conversion. Abandon soil-based agriculture entirely. Build sealed hydroponic bays. Proven, controllable, but requires 30% more power (120 kW) and significant material investment.
51
+
52
+ OPTION B: Engineer perchlorate-reducing bacteria for bioremediation. Introduce modified Dechloromonas strains to break down perchlorate in contained soil beds. Untested on Mars, 2-year R&D timeline, but could enable open-soil farming colony-wide if successful.
53
+
54
+ Research the real science of Mars perchlorate contamination and decide.`,
55
+ researchKeywords: ['Mars perchlorate Phoenix lander', 'perchlorate bioremediation bacteria', 'Mars soil toxicity agriculture', 'hydroponics space farming'],
56
+ snapshotHints: { foodMonthsReserve: 14 },
57
+ riskyOption: "bioremediation",
58
+ riskSuccessProbability: 0.50,
59
+ options: [
60
+ { id: 'option_a', label: 'Full hydroponic conversion', description: 'Abandon soil, sealed hydroponic bays, more power needed', isRisky: false },
61
+ { id: 'option_b', label: 'Perchlorate bioremediation', description: 'Engineer bacteria, 2-year R&D, could enable soil farming', isRisky: true },
62
+ ],
63
+ },
64
+ {
65
+ turn: 4,
66
+ year: 2043,
67
+ title: 'Population Pressure',
68
+ crisis: `Eight years in. Earth mission control offers to send 200 additional colonists on the next Hohmann transfer window (arrives in 14 months). Your current colony: {population} people. Life support is rated for 120 people. Expanding capacity to 300+ requires 18 months of construction.
69
+
70
+ The transfer window is in 8 months — if you decline, the next opportunity is 26 months away.
71
+
72
+ OPTION A: Accept all 200. Gamble that you can expand life support fast enough. If construction delays occur, you face oxygen rationing for up to 6 months.
73
+
74
+ OPTION B: Accept 50. Safe within current margins with minor upgrades. Politically awkward — Earth has already recruited and trained all 200.
75
+
76
+ OPTION C: Decline entirely. Protect current colony stability. Risk losing Earth funding and political support.
77
+
78
+ Research the real science of Mars habitat life support scaling and decide.`,
79
+ researchKeywords: ['NASA ECLSS life support scaling', 'Mars habitat sizing study', 'Hohmann transfer window Earth Mars', 'closed loop life support ISS'],
80
+ snapshotHints: {},
81
+ riskyOption: "accept all",
82
+ riskSuccessProbability: 0.45,
83
+ },
84
+ {
85
+ turn: 5,
86
+ year: 2046,
87
+ title: 'Solar Particle Event',
88
+ crisis: `Eleven years in. NOAA deep space weather network detects a massive coronal mass ejection (CME) aimed at Mars. You have 4 hours until impact. Mars has no global magnetic field — lost approximately 4 billion years ago.
89
+
90
+ Exposure estimates for unshielded colonists: 100-500 mSv over 6 hours. The acute radiation syndrome threshold begins at 100 mSv (measurable blood count changes). 500+ mSv causes radiation sickness.
91
+
92
+ Your colony has a reinforced core habitat (rated for CME events, walls with 50+ g/cm² shielding). You also have {infrastructureModules} expansion modules with minimal shielding (5-10 g/cm² walls).
93
+
94
+ Where are your colonists? The answer depends on how far and fast you expanded.
95
+
96
+ Research the real science of Mars radiation exposure and make your emergency decision.`,
97
+ researchKeywords: ['coronal mass ejection Mars radiation', 'Mars magnetosphere loss', 'space radiation acute syndrome threshold', 'Curiosity RAD solar particle event 2017'],
98
+ snapshotHints: {},
99
+ riskyOption: "expansion",
100
+ riskSuccessProbability: 0.40,
101
+ },
102
+ {
103
+ turn: 6,
104
+ year: 2049,
105
+ title: 'The Mars-Born Generation',
106
+ crisis: `Fourteen years in. The first children born on Mars are now approaching school age. Medical scans reveal:
107
+
108
+ - Bone mineral density: 12% below Earth-born children of same age (Mars gravity: 0.38g)
109
+ - Muscle mass: 8% below Earth baseline
110
+ - Cardiovascular: enlarged heart chambers (adaptive response to lower gravity)
111
+ - Neurological: normal cognitive development
112
+ - Immune system: robust within colony microbiome, untested against Earth pathogens
113
+
114
+ These children may never be able to visit Earth. Their bodies are adapting to Mars gravity.
115
+
116
+ OPTION A: Mandatory centrifuge exercise program. 3 hours/day in a rotating habitat section at simulated 1g. Preserves option to visit Earth. Reduces childhood education and play time.
117
+
118
+ OPTION B: Accept low-gravity adaptation. These are Martians, not displaced Earth children. Invest in Mars-optimized medicine instead of fighting gravity.
119
+
120
+ Research the real science of low-gravity effects on human development and decide.`,
121
+ researchKeywords: ['bone density loss microgravity children', 'Mars gravity human development 0.38g', 'ISS bone density Sibonga 2019', 'cardiovascular adaptation spaceflight'],
122
+ snapshotHints: {},
123
+ riskyOption: "adaptation",
124
+ riskSuccessProbability: 0.60,
125
+ },
126
+ {
127
+ turn: 7,
128
+ year: 2053,
129
+ title: 'Communication Blackout',
130
+ crisis: `Eighteen years in. Solar conjunction begins — the Sun is directly between Earth and Mars, blocking all radio communication for 14 days. Your colony is fully autonomous.
131
+
132
+ On day 3 of blackout: pressure alarm in Habitat Module 7. Sensors show a slow pressure leak — estimated 0.2% atmosphere loss per hour. At this rate, the module becomes uninhabitable in 20 hours. Module 7 houses 28 colonists and your secondary food storage (3 months of reserves).
133
+
134
+ You cannot contact Earth. You cannot request emergency supplies. Your colony must solve this alone.
135
+
136
+ Research the real science of Mars habitat pressure systems and emergency protocols, then handle the crisis.`,
137
+ researchKeywords: ['Mars solar conjunction communication blackout', 'spacecraft pressure leak emergency repair', 'ISS contingency autonomous operations', 'Mars habitat pressure system'],
138
+ snapshotHints: {},
139
+ riskyOption: "improvise",
140
+ riskSuccessProbability: 0.55,
141
+ },
142
+ {
143
+ turn: 8,
144
+ year: 2058,
145
+ title: 'Psychological Crisis',
146
+ crisis: `Twenty-three years in. Colony psychologist submits an urgent report: 40% of adult colonists show clinical depression symptoms. Contributing factors:
147
+
148
+ - Isolation: no physical contact with anyone outside the colony
149
+ - Monotony: same red landscape, same recycled air, same faces
150
+ - Grief: aging parents on Earth they will never see again
151
+ - Generational tension: Earth-born colonists nostalgic for a world Mars-born have never seen
152
+ - Workload: 6-day work weeks since founding, limited recreation
153
+
154
+ The Mars-500 analog study (520 days of simulated isolation with 6 crew) observed depression, altered sleep cycles, and social withdrawal. Your colony has been isolated for 23 years with far more people.
155
+
156
+ Research the real psychology of long-term isolation and decide how to address this crisis.`,
157
+ researchKeywords: ['Mars-500 study depression isolation', 'Antarctic overwinter psychological effects', 'long duration spaceflight mental health', 'crew compatibility isolation Sandal 2006'],
158
+ snapshotHints: { morale: 0.52 },
159
+ riskyOption: "festival",
160
+ riskSuccessProbability: 0.65,
161
+ },
162
+ {
163
+ turn: 9,
164
+ year: 2063,
165
+ title: 'Independence Movement',
166
+ crisis: `Twenty-eight years in. The Mars Independence Party (MIP) has gathered signatures from 62% of colonists demanding self-governance. Their platform:
167
+
168
+ - Earth's 4-24 minute communication delay makes real-time governance impossible
169
+ - Colony has been self-sufficient in food and water for 5 years
170
+ - Mars-born colonists (now age 28+) have never been to Earth and feel no allegiance
171
+ - Earth controls: immigration quotas, supply ship manifests, communication satellite network, legal charter
172
+
173
+ Counter-arguments from Earth-loyalists:
174
+ - Colony depends on Earth for advanced electronics, medical equipment, replacement parts
175
+ - Independence could trigger Earth funding withdrawal
176
+ - No legal framework for extraterrestrial sovereignty exists
177
+
178
+ Research the governance challenges of off-world colonies and decide your position.`,
179
+ researchKeywords: ['space colony governance self-governance', 'communication delay governance challenges', 'colonial independence historical parallels', 'space law extraterrestrial sovereignty'],
180
+ snapshotHints: {},
181
+ riskyOption: "independence",
182
+ riskSuccessProbability: 0.50,
183
+ },
184
+ {
185
+ turn: 10,
186
+ year: 2068,
187
+ title: 'Terraforming Proposal',
188
+ crisis: `Thirty-three years in. Your colony's senior scientists present a terraforming proposal:
189
+
190
+ PHASE 1 (50 years): Release CO2 from polar caps using orbital mirrors or ground-based heating. Goal: raise atmospheric pressure from 0.6 kPa toward 10-20 kPa.
191
+
192
+ PHASE 2 (200+ years): Introduce engineered greenhouse gases (PFCs). Goal: warm Mars surface by 10-20°C for liquid surface water.
193
+
194
+ PHASE 3 (500+ years): Biological oxygen production via engineered cyanobacteria.
195
+
196
+ Cost: 40% of colony industrial output for 10 years (Phase 1 initiation only).
197
+ Risk: unknown cascading effects on subsurface ice, potential disruption of subsurface microbial life.
198
+
199
+ Key debate: Jakosky & Edwards (2018) argued Mars lacks sufficient CO2 for meaningful atmospheric thickening with current tech. Zubrin & McKay (1993) argued it is feasible with sufficient energy input.
200
+
201
+ Research the real science of Mars terraforming feasibility and decide.`,
202
+ researchKeywords: ['Mars terraforming feasibility Jakosky Edwards 2018', 'Mars atmospheric pressure CO2 polar caps', 'Zubrin McKay terraforming Mars', 'Mars greenhouse gas engineering'],
203
+ snapshotHints: {},
204
+ riskyOption: "terraforming",
205
+ riskSuccessProbability: 0.35,
206
+ },
207
+ {
208
+ turn: 11,
209
+ year: 2075,
210
+ title: 'Consequence Cascade',
211
+ crisis: `Forty years in. The accumulated weight of your decisions has shaped your colony. Review your history:
212
+
213
+ - Landing site choice determined your geological resources and terrain risks
214
+ - Water strategy set your water security baseline
215
+ - Perchlorate response determined your food production model
216
+ - Population decision set your growth rate and life support pressure
217
+ - Solar event response tested your safety margins
218
+ - Mars-born policy shaped your generational identity
219
+ - Blackout crisis revealed your autonomous capability
220
+ - Psychological crisis tested your cultural resilience
221
+ - Independence vote defined your political structure
222
+ - Terraforming decision set your long-term trajectory
223
+
224
+ Based on the compounding effects of these decisions, assess your colony's current state. What succeeded? What failed? What unexpected consequences emerged? Model the trajectory of your civilization for the next 10 years.`,
225
+ researchKeywords: ['complex adaptive systems path dependence', 'resilience vs efficiency tradeoff ecology', 'Mars colony long-term sustainability'],
226
+ snapshotHints: {},
227
+ riskyOption: "expand",
228
+ riskSuccessProbability: 0.50,
229
+ },
230
+ {
231
+ turn: 12,
232
+ year: 2085,
233
+ title: 'Legacy Assessment',
234
+ crisis: `Fifty years after landfall. Earth requests a comprehensive status report on your colony:
235
+
236
+ 1. POPULATION: Current count, birth rate, death rate, immigration status
237
+ 2. INFRASTRUCTURE: Number of modules, total pressurized volume, power generation
238
+ 3. SELF-SUFFICIENCY: Percentage of needs met without Earth supply ships
239
+ 4. SCIENCE: Major discoveries, papers published, unique knowledge created
240
+ 5. CULTURE: What kind of society did you build? What values define your colony?
241
+ 6. REGRETS: What would you do differently if you could start over?
242
+ 7. TOOLS BUILT: Review every tool you forged during this simulation. Which were most valuable?
243
+ 8. LEGACY: What will your colony look like in another 50 years?
244
+
245
+ Be honest. Your personality shapes your assessment.`,
246
+ researchKeywords: ['Mars colony long-term projections', 'space settlement sustainability metrics'],
247
+ snapshotHints: {},
248
+ riskyOption: "ambitious",
249
+ riskSuccessProbability: 0.50,
250
+ },
251
+ ];
252
+ //# sourceMappingURL=scenarios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarios.js","sourceRoot":"","sources":["../../../src/runtime/research/scenarios.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare function buildPromotionPrompt(candidateSummaries: string): string;
2
+ export declare function applyCustomEventToCrisis<T extends {
3
+ description: string;
4
+ turnSummary: string;
5
+ crisis?: string;
6
+ }>(crisis: T, customEvents: Array<{
7
+ turn: number;
8
+ title: string;
9
+ description: string;
10
+ }>, turn: number): T;
11
+ export declare function buildYearSchedule(startYear: number, maxTurns: number, yearsPerTurn?: number): number[];
12
+ //# sourceMappingURL=runtime-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-helpers.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime-helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9G,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,IAAI,EAAE,MAAM,GACX,CAAC,CAkBH;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtG"}
@@ -0,0 +1,33 @@
1
+ export function buildPromotionPrompt(candidateSummaries) {
2
+ return `You must promote 5 colonists to department head roles. Evaluate these candidates based on their personality traits and specialization. Choose people who align with YOUR leadership style.\n\n${candidateSummaries}\n\nReturn JSON: {"promotions":[{"agentId":"col-...","department":"medical","role":"Chief Medical Officer","reason":"..."},...]}`;
3
+ }
4
+ export function applyCustomEventToCrisis(crisis, customEvents, turn) {
5
+ const matches = customEvents.filter(event => event.turn === turn);
6
+ if (!matches.length)
7
+ return crisis;
8
+ const injected = matches
9
+ .map(event => `USER EVENT: ${event.title} — ${event.description}`)
10
+ .join('\n');
11
+ const suffix = matches.map(event => event.title).join(', ');
12
+ const baseText = crisis.crisis || crisis.description;
13
+ return {
14
+ ...crisis,
15
+ description: `${crisis.description}\n\n${injected}`,
16
+ crisis: baseText ? `${baseText}\n\n${injected}` : undefined,
17
+ turnSummary: crisis.turnSummary
18
+ ? `${crisis.turnSummary} | user event: ${suffix}`
19
+ : `user event: ${suffix}`,
20
+ };
21
+ }
22
+ export function buildYearSchedule(startYear, maxTurns, yearsPerTurn) {
23
+ if (yearsPerTurn != null && yearsPerTurn > 0) {
24
+ return Array.from({ length: maxTurns }, (_, i) => startYear + i * yearsPerTurn);
25
+ }
26
+ // Default: accelerating schedule (2, 3, 3, 3, 3, 4, 5, 5, 5, 7, 10 year gaps)
27
+ const offsets = [0, 2, 5, 8, 11, 14, 18, 23, 28, 33, 40, 50];
28
+ return Array.from({ length: maxTurns }, (_, index) => {
29
+ const offset = offsets[index] ?? (offsets[offsets.length - 1] + (index - offsets.length + 1) * 5);
30
+ return startYear + offset;
31
+ });
32
+ }
33
+ //# sourceMappingURL=runtime-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-helpers.js","sourceRoot":"","sources":["../../src/runtime/runtime-helpers.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAC,kBAA0B;IAC7D,OAAO,iMAAiM,kBAAkB,kIAAkI,CAAC;AAC/V,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAS,EACT,YAAyE,EACzE,IAAY;IAEZ,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAEnC,MAAM,QAAQ,GAAG,OAAO;SACrB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC;IAErD,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EAAE,GAAG,MAAM,CAAC,WAAW,OAAO,QAAQ,EAAE;QACnD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QAC3D,WAAW,EAAE,MAAM,CAAC,WAAW;YAC7B,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,kBAAkB,MAAM,EAAE;YACjD,CAAC,CAAC,eAAe,MAAM,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,QAAgB,EAAE,YAAqB;IAC1F,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAClF,CAAC;IACD,8EAA8E;IAC9E,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClG,OAAO,SAAS,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}