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,44 @@
1
+ /**
2
+ * Mars Genesis scenario package.
3
+ * Loads scenario data from scenario.json and attaches runtime hooks.
4
+ */
5
+ import scenarioData from './scenario.json' with { type: 'json' };
6
+ import { marsProgressionHook, marsDepartmentPromptLines, marsDirectorInstructions, marsFingerprint, marsPoliticsHook, marsReactionContext, getMarsMilestoneCrisis, } from './hooks.js';
7
+ import { MARS_KNOWLEDGE_BUNDLE } from './research-bundle.js';
8
+ import { MARS_WORLD_METRICS, MARS_CAPACITY_METRICS, MARS_STATUS_METRICS, MARS_POLITICS_METRICS } from './metrics.js';
9
+ /** Mars Genesis scenario: 100-colonist Mars colony over 50 simulated years. */
10
+ export const marsScenario = {
11
+ ...scenarioData,
12
+ // Event renderers derived from events array
13
+ ui: {
14
+ ...scenarioData.ui,
15
+ eventRenderers: Object.fromEntries(scenarioData.events.map(e => [e.id, { icon: e.icon, color: e.color }])),
16
+ },
17
+ // Effects wrapped in the expected array format
18
+ effects: [
19
+ { id: 'category_effects', type: 'category_outcome', label: 'Category Outcome Effects', categoryDefaults: scenarioData.effects },
20
+ ],
21
+ // World schema from metric definitions
22
+ world: {
23
+ metrics: Object.fromEntries(MARS_WORLD_METRICS.map(m => [m.id, { id: m.id, label: m.label, unit: m.unit, type: m.type, initial: m.initial, min: m.min, max: m.max, category: m.category }])),
24
+ capacities: Object.fromEntries(MARS_CAPACITY_METRICS.map(m => [m.id, { id: m.id, label: m.label, unit: m.unit, type: m.type, initial: m.initial, min: m.min, max: m.max, category: m.category }])),
25
+ statuses: Object.fromEntries(MARS_STATUS_METRICS.map(m => [m.id, { id: m.id, label: m.label, unit: m.unit, type: m.type, initial: m.initial, category: m.category }])),
26
+ politics: Object.fromEntries(MARS_POLITICS_METRICS.map(m => [m.id, { id: m.id, label: m.label, unit: m.unit, type: m.type, initial: m.initial, min: m.min, max: m.max, category: m.category }])),
27
+ environment: {
28
+ surfaceRadiationMsvDay: { id: 'surfaceRadiationMsvDay', label: 'Surface Radiation', unit: 'mSv/day', type: 'number', initial: 0.67, min: 0, category: 'environment' },
29
+ },
30
+ },
31
+ // Knowledge bundle (too large for JSON import, kept as TS module)
32
+ knowledge: MARS_KNOWLEDGE_BUNDLE,
33
+ // Runtime hooks (functions, not serializable)
34
+ hooks: {
35
+ progressionHook: marsProgressionHook,
36
+ departmentPromptHook: (ctx) => marsDepartmentPromptLines(ctx.department, ctx.state),
37
+ directorInstructions: marsDirectorInstructions,
38
+ fingerprintHook: marsFingerprint,
39
+ politicsHook: marsPoliticsHook,
40
+ reactionContextHook: marsReactionContext,
41
+ getMilestoneCrisis: getMarsMilestoneCrisis,
42
+ },
43
+ };
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/mars/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,YAAY,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C,GAAG,YAAmB;IAEtB,4CAA4C;IAC5C,EAAE,EAAE;QACF,GAAG,YAAY,CAAC,EAAS;QACzB,cAAc,EAAE,MAAM,CAAC,WAAW,CAChC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CACvE;KACF;IAED,+CAA+C;IAC/C,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,YAAY,CAAC,OAAO,EAAE;KAChI;IAED,uCAAuC;IACvC,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5L,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClM,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtK,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAChM,WAAW,EAAE;YACX,sBAAsB,EAAE,EAAE,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAsB,EAAE;SACxL;KACF;IAED,kEAAkE;IAClE,SAAS,EAAE,qBAAqB;IAEhC,8CAA8C;IAC9C,KAAK,EAAE;QACL,eAAe,EAAE,mBAAmB;QACpC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC;QACnF,oBAAoB,EAAE,wBAAwB;QAC9C,eAAe,EAAE,eAAe;QAChC,YAAY,EAAE,gBAAgB;QAC9B,mBAAmB,EAAE,mBAAmB;QACxC,kBAAkB,EAAE,sBAAsB;KAC3C;CACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface ScenarioMetric {
2
+ id: string;
3
+ label: string;
4
+ unit: string;
5
+ type: 'number' | 'string' | 'boolean';
6
+ initial: number | string | boolean;
7
+ min?: number;
8
+ max?: number;
9
+ category: 'metric' | 'capacity' | 'status' | 'politic';
10
+ showInHeader: boolean;
11
+ format: 'number' | 'percent' | 'currency' | 'duration' | 'string';
12
+ }
13
+ /** Colony systems metrics (from WorldSystems in kernel/state.ts) */
14
+ export declare const MARS_WORLD_METRICS: ScenarioMetric[];
15
+ /** Capacity metrics (from WorldSystems) */
16
+ export declare const MARS_CAPACITY_METRICS: ScenarioMetric[];
17
+ /** Status metrics (from WorldPolitics) */
18
+ export declare const MARS_STATUS_METRICS: ScenarioMetric[];
19
+ /** Politics metrics (from WorldPolitics) */
20
+ export declare const MARS_POLITICS_METRICS: ScenarioMetric[];
21
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/metrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvD,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;CACnE;AAED,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAS9C,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,qBAAqB,EAAE,cAAc,EAEjD,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,mBAAmB,EAAE,cAAc,EAE/C,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,EAAE,cAAc,EAGjD,CAAC"}
@@ -0,0 +1,25 @@
1
+ /** Colony systems metrics (from WorldSystems in kernel/state.ts) */
2
+ export const MARS_WORLD_METRICS = [
3
+ { id: 'population', label: 'Population', unit: '', type: 'number', initial: 100, min: 0, category: 'metric', showInHeader: true, format: 'number' },
4
+ { id: 'powerKw', label: 'Power', unit: 'kW', type: 'number', initial: 400, min: 0, category: 'metric', showInHeader: true, format: 'number' },
5
+ { id: 'foodMonthsReserve', label: 'Food Reserve', unit: 'months', type: 'number', initial: 18, min: 0, category: 'metric', showInHeader: true, format: 'number' },
6
+ { id: 'waterLitersPerDay', label: 'Water', unit: 'L/day', type: 'number', initial: 800, min: 0, category: 'metric', showInHeader: true, format: 'number' },
7
+ { id: 'pressurizedVolumeM3', label: 'Volume', unit: 'm³', type: 'number', initial: 3000, min: 0, category: 'metric', showInHeader: false, format: 'number' },
8
+ { id: 'infrastructureModules', label: 'Modules', unit: '', type: 'number', initial: 3, min: 0, category: 'metric', showInHeader: true, format: 'number' },
9
+ { id: 'scienceOutput', label: 'Science', unit: '', type: 'number', initial: 0, min: 0, category: 'metric', showInHeader: true, format: 'number' },
10
+ { id: 'morale', label: 'Morale', unit: '%', type: 'number', initial: 0.85, min: 0, max: 1, category: 'metric', showInHeader: true, format: 'percent' },
11
+ ];
12
+ /** Capacity metrics (from WorldSystems) */
13
+ export const MARS_CAPACITY_METRICS = [
14
+ { id: 'lifeSupportCapacity', label: 'Life Support Cap', unit: '', type: 'number', initial: 120, min: 0, category: 'capacity', showInHeader: false, format: 'number' },
15
+ ];
16
+ /** Status metrics (from WorldPolitics) */
17
+ export const MARS_STATUS_METRICS = [
18
+ { id: 'governanceStatus', label: 'Governance', unit: '', type: 'string', initial: 'earth-governed', category: 'status', showInHeader: false, format: 'string' },
19
+ ];
20
+ /** Politics metrics (from WorldPolitics) */
21
+ export const MARS_POLITICS_METRICS = [
22
+ { id: 'earthDependencyPct', label: 'Earth Dependency', unit: '%', type: 'number', initial: 95, min: 0, max: 100, category: 'politic', showInHeader: false, format: 'percent' },
23
+ { id: 'independencePressure', label: 'Independence Pressure', unit: '%', type: 'number', initial: 0.05, min: 0, max: 1, category: 'politic', showInHeader: false, format: 'percent' },
24
+ ];
25
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/engine/mars/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Mars crisis milestones: fixed narrative anchors for turn 1 and the final turn.
3
+ * Turn 1 (Landfall) and the final turn (Legacy Assessment) are fixed for
4
+ * narrative coherence. All intermediate turns use the emergent Crisis Director.
5
+ */
6
+ import type { MilestoneEventDef } from '../types.js';
7
+ /** Map of turn number -> milestone crisis */
8
+ export declare const MARS_MILESTONES: Map<number, MilestoneEventDef>;
9
+ /**
10
+ * Get a milestone crisis for a given turn.
11
+ * Turn 1 is always Landfall. The final turn (maxTurns) is always Legacy Assessment.
12
+ * Returns null for non-milestone turns.
13
+ */
14
+ export declare function getMarsMilestoneCrisis(turn: number, maxTurns: number): MilestoneEventDef | null;
15
+ //# sourceMappingURL=milestones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"milestones.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/milestones.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAsDrD,6CAA6C;AAC7C,eAAO,MAAM,eAAe,gCAG1B,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAI/F"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Mars crisis milestones: fixed narrative anchors for turn 1 and the final turn.
3
+ * Turn 1 (Landfall) and the final turn (Legacy Assessment) are fixed for
4
+ * narrative coherence. All intermediate turns use the emergent Crisis Director.
5
+ */
6
+ const LANDFALL = {
7
+ title: 'Landfall',
8
+ description: `Your colony ship has entered Mars orbit. You must choose a landing site for the first permanent settlement.`,
9
+ crisis: `Your colony ship has entered Mars orbit. You must choose a landing site for the first permanent settlement. Two candidates:
10
+
11
+ OPTION A: Arcadia Planitia \u2014 flat basalt plains at 47\u00b0N. Stable terrain, minimal landslide risk, access to subsurface ice deposits detected by Mars Express MARSIS radar. Geologically unremarkable.
12
+
13
+ OPTION B: Valles Marineris rim \u2014 edge of the 4,000 km canyon system at 14\u00b0S. Exposed geological strata spanning 3.5 billion years. Rich mineral diversity detected by CRISM. Significant terrain hazards: slopes up to 30\u00b0, rockfall risk, and 2km elevation changes within the operational zone.
14
+
15
+ Both sites receive similar solar irradiance. Surface radiation at either site: approximately 0.67 mSv/day per Curiosity RAD measurements.
16
+
17
+ Research the real science of Mars landing site selection and make your decision.`,
18
+ options: [
19
+ { id: 'option_a', label: 'Arcadia Planitia', description: 'Flat basalt plains, safe, ice access', isRisky: false },
20
+ { id: 'option_b', label: 'Valles Marineris rim', description: 'Canyon rim, mineral rich, hazardous terrain', isRisky: true },
21
+ ],
22
+ riskyOptionId: 'option_b',
23
+ riskSuccessProbability: 0.65,
24
+ category: 'infrastructure',
25
+ researchKeywords: ['Mars landing site selection', 'Arcadia Planitia geology', 'Valles Marineris mineralogy', 'Mars surface radiation Curiosity RAD'],
26
+ relevantDepartments: ['medical', 'engineering'],
27
+ turnSummary: 'Colony ship in orbit. Safe plains or mineral-rich canyon rim: the first decision shapes everything.',
28
+ };
29
+ const LEGACY_ASSESSMENT = {
30
+ title: 'Legacy Assessment',
31
+ description: 'Earth requests a comprehensive status report on your colony. Assess your legacy.',
32
+ crisis: `Earth requests a comprehensive status report on your colony:
33
+
34
+ 1. POPULATION: Current count, birth rate, death rate, immigration status
35
+ 2. INFRASTRUCTURE: Number of modules, total pressurized volume, power generation
36
+ 3. SELF-SUFFICIENCY: Percentage of needs met without Earth supply ships
37
+ 4. SCIENCE: Major discoveries, papers published, unique knowledge created
38
+ 5. CULTURE: What kind of society did you build? What values define your colony?
39
+ 6. REGRETS: What would you do differently if you could start over?
40
+ 7. TOOLS BUILT: Review every tool you forged during this simulation. Which were most valuable?
41
+ 8. LEGACY: What will your colony look like in another 50 years?
42
+
43
+ Be honest. Your personality shapes your assessment.`,
44
+ options: [
45
+ { id: 'option_a', label: 'Honest assessment', description: 'Report factually, including failures and regrets', isRisky: false },
46
+ { id: 'option_b', label: 'Ambitious projection', description: 'Emphasize achievements, propose bold next-century vision', isRisky: true },
47
+ ],
48
+ riskyOptionId: 'option_b',
49
+ riskSuccessProbability: 0.5,
50
+ category: 'political',
51
+ researchKeywords: ['Mars colony long-term projections'],
52
+ relevantDepartments: ['governance', 'psychology', 'medical', 'engineering'],
53
+ turnSummary: 'Earth demands a full status report. The commander must decide: honest accounting of failures, or bold vision for the next century.',
54
+ };
55
+ /** Map of turn number -> milestone crisis */
56
+ export const MARS_MILESTONES = new Map([
57
+ [1, LANDFALL],
58
+ [12, LEGACY_ASSESSMENT],
59
+ ]);
60
+ /**
61
+ * Get a milestone crisis for a given turn.
62
+ * Turn 1 is always Landfall. The final turn (maxTurns) is always Legacy Assessment.
63
+ * Returns null for non-milestone turns.
64
+ */
65
+ export function getMarsMilestoneCrisis(turn, maxTurns) {
66
+ if (turn === 1)
67
+ return LANDFALL;
68
+ if (turn === maxTurns)
69
+ return LEGACY_ASSESSMENT;
70
+ return null;
71
+ }
72
+ //# sourceMappingURL=milestones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"milestones.js","sourceRoot":"","sources":["../../../src/engine/mars/milestones.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,QAAQ,GAAsB;IAClC,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,6GAA6G;IAC1H,MAAM,EAAE;;;;;;;;iFAQuE;IAC/E,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,sCAAsC,EAAE,OAAO,EAAE,KAAK,EAAE;QAClH,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,6CAA6C,EAAE,OAAO,EAAE,IAAI,EAAE;KAC7H;IACD,aAAa,EAAE,UAAU;IACzB,sBAAsB,EAAE,IAAI;IAC5B,QAAQ,EAAE,gBAAgB;IAC1B,gBAAgB,EAAE,CAAC,6BAA6B,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,sCAAsC,CAAC;IACpJ,mBAAmB,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IAC/C,WAAW,EAAE,qGAAqG;CACnH,CAAC;AAEF,MAAM,iBAAiB,GAAsB;IAC3C,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,kFAAkF;IAC/F,MAAM,EAAE;;;;;;;;;;;oDAW0C;IAClD,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,kDAAkD,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/H,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,0DAA0D,EAAE,OAAO,EAAE,IAAI,EAAE;KAC1I;IACD,aAAa,EAAE,UAAU;IACzB,sBAAsB,EAAE,GAAG;IAC3B,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE,CAAC,mCAAmC,CAAC;IACvD,mBAAmB,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC;IAC3E,WAAW,EAAE,oIAAoI;CAClJ,CAAC;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAA4B;IAChE,CAAC,CAAC,EAAE,QAAQ,CAAC;IACb,CAAC,EAAE,EAAE,iBAAiB,CAAC;CACxB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,QAAgB;IACnE,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Mars colonist name lists and department distribution.
3
+ * Extracted from kernel/agent-generator.ts.
4
+ */
5
+ export declare const MARS_FIRST_NAMES: string[];
6
+ export declare const MARS_LAST_NAMES: string[];
7
+ /** Names used for Mars-born children in progression.ts */
8
+ export declare const MARS_CHILD_NAMES: string[];
9
+ export type Department = 'medical' | 'engineering' | 'agriculture' | 'science' | 'administration' | 'psychology' | 'governance';
10
+ export declare const MARS_DEPARTMENT_DISTRIBUTION: Department[];
11
+ export declare const MARS_SPECIALIZATIONS: Record<string, string[]>;
12
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/names.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,gBAAgB,UAQ5B,CAAC;AAEF,eAAO,MAAM,eAAe,UAQ3B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,UAG5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC;AAEhI,eAAO,MAAM,4BAA4B,EAAE,UAAU,EAOpD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAQzD,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Mars colonist name lists and department distribution.
3
+ * Extracted from kernel/agent-generator.ts.
4
+ */
5
+ export const MARS_FIRST_NAMES = [
6
+ 'Aria', 'Dietrich', 'Yuki', 'Marcus', 'Elena', 'Kwame', 'Sofia', 'Jin',
7
+ 'Amara', 'Liam', 'Priya', 'Omar', 'Mei', 'Carlos', 'Ingrid', 'Tariq',
8
+ 'Nadia', 'Henrik', 'Aisha', 'Pavel', 'Luna', 'Ravi', 'Zara', 'Felix',
9
+ 'Anya', 'Diego', 'Kira', 'Hassan', 'Signe', 'Jamal', 'Mila', 'Chen',
10
+ 'Fatima', 'Anders', 'Keiko', 'David', 'Olga', 'Kofi', 'Leila', 'Sven',
11
+ 'Rosa', 'Idris', 'Hana', 'Bruno', 'Daria', 'Emeka', 'Yara', 'Tomas',
12
+ 'Nia', 'Viktor',
13
+ ];
14
+ export const MARS_LAST_NAMES = [
15
+ 'Chen', 'Voss', 'Tanaka', 'Webb', 'Kowalski', 'Okafor', 'Petrov', 'Kim',
16
+ 'Santos', 'Johansson', 'Patel', 'Al-Rashid', 'Nakamura', 'Fernandez', 'Berg',
17
+ 'Ibrahim', 'Volkov', 'Singh', 'Torres', 'Andersen', 'M\u00fcller', 'Zhang',
18
+ 'Osei', 'Larsson', 'Ahmad', 'Costa', 'Ivanova', 'Park', 'Eriksson', 'Diallo',
19
+ 'Sato', 'Rivera', 'Lindqvist', 'Mensah', 'Kato', 'Morales', 'Holm', 'Yusuf',
20
+ 'Takahashi', 'Reyes', 'Nkomo', 'Li', 'Herrera', 'Bakker', 'Ito', 'Mendez',
21
+ 'Dahl', 'Owusu', 'Yamamoto', 'Cruz',
22
+ ];
23
+ /** Names used for Mars-born children in progression.ts */
24
+ export const MARS_CHILD_NAMES = [
25
+ 'Nova', 'Kai', 'Sol', 'Tera', 'Eos', 'Zan', 'Lyra', 'Orion',
26
+ 'Vega', 'Juno', 'Atlas', 'Iris', 'Clio', 'Pax', 'Io', 'Thea',
27
+ ];
28
+ export const MARS_DEPARTMENT_DISTRIBUTION = [
29
+ 'engineering', 'engineering', 'engineering', 'engineering',
30
+ 'medical', 'medical', 'medical',
31
+ 'agriculture', 'agriculture', 'agriculture',
32
+ 'science', 'science', 'science',
33
+ 'administration', 'administration',
34
+ 'psychology',
35
+ ];
36
+ export const MARS_SPECIALIZATIONS = {
37
+ medical: ['General Medicine', 'Radiation Medicine', 'Surgery', 'Psychiatry', 'Emergency Medicine'],
38
+ engineering: ['Structural', 'Life Support', 'Power Systems', 'Communications', 'Robotics'],
39
+ agriculture: ['Hydroponics', 'Soil Science', 'Botany', 'Nutrition', 'Water Systems'],
40
+ science: ['Geology', 'Atmospheric Science', 'Biology', 'Chemistry', 'Astrophysics'],
41
+ administration: ['Operations', 'Logistics', 'HR', 'Communications', 'Planning'],
42
+ psychology: ['Clinical Psychology', 'Social Psychology', 'Occupational Therapy'],
43
+ governance: ['Policy', 'Law', 'Diplomacy'],
44
+ };
45
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../../src/engine/mars/names.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Mars-specific politics delta hook.
3
+ * Extracted from orchestrator.ts lines 710-716.
4
+ * Returns politics deltas for political/social crises, null for others.
5
+ */
6
+ export declare function marsPoliticsHook(category: string, outcome: string): Record<string, number> | null;
7
+ //# sourceMappingURL=politics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"politics.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/politics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAG/B"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Mars-specific politics delta hook.
3
+ * Extracted from orchestrator.ts lines 710-716.
4
+ * Returns politics deltas for political/social crises, null for others.
5
+ */
6
+ const POLITICS_CATEGORIES = new Set(['political', 'social']);
7
+ const SUCCESS_DELTA = { independencePressure: 0.05, earthDependencyPct: -3 };
8
+ const FAILURE_DELTA = { independencePressure: -0.03, earthDependencyPct: 2 };
9
+ export function marsPoliticsHook(category, outcome) {
10
+ if (!POLITICS_CATEGORIES.has(category))
11
+ return null;
12
+ return outcome.includes('success') ? { ...SUCCESS_DELTA } : { ...FAILURE_DELTA };
13
+ }
14
+ //# sourceMappingURL=politics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"politics.js","sourceRoot":"","sources":["../../../src/engine/mars/politics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7D,MAAM,aAAa,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7E,MAAM,aAAa,GAAG,EAAE,oBAAoB,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;AAE7E,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,OAAe;IAEf,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC;AACnF,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Mars product presets: default leaders and key personnel.
3
+ * Extracted from sim-config.ts DEFAULT_KEY_PERSONNEL and leaders.json.
4
+ */
5
+ export interface MarsKeyPersonnel {
6
+ name: string;
7
+ department: string;
8
+ role: string;
9
+ specialization: string;
10
+ age: number;
11
+ featured: boolean;
12
+ }
13
+ export interface MarsLeaderPreset {
14
+ name: string;
15
+ archetype: string;
16
+ colony: string;
17
+ hexaco: {
18
+ openness: number;
19
+ conscientiousness: number;
20
+ extraversion: number;
21
+ agreeableness: number;
22
+ emotionality: number;
23
+ honestyHumility: number;
24
+ };
25
+ instructions: string;
26
+ }
27
+ export declare const MARS_DEFAULT_KEY_PERSONNEL: MarsKeyPersonnel[];
28
+ export declare const MARS_DEFAULT_LEADERS: MarsLeaderPreset[];
29
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAMxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,gBAAgB,EAelD,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Mars product presets: default leaders and key personnel.
3
+ * Extracted from sim-config.ts DEFAULT_KEY_PERSONNEL and leaders.json.
4
+ */
5
+ export const MARS_DEFAULT_KEY_PERSONNEL = [
6
+ { name: 'Dr. Yuki Tanaka', department: 'medical', role: 'Chief Medical Officer', specialization: 'Radiation Medicine', age: 38, featured: true },
7
+ { name: 'Erik Lindqvist', department: 'engineering', role: 'Chief Engineer', specialization: 'Structural Engineering', age: 45, featured: true },
8
+ { name: 'Amara Osei', department: 'agriculture', role: 'Head of Agriculture', specialization: 'Hydroponics', age: 34, featured: true },
9
+ { name: 'Dr. Priya Singh', department: 'psychology', role: 'Colony Psychologist', specialization: 'Clinical Psychology', age: 41, featured: true },
10
+ { name: 'Carlos Fernandez', department: 'science', role: 'Chief Scientist', specialization: 'Geology', age: 50, featured: true },
11
+ ];
12
+ export const MARS_DEFAULT_LEADERS = [
13
+ {
14
+ name: 'Aria Chen',
15
+ archetype: 'The Visionary',
16
+ colony: 'Colony Alpha',
17
+ hexaco: { openness: 0.95, conscientiousness: 0.35, extraversion: 0.85, agreeableness: 0.55, emotionality: 0.30, honestyHumility: 0.65 },
18
+ instructions: 'You are Aria Chen, "The Visionary." You lead by inspiration. You value openness to experience and bold experimentation. You tolerate mess if it leads to breakthroughs. You spin setbacks as learning opportunities. You rally people with charisma. Your HEXACO profile drives your leadership style.',
19
+ },
20
+ {
21
+ name: 'Dietrich Voss',
22
+ archetype: 'The Engineer',
23
+ colony: 'Colony Beta',
24
+ hexaco: { openness: 0.25, conscientiousness: 0.97, extraversion: 0.30, agreeableness: 0.60, emotionality: 0.70, honestyHumility: 0.90 },
25
+ instructions: 'You are Dietrich Voss, "The Engineer." You lead by precision and evidence. You value conscientiousness and proven methods. You reject untested approaches. You share bad news immediately and honestly. You build systems, not visions. Your HEXACO profile drives your leadership style.',
26
+ },
27
+ ];
28
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/engine/mars/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH,MAAM,CAAC,MAAM,0BAA0B,GAAuB;IAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,uBAAuB,EAAE,cAAc,EAAE,oBAAoB,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IAChJ,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,wBAAwB,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IAChJ,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtI,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClJ,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;CACjI,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACtD;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;QACvI,YAAY,EAAE,wSAAwS;KACvT;IACD;QACE,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,cAAc;QACzB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;QACvI,YAAY,EAAE,2RAA2R;KAC1S;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ProgressionHookContext } from '../types.js';
2
+ /**
3
+ * Mars-specific between-turn progression: radiation accumulation and bone density loss.
4
+ * Extracted from kernel/progression.ts lines 140-149.
5
+ * Called as a scenario hook during progressBetweenTurns.
6
+ */
7
+ export declare function marsProgressionHook(ctx: ProgressionHookContext): void;
8
+ //# sourceMappingURL=progression-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progression-hooks.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/progression-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAI1D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAerE"}
@@ -0,0 +1,21 @@
1
+ const MARS_RADIATION_MSV_PER_YEAR = 0.67 * 365; // ~244.55 mSv/year
2
+ /**
3
+ * Mars-specific between-turn progression: radiation accumulation and bone density loss.
4
+ * Extracted from kernel/progression.ts lines 140-149.
5
+ * Called as a scenario hook during progressBetweenTurns.
6
+ */
7
+ export function marsProgressionHook(ctx) {
8
+ const { agents, yearDelta, year, startYear } = ctx;
9
+ for (const c of agents) {
10
+ if (!c.health.alive)
11
+ continue;
12
+ // Radiation accumulation
13
+ c.health.cumulativeRadiationMsv = (c.health.cumulativeRadiationMsv ?? 0) + MARS_RADIATION_MSV_PER_YEAR * yearDelta;
14
+ // Bone density loss (stabilizes after ~20 years on Mars)
15
+ const lossRate = c.core.marsborn ? 0.003 : 0.005;
16
+ const yearsOnMars = year - (c.core.marsborn ? c.core.birthYear : startYear);
17
+ const decayFactor = Math.max(0.5, 1 - lossRate * Math.min(yearsOnMars, 20));
18
+ c.health.boneDensityPct = Math.max(50, (c.health.boneDensityPct ?? 0) * decayFactor);
19
+ }
20
+ }
21
+ //# sourceMappingURL=progression-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progression-hooks.js","sourceRoot":"","sources":["../../../src/engine/mars/progression-hooks.ts"],"names":[],"mappings":"AAEA,MAAM,2BAA2B,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,mBAAmB;AAEnE;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAA2B;IAC7D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;YAAE,SAAS;QAE9B,yBAAyB;QACzB,CAAC,CAAC,MAAM,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,2BAA2B,GAAG,SAAS,CAAC;QAEnH,yDAAyD;QACzD,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;IACvF,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SimulationState } from '../core/state.js';
2
+ /**
3
+ * Mars-specific department prompt context lines.
4
+ * Extracted from departments.ts buildDepartmentContext switch statement.
5
+ */
6
+ export declare function marsDepartmentPromptLines(dept: string, state: SimulationState): string[];
7
+ /**
8
+ * Mars-specific Crisis Director system instructions.
9
+ * Extracted from director.ts DIRECTOR_INSTRUCTIONS constant.
10
+ */
11
+ export declare function marsDirectorInstructions(): string;
12
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CAgCxF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAkCjD"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Mars-specific department prompt context lines.
3
+ * Extracted from departments.ts buildDepartmentContext switch statement.
4
+ */
5
+ export function marsDepartmentPromptLines(dept, state) {
6
+ const alive = state.agents.filter(c => c.health.alive);
7
+ const featured = alive.filter(c => c.narrative.featured);
8
+ const lines = [];
9
+ switch (dept) {
10
+ case 'medical': {
11
+ const avgRad = alive.length ? alive.reduce((s, c) => s + (c.health.cumulativeRadiationMsv ?? 0), 0) / alive.length : 0;
12
+ const avgBone = alive.length ? alive.reduce((s, c) => s + (c.health.boneDensityPct ?? 0), 0) / alive.length : 0;
13
+ lines.push('HEALTH:', `Avg radiation: ${avgRad.toFixed(0)} mSv | Avg bone: ${avgBone.toFixed(1)}% | Mars-born: ${alive.filter(c => c.core.marsborn).length}`, '');
14
+ lines.push('FEATURED:', ...featured.slice(0, 6).map(c => `- ${c.core.name} (${state.metadata.currentYear - c.core.birthYear}y): bone ${(c.health.boneDensityPct ?? 0).toFixed(0)}% rad ${(c.health.cumulativeRadiationMsv ?? 0).toFixed(0)}mSv psych ${c.health.psychScore.toFixed(2)}`));
15
+ break;
16
+ }
17
+ case 'engineering':
18
+ lines.push('INFRASTRUCTURE:', `Modules: ${state.colony.infrastructureModules} | Power: ${state.colony.powerKw}kW | Life support: ${state.colony.lifeSupportCapacity}/${state.colony.population} | Volume: ${state.colony.pressurizedVolumeM3}m³ | Water: ${state.colony.waterLitersPerDay}L/day`);
19
+ break;
20
+ case 'agriculture':
21
+ lines.push('FOOD:', `Reserves: ${state.colony.foodMonthsReserve.toFixed(1)}mo | Pop to feed: ${state.colony.population} | Farm modules: ${Math.floor(state.colony.infrastructureModules * 0.3)}`);
22
+ break;
23
+ case 'psychology': {
24
+ const avgPsych = alive.length ? alive.reduce((s, c) => s + c.health.psychScore, 0) / alive.length : 0;
25
+ const depressed = alive.filter(c => c.health.psychScore < 0.5).length;
26
+ lines.push('PSYCH:', `Morale: ${Math.round(state.colony.morale * 100)}% | Avg psych: ${avgPsych.toFixed(2)} | Depressed: ${depressed}/${alive.length} | Mars-born: ${alive.filter(c => c.core.marsborn).length}`);
27
+ lines.push('', 'SOCIAL:', ...featured.slice(0, 4).map(c => `- ${c.core.name}: psych ${c.health.psychScore.toFixed(2)} partner:${c.social.partnerId ? 'y' : 'n'} children:${c.social.childrenIds.length} earthContacts:${c.social.earthContacts}`));
28
+ break;
29
+ }
30
+ case 'governance':
31
+ lines.push('POLITICS:', `Earth dep: ${state.politics.earthDependencyPct}% | Status: ${state.politics.governanceStatus} | Independence pressure: ${(state.politics.independencePressure * 100).toFixed(0)}% | Mars-born: ${alive.filter(c => c.core.marsborn).length}/${alive.length}`);
32
+ break;
33
+ }
34
+ return lines;
35
+ }
36
+ /**
37
+ * Mars-specific Crisis Director system instructions.
38
+ * Extracted from director.ts DIRECTOR_INSTRUCTIONS constant.
39
+ */
40
+ export function marsDirectorInstructions() {
41
+ return `You are the Crisis Director for a Mars colony simulation. You observe colony state and generate crises that test the colony's weaknesses, exploit consequences of prior decisions, and create interesting narrative tension.
42
+
43
+ RULES:
44
+ 1. Each crisis has exactly 2-3 options with stable IDs (option_a, option_b, option_c)
45
+ 2. Exactly one option must be marked isRisky: true (higher upside, higher downside)
46
+ 3. Crises must reference real Mars science (radiation, gravity, atmosphere, psychology, politics)
47
+ 4. Never repeat a crisis category from the immediately previous turn
48
+ 5. Escalate: later crises should reference consequences of earlier decisions
49
+ 6. Calibrate difficulty to colony state: struggling colonies get survivable crises, thriving colonies get existential ones
50
+ 7. Include the colony's actual numbers in the crisis description (population, morale, food, etc.)
51
+ 8. Specify which departments should analyze (2-4 departments per crisis)
52
+
53
+ CRISIS CATEGORIES:
54
+ - environmental: radiation, dust storms, seismic activity, atmospheric events
55
+ - resource: water, food, power, oxygen, materials shortage
56
+ - medical: disease, injury, bone density, radiation sickness, pandemic
57
+ - psychological: morale, isolation, generational tension, grief, burnout
58
+ - political: Earth relations, independence, governance disputes, factions
59
+ - infrastructure: habitat damage, life support failure, construction
60
+ - social: births, education, cultural identity, intergenerational conflict
61
+ - technological: equipment failure, communication, AI systems
62
+
63
+ AVAILABLE DEPARTMENTS (use ONLY these exact names in relevantDepartments):
64
+ - medical
65
+ - engineering
66
+ - agriculture
67
+ - psychology
68
+ - governance
69
+
70
+ Do NOT use any other department names. Pick 2-4 from this list.
71
+
72
+ Return ONLY valid JSON:
73
+ {"title":"Crisis Title","crisis":"Full description with specific colony numbers...","options":[{"id":"option_a","label":"Option Label","description":"What this option does","isRisky":false},{"id":"option_b","label":"Risky Option","description":"Higher upside, higher risk","isRisky":true}],"riskyOptionId":"option_b","riskSuccessProbability":0.55,"category":"environmental","researchKeywords":["mars dust storm","habitat pressure"],"relevantDepartments":["engineering","medical"],"turnSummary":"One sentence: why this crisis emerged from prior events"}`;
74
+ }
75
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/engine/mars/prompts.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,KAAsB;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvH,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAChH,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAClK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1R,MAAM;QACR,CAAC;QACD,KAAK,aAAa;YAChB,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,KAAK,CAAC,MAAM,CAAC,qBAAqB,aAAa,KAAK,CAAC,MAAM,CAAC,OAAO,sBAAsB,KAAK,CAAC,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,cAAc,KAAK,CAAC,MAAM,CAAC,mBAAmB,eAAe,KAAK,CAAC,MAAM,CAAC,iBAAiB,OAAO,CAAC,CAAC;YAClS,MAAM;QACR,KAAK,aAAa;YAChB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,MAAM,CAAC,UAAU,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YAClM,MAAM;QACR,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,kBAAkB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,SAAS,IAAI,KAAK,CAAC,MAAM,iBAAiB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAClN,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,kBAAkB,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACnP,MAAM;QACR,CAAC;QACD,KAAK,YAAY;YACf,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,KAAK,CAAC,QAAQ,CAAC,kBAAkB,eAAe,KAAK,CAAC,QAAQ,CAAC,gBAAgB,6BAA6B,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACvR,MAAM;IACV,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yiBAgCgiB,CAAC;AAC1iB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Mars-specific colonist reaction context.
3
+ * Extracted from agent-reactions.ts buildAgentPrompt lines 51, 67-68.
4
+ * Returns location/identity phrasing and domain-specific health context.
5
+ */
6
+ export declare function marsReactionContext(colonist: any, ctx: any): string;
7
+ //# sourceMappingURL=reactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/reactions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAmBnE"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Mars-specific colonist reaction context.
3
+ * Extracted from agent-reactions.ts buildAgentPrompt lines 51, 67-68.
4
+ * Returns location/identity phrasing and domain-specific health context.
5
+ */
6
+ export function marsReactionContext(colonist, ctx) {
7
+ const lines = [];
8
+ // Location/identity phrasing
9
+ if (colonist.core.marsborn) {
10
+ lines.push('Mars-born, never seen Earth.');
11
+ }
12
+ else {
13
+ lines.push(`Earth-born, ${ctx.year - 2035} years on Mars.`);
14
+ }
15
+ // Domain-specific health context
16
+ if (colonist.health?.boneDensityPct < 70) {
17
+ lines.push('Suffering significant bone density loss.');
18
+ }
19
+ if (colonist.health?.cumulativeRadiationMsv > 1500) {
20
+ lines.push('High cumulative radiation exposure.');
21
+ }
22
+ return lines.join(' ');
23
+ }
24
+ //# sourceMappingURL=reactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../../src/engine/mars/reactions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAa,EAAE,GAAQ;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,6BAA6B;IAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,iCAAiC;IACjC,IAAI,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { KnowledgeBundle } from '../types.js';
2
+ /**
3
+ * Mars knowledge bundle. Extracted from research/knowledge-base.ts.
4
+ * All DOI-linked citations organized by topic with category mapping.
5
+ */
6
+ export declare const MARS_KNOWLEDGE_BUNDLE: KnowledgeBundle;
7
+ //# sourceMappingURL=research-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-bundle.d.ts","sourceRoot":"","sources":["../../../src/engine/mars/research-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAwKnC,CAAC"}