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 @@
1
+ {"version":3,"file":"generate-milestones.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-milestones.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generate a politics hook from scenario JSON via LLM.
3
+ * The politics hook returns delta values for political/social crisis outcomes.
4
+ */
5
+ import type { GenerateTextFn } from './types.js';
6
+ export declare function parseResponse(text: string): ((category: string, outcome: string) => Record<string, number> | null) | null;
7
+ export declare function generatePoliticsHook(scenarioJson: Record<string, any>, generateText: GenerateTextFn, maxRetries?: number): Promise<{
8
+ hook: (category: string, outcome: string) => Record<string, number> | null;
9
+ source: string;
10
+ }>;
11
+ //# sourceMappingURL=generate-politics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-politics.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAsCjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAYzH;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,UAAU,SAAI,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiCzG"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Generate a politics hook from scenario JSON via LLM.
3
+ * The politics hook returns delta values for political/social crisis outcomes.
4
+ */
5
+ function buildPrompt(scenarioJson) {
6
+ const labels = scenarioJson.labels ?? {};
7
+ const effects = scenarioJson.effects ?? {};
8
+ const categories = typeof effects === 'object' && !Array.isArray(effects)
9
+ ? Object.keys(effects)
10
+ : [];
11
+ return `You are generating a politics hook for a simulation engine.
12
+
13
+ SCENARIO: ${labels.name ?? 'Unknown'} — ${labels.settlementNoun ?? 'settlement'} simulation
14
+ CRISIS CATEGORIES: ${categories.join(', ')}
15
+
16
+ Generate a TypeScript arrow function that returns politics deltas for political/social crisis outcomes.
17
+
18
+ The function receives:
19
+ - category: string (one of the crisis categories above)
20
+ - outcome: string (contains "success" or "failure")
21
+
22
+ Return:
23
+ - null if the category is not political/social in nature
24
+ - A Record<string, number> of politics field deltas for political/social categories
25
+
26
+ For success outcomes, the deltas should push toward independence/autonomy.
27
+ For failure outcomes, the deltas should push toward dependency/instability.
28
+
29
+ Pick 1-3 politics field names appropriate to this scenario's domain.
30
+
31
+ Rules:
32
+ 1. Return null for non-political categories
33
+ 2. Return a plain object with numeric deltas for political categories
34
+ 3. Do NOT use external imports
35
+ 4. Keep delta values small (e.g., 0.01-0.10 for percentages, 1-5 for integers)
36
+
37
+ Return ONLY the arrow function, no markdown fences, no explanation.`;
38
+ }
39
+ export function parseResponse(text) {
40
+ let cleaned = text.trim();
41
+ cleaned = cleaned.replace(/^```(?:typescript|ts)?\n?/i, '').replace(/\n?```$/i, '').trim();
42
+ if (cleaned.endsWith(';'))
43
+ cleaned = cleaned.slice(0, -1).trim();
44
+ try {
45
+ const fn = new Function('return ' + cleaned)();
46
+ if (typeof fn === 'function')
47
+ return fn;
48
+ return null;
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ export async function generatePoliticsHook(scenarioJson, generateText, maxRetries = 3) {
55
+ let lastError = '';
56
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
57
+ const retryHint = attempt > 0 ? `\n\nPrevious attempt failed: ${lastError}. Fix the issue.` : '';
58
+ const text = await generateText(buildPrompt(scenarioJson) + retryHint);
59
+ const fn = parseResponse(text);
60
+ if (!fn) {
61
+ lastError = 'Could not parse response into a function';
62
+ continue;
63
+ }
64
+ // Smoke test
65
+ try {
66
+ const nonPolitical = fn('environmental', 'risky_success');
67
+ const political = fn('political', 'risky_success');
68
+ if (political !== null && typeof political !== 'object') {
69
+ lastError = 'Political result must be null or object';
70
+ continue;
71
+ }
72
+ return { hook: fn, source: text.trim() };
73
+ }
74
+ catch (err) {
75
+ lastError = String(err);
76
+ }
77
+ }
78
+ // Fallback: no-op
79
+ console.warn('[compiler] Politics hook generation failed. Using no-op.');
80
+ return {
81
+ hook: () => null,
82
+ source: '// No-op: generation failed',
83
+ };
84
+ }
85
+ //# sourceMappingURL=generate-politics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-politics.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Generate a progression hook from scenario JSON via LLM.
3
+ * The progression hook applies between-turn health/status changes
4
+ * based on the scenario's environment and domain.
5
+ */
6
+ import type { ProgressionHookContext } from '../types.js';
7
+ import type { GenerateTextFn } from './types.js';
8
+ /** Parse the LLM response into an executable function. */
9
+ export declare function parseResponse(text: string): ((ctx: ProgressionHookContext) => void) | null;
10
+ /** Generate a progression hook via LLM, with retries on validation failure. */
11
+ export declare function generateProgressionHook(scenarioJson: Record<string, any>, generateText: GenerateTextFn, maxRetries?: number): Promise<{
12
+ hook: (ctx: ProgressionHookContext) => void;
13
+ source: string;
14
+ }>;
15
+ //# sourceMappingURL=generate-progression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-progression.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-progression.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAqCjD,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC,GAAG,IAAI,CAqB1F;AAED,+EAA+E;AAC/E,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,UAAU,SAAI,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAwC1E"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Generate a progression hook from scenario JSON via LLM.
3
+ * The progression hook applies between-turn health/status changes
4
+ * based on the scenario's environment and domain.
5
+ */
6
+ /** Build the prompt for generating a progression hook. */
7
+ function buildPrompt(scenarioJson) {
8
+ const labels = scenarioJson.labels ?? {};
9
+ const env = scenarioJson.world?.environment ?? {};
10
+ const depts = (scenarioJson.departments ?? []).map((d) => d.id).join(', ');
11
+ return `You are generating a between-turn progression hook for a simulation engine.
12
+
13
+ SCENARIO: ${labels.name ?? 'Unknown'} — ${labels.settlementNoun ?? 'settlement'} simulation
14
+ POPULATION NOUN: ${labels.populationNoun ?? 'members'}
15
+ SETTLEMENT: ${labels.settlementNoun ?? 'settlement'}
16
+ ENVIRONMENT VARIABLES: ${JSON.stringify(env, null, 2)}
17
+ DEPARTMENTS: ${depts}
18
+
19
+ Generate a TypeScript function body for a progression hook. The function receives a context object with these fields:
20
+ - ctx.agents: array of agent objects with { core: { marsborn: boolean, birthYear: number, name: string }, health: { alive: boolean, boneDensityPct: number, cumulativeRadiationMsv: number, psychScore: number } }
21
+ - ctx.yearDelta: number of simulated years since last turn
22
+ - ctx.year: current simulated year
23
+ - ctx.turn: current turn number
24
+ - ctx.startYear: simulation start year
25
+ - ctx.rng: { chance(p: number): boolean, next(): number, pick<T>(arr: T[]): T, int(min: number, max: number): number }
26
+
27
+ Rules:
28
+ 1. Only modify health fields on ALIVE agents (check c.health.alive first, iterate ctx.agents)
29
+ 2. Use environment-appropriate health degradation for this scenario's domain
30
+ 3. Multiply time-scaled effects by ctx.yearDelta
31
+ 4. Use Math.max/Math.min to keep values bounded (boneDensityPct: 0-100, psychScore: 0-1, cumulativeRadiationMsv: >= 0)
32
+ 5. Do NOT use external imports, do NOT use require()
33
+ 6. The function signature is: (ctx: ProgressionHookContext) => void
34
+ 7. Use ctx.rng.chance(p) for probabilistic effects instead of Math.random()
35
+
36
+ Return ONLY the complete function as a TypeScript arrow function, no explanation, no markdown fences. Example format:
37
+ (ctx) => { for (const c of ctx.agents) { if (!c.health.alive) continue; /* effects */ } }`;
38
+ }
39
+ /** Parse the LLM response into an executable function. */
40
+ export function parseResponse(text) {
41
+ let cleaned = text.trim();
42
+ // Strip markdown fences if present
43
+ cleaned = cleaned.replace(/^```(?:typescript|ts)?\n?/i, '').replace(/\n?```$/i, '').trim();
44
+ // Strip trailing semicolons
45
+ if (cleaned.endsWith(';'))
46
+ cleaned = cleaned.slice(0, -1).trim();
47
+ try {
48
+ // Wrap in a function constructor
49
+ const fn = new Function('return ' + cleaned)();
50
+ if (typeof fn === 'function')
51
+ return fn;
52
+ return null;
53
+ }
54
+ catch {
55
+ // Try wrapping as function body if it's just statements
56
+ try {
57
+ const fn = new Function('ctx', cleaned);
58
+ return (ctx) => fn(ctx);
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ }
65
+ /** Generate a progression hook via LLM, with retries on validation failure. */
66
+ export async function generateProgressionHook(scenarioJson, generateText, maxRetries = 3) {
67
+ const prompt = buildPrompt(scenarioJson);
68
+ let lastError = '';
69
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
70
+ const retryHint = attempt > 0 ? `\n\nPrevious attempt failed: ${lastError}. Fix the issue.` : '';
71
+ const text = await generateText(prompt + retryHint);
72
+ const fn = parseResponse(text);
73
+ if (!fn) {
74
+ lastError = 'Could not parse response into a function';
75
+ continue;
76
+ }
77
+ // Quick smoke test
78
+ try {
79
+ const testColonists = [
80
+ { core: { marsborn: false, birthYear: 2010, name: 'Test' }, health: { alive: true, boneDensityPct: 95, cumulativeRadiationMsv: 100, psychScore: 0.7 }, career: {}, social: {}, narrative: {}, hexaco: {} },
81
+ { core: { marsborn: false, birthYear: 2010, name: 'Dead' }, health: { alive: false, boneDensityPct: 80, cumulativeRadiationMsv: 50, psychScore: 0.5 }, career: {}, social: {}, narrative: {}, hexaco: {} },
82
+ ];
83
+ fn({
84
+ agents: testColonists,
85
+ yearDelta: 4,
86
+ year: 2045,
87
+ turn: 3,
88
+ startYear: 2035,
89
+ rng: { chance: () => false, next: () => 0.5, pick: (arr) => arr[0], int: (min, max) => min },
90
+ });
91
+ return { hook: fn, source: text.trim() };
92
+ }
93
+ catch (err) {
94
+ lastError = String(err);
95
+ }
96
+ }
97
+ // Fallback: no-op hook
98
+ console.warn(`[compiler] Progression hook generation failed after ${maxRetries} retries. Using no-op.`);
99
+ return {
100
+ hook: () => { },
101
+ source: '// No-op: generation failed',
102
+ };
103
+ }
104
+ //# sourceMappingURL=generate-progression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-progression.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-progression.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generate a department prompt hook from scenario JSON via LLM.
3
+ * The department prompt hook builds context lines for each department agent.
4
+ */
5
+ import type { GenerateTextFn } from './types.js';
6
+ export declare function parseResponse(text: string): ((ctx: any) => string[]) | null;
7
+ export declare function generateDepartmentPromptHook(scenarioJson: Record<string, any>, generateText: GenerateTextFn, maxRetries?: number): Promise<{
8
+ hook: (ctx: any) => string[];
9
+ source: string;
10
+ }>;
11
+ //# sourceMappingURL=generate-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-prompts.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiCjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,CAY3E;AAED,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,UAAU,SAAI,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA2C3D"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Generate a department prompt hook from scenario JSON via LLM.
3
+ * The department prompt hook builds context lines for each department agent.
4
+ */
5
+ function buildPrompt(scenarioJson) {
6
+ const labels = scenarioJson.labels ?? {};
7
+ const depts = (scenarioJson.departments ?? []).map((d) => `- ${d.id}: ${d.label} (${d.role}) — ${d.instructions}`).join('\n');
8
+ return `You are generating a department prompt hook for a simulation engine.
9
+
10
+ SCENARIO: ${labels.name ?? 'Unknown'} — ${labels.settlementNoun ?? 'settlement'} simulation
11
+ DEPARTMENTS:
12
+ ${depts}
13
+
14
+ Generate a TypeScript arrow function that returns an array of context lines for a specific department. The function receives a context object:
15
+ - ctx.department: string (department ID, one of the above)
16
+ - ctx.state: { agents: array, colony: Record<string, number>, politics: Record<string, any>, metadata: { currentYear: number } }
17
+ - ctx.scenario: any (scenario data)
18
+ - ctx.researchPacket: { canonicalFacts: array, counterpoints: array, departmentNotes: Record<string, string> }
19
+
20
+ For each department, compute and return 2-4 lines of scenario-relevant statistics from ctx.state. Each line should be a section header followed by numbers/stats.
21
+
22
+ Example output: ['HEALTH:', 'Avg radiation: 150 mSv | Avg bone: 85% | Population: 80']
23
+
24
+ Rules:
25
+ 1. Use a switch statement on ctx.department with a case for each department ID
26
+ 2. Access ctx.state.agents (filter alive ones), ctx.state.colony (numeric metrics), ctx.state.politics
27
+ 3. Compute averages, counts, and status summaries relevant to each department
28
+ 4. Return string[] (array of context lines)
29
+ 5. Return an empty array for unknown departments
30
+ 6. Do NOT use external imports
31
+
32
+ Return ONLY the arrow function, no markdown fences, no explanation.`;
33
+ }
34
+ export function parseResponse(text) {
35
+ let cleaned = text.trim();
36
+ cleaned = cleaned.replace(/^```(?:typescript|ts)?\n?/i, '').replace(/\n?```$/i, '').trim();
37
+ if (cleaned.endsWith(';'))
38
+ cleaned = cleaned.slice(0, -1).trim();
39
+ try {
40
+ const fn = new Function('return ' + cleaned)();
41
+ if (typeof fn === 'function')
42
+ return fn;
43
+ return null;
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ export async function generateDepartmentPromptHook(scenarioJson, generateText, maxRetries = 3) {
50
+ let lastError = '';
51
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
52
+ const retryHint = attempt > 0 ? `\n\nPrevious attempt failed: ${lastError}. Fix the issue.` : '';
53
+ const text = await generateText(buildPrompt(scenarioJson) + retryHint);
54
+ const fn = parseResponse(text);
55
+ if (!fn) {
56
+ lastError = 'Could not parse response into a function';
57
+ continue;
58
+ }
59
+ // Smoke test
60
+ try {
61
+ const deptId = (scenarioJson.departments ?? [])[0]?.id ?? 'engineering';
62
+ const result = fn({
63
+ department: deptId,
64
+ state: {
65
+ agents: [{ core: { name: 'Test' }, health: { alive: true, boneDensityPct: 90, cumulativeRadiationMsv: 100, psychScore: 0.7 } }],
66
+ colony: { morale: 0.6, population: 80, foodMonthsReserve: 6, powerKw: 300, infrastructureModules: 10, scienceOutput: 5, lifeSupportCapacity: 100 },
67
+ politics: { earthDependencyPct: 50, governanceStatus: 'colonial' },
68
+ metadata: { currentYear: 2045 },
69
+ },
70
+ scenario: scenarioJson,
71
+ researchPacket: { canonicalFacts: [], counterpoints: [], departmentNotes: {} },
72
+ });
73
+ if (!Array.isArray(result)) {
74
+ lastError = 'Must return an array of strings';
75
+ continue;
76
+ }
77
+ return { hook: fn, source: text.trim() };
78
+ }
79
+ catch (err) {
80
+ lastError = String(err);
81
+ }
82
+ }
83
+ // Fallback: empty lines
84
+ console.warn('[compiler] Department prompt hook generation failed. Using fallback.');
85
+ return {
86
+ hook: (ctx) => [`[${ctx.department}] No scenario-specific context available.`],
87
+ source: '// Fallback department prompts',
88
+ };
89
+ }
90
+ //# sourceMappingURL=generate-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-prompts.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Generate a reaction context hook from scenario JSON via LLM.
3
+ * The reaction context hook returns location/identity/health phrasing
4
+ * for individual colonist reaction prompts.
5
+ */
6
+ import type { GenerateTextFn } from './types.js';
7
+ export declare function parseResponse(text: string): ((colonist: any, ctx: any) => string) | null;
8
+ export declare function generateReactionContextHook(scenarioJson: Record<string, any>, generateText: GenerateTextFn, maxRetries?: number): Promise<{
9
+ hook: (colonist: any, ctx: any) => string;
10
+ source: string;
11
+ }>;
12
+ //# sourceMappingURL=generate-reactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-reactions.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA+BjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,CAYxF;AAED,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,UAAU,SAAI,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA6CxE"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Generate a reaction context hook from scenario JSON via LLM.
3
+ * The reaction context hook returns location/identity/health phrasing
4
+ * for individual colonist reaction prompts.
5
+ */
6
+ function buildPrompt(scenarioJson) {
7
+ const labels = scenarioJson.labels ?? {};
8
+ return `You are generating a reaction context hook for a simulation engine.
9
+
10
+ SCENARIO: ${labels.name ?? 'Unknown'} — ${labels.settlementNoun ?? 'settlement'} simulation
11
+ POPULATION NOUN: ${labels.populationNoun ?? 'members'}
12
+ START YEAR: ${scenarioJson.setup?.defaultStartYear ?? 2035}
13
+
14
+ Generate a TypeScript arrow function that returns a 1-3 sentence string providing location/identity context for a ${labels.populationNoun ?? 'member'} reaction prompt.
15
+
16
+ The function receives:
17
+ - colonist: { core: { marsborn: boolean, birthYear: number, name: string }, health: { alive: boolean, boneDensityPct: number, cumulativeRadiationMsv: number, psychScore: number } }
18
+ - ctx: { year: number, turn: number }
19
+
20
+ Return a string with:
21
+ 1. Identity phrasing (born at the ${labels.settlementNoun ?? 'settlement'} vs arrived from elsewhere)
22
+ 2. Health context if relevant (low bone density, high radiation, low psych score)
23
+ 3. Scenario-appropriate language
24
+
25
+ Rules:
26
+ 1. Return a string, not an object
27
+ 2. Keep it to 1-3 short sentences
28
+ 3. Reference scenario-specific health concerns
29
+ 4. Do NOT use external imports
30
+
31
+ Return ONLY the arrow function, no markdown fences, no explanation.`;
32
+ }
33
+ export function parseResponse(text) {
34
+ let cleaned = text.trim();
35
+ cleaned = cleaned.replace(/^```(?:typescript|ts)?\n?/i, '').replace(/\n?```$/i, '').trim();
36
+ if (cleaned.endsWith(';'))
37
+ cleaned = cleaned.slice(0, -1).trim();
38
+ try {
39
+ const fn = new Function('return ' + cleaned)();
40
+ if (typeof fn === 'function')
41
+ return fn;
42
+ return null;
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ }
48
+ export async function generateReactionContextHook(scenarioJson, generateText, maxRetries = 3) {
49
+ let lastError = '';
50
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
51
+ const retryHint = attempt > 0 ? `\n\nPrevious attempt failed: ${lastError}. Fix the issue.` : '';
52
+ const text = await generateText(buildPrompt(scenarioJson) + retryHint);
53
+ const fn = parseResponse(text);
54
+ if (!fn) {
55
+ lastError = 'Could not parse response into a function';
56
+ continue;
57
+ }
58
+ // Smoke test
59
+ try {
60
+ const result = fn({ core: { marsborn: false, birthYear: 2010, name: 'Test' }, health: { alive: true, boneDensityPct: 80, cumulativeRadiationMsv: 200, psychScore: 0.6 } }, { year: 2045, turn: 3 });
61
+ if (typeof result !== 'string') {
62
+ lastError = 'Must return a string';
63
+ continue;
64
+ }
65
+ return { hook: fn, source: text.trim() };
66
+ }
67
+ catch (err) {
68
+ lastError = String(err);
69
+ }
70
+ }
71
+ // Fallback: generic reaction context
72
+ const labels = scenarioJson.labels ?? {};
73
+ console.warn('[compiler] Reaction context hook generation failed. Using fallback.');
74
+ return {
75
+ hook: (colonist, ctx) => {
76
+ const lines = [];
77
+ if (colonist.core?.marsborn) {
78
+ lines.push(`Born at the ${labels.settlementNoun ?? 'settlement'}.`);
79
+ }
80
+ else {
81
+ lines.push(`Arrived ${ctx.year - (scenarioJson.setup?.defaultStartYear ?? 2035)} years ago.`);
82
+ }
83
+ if (colonist.health?.psychScore < 0.4)
84
+ lines.push('Struggling with low morale.');
85
+ return lines.join(' ');
86
+ },
87
+ source: '// Fallback reaction context',
88
+ };
89
+ }
90
+ //# sourceMappingURL=generate-reactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-reactions.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Paracosm Scenario Compiler
3
+ *
4
+ * Takes a raw scenario JSON (the data portion of a ScenarioPackage) and generates
5
+ * all runtime hooks via LLM calls. Returns a complete ScenarioPackage ready to
6
+ * pass to runSimulation().
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { compileScenario } from 'paracosm/compiler';
11
+ * import { runSimulation } from 'paracosm/runtime';
12
+ *
13
+ * const scenario = await compileScenario(submarineJson, {
14
+ * provider: 'anthropic',
15
+ * model: 'claude-sonnet-4-6',
16
+ * });
17
+ *
18
+ * const output = await runSimulation(leader, personnel, { scenario, maxTurns: 8 });
19
+ * ```
20
+ */
21
+ import type { ScenarioPackage } from '../types.js';
22
+ import type { CompileOptions, GenerateTextFn } from './types.js';
23
+ export type { CompileOptions, GenerateTextFn };
24
+ export { ingestSeed, ingestFromUrl } from './seed-ingestion.js';
25
+ export type { SeedIngestionOptions } from './seed-ingestion.js';
26
+ /**
27
+ * Compile a scenario JSON into a complete ScenarioPackage with generated hooks.
28
+ *
29
+ * @param scenarioJson - The data portion of a scenario (labels, departments, metrics, effects, etc.)
30
+ * @param options - Compiler options (provider, model, cache settings)
31
+ * @returns A complete ScenarioPackage ready for runSimulation()
32
+ */
33
+ export declare function compileScenario(scenarioJson: Record<string, unknown>, options?: CompileOptions): Promise<ScenarioPackage>;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAA8B,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAYjE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAsEhE;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAsJ1B"}