paracosm 0.4.346 → 0.4.377

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 (671) hide show
  1. package/README.md +186 -14
  2. package/config/leaders.example.json +32 -0
  3. package/config/leaders.json +32 -0
  4. package/dist/cli/cli-run-options.d.ts +11 -0
  5. package/dist/cli/cli-run-options.d.ts.map +1 -0
  6. package/dist/cli/cli-run-options.js +39 -0
  7. package/dist/cli/cli-run-options.js.map +1 -0
  8. package/dist/cli/compile-cli-options.d.ts +14 -0
  9. package/dist/cli/compile-cli-options.d.ts.map +1 -0
  10. package/dist/cli/compile-cli-options.js +48 -0
  11. package/dist/cli/compile-cli-options.js.map +1 -0
  12. package/dist/cli/compile.d.ts +11 -0
  13. package/dist/cli/compile.d.ts.map +1 -0
  14. package/dist/cli/compile.js +92 -0
  15. package/dist/cli/compile.js.map +1 -0
  16. package/dist/cli/custom-scenarios.d.ts +10 -0
  17. package/dist/cli/custom-scenarios.d.ts.map +1 -0
  18. package/dist/cli/custom-scenarios.js +93 -0
  19. package/dist/cli/custom-scenarios.js.map +1 -0
  20. package/dist/cli/leaders-resolver.d.ts +26 -0
  21. package/dist/cli/leaders-resolver.d.ts.map +1 -0
  22. package/dist/cli/leaders-resolver.js +66 -0
  23. package/dist/cli/leaders-resolver.js.map +1 -0
  24. package/dist/cli/pair-runner.d.ts +23 -0
  25. package/dist/cli/pair-runner.d.ts.map +1 -0
  26. package/dist/cli/pair-runner.js +225 -0
  27. package/dist/cli/pair-runner.js.map +1 -0
  28. package/dist/cli/rate-limiter.d.ts +78 -0
  29. package/dist/cli/rate-limiter.d.ts.map +1 -0
  30. package/dist/cli/rate-limiter.js +193 -0
  31. package/dist/cli/rate-limiter.js.map +1 -0
  32. package/dist/cli/retry-stats.d.ts +179 -0
  33. package/dist/cli/retry-stats.d.ts.map +1 -0
  34. package/dist/cli/retry-stats.js +167 -0
  35. package/dist/cli/retry-stats.js.map +1 -0
  36. package/dist/cli/run-a.d.ts +2 -0
  37. package/dist/cli/run-a.d.ts.map +1 -0
  38. package/dist/cli/run-a.js +13 -0
  39. package/dist/cli/run-a.js.map +1 -0
  40. package/dist/cli/run-b.d.ts +2 -0
  41. package/dist/cli/run-b.d.ts.map +1 -0
  42. package/dist/cli/run-b.js +13 -0
  43. package/dist/cli/run-b.js.map +1 -0
  44. package/dist/cli/run.d.ts +18 -0
  45. package/dist/cli/run.d.ts.map +1 -0
  46. package/dist/cli/run.js +135 -0
  47. package/dist/cli/run.js.map +1 -0
  48. package/dist/cli/serve.d.ts +10 -0
  49. package/dist/cli/serve.d.ts.map +1 -0
  50. package/dist/cli/serve.js +71 -0
  51. package/dist/cli/serve.js.map +1 -0
  52. package/dist/cli/server/routes/platform-api.d.ts +8 -0
  53. package/dist/cli/server/routes/platform-api.d.ts.map +1 -0
  54. package/dist/cli/server/routes/platform-api.js +41 -0
  55. package/dist/cli/server/routes/platform-api.js.map +1 -0
  56. package/dist/cli/server/routes/public-demo.d.ts +4 -0
  57. package/dist/cli/server/routes/public-demo.d.ts.map +1 -0
  58. package/dist/cli/server/routes/public-demo.js +16 -0
  59. package/dist/cli/server/routes/public-demo.js.map +1 -0
  60. package/dist/cli/server/run-history-store.d.ts +8 -0
  61. package/dist/cli/server/run-history-store.d.ts.map +1 -0
  62. package/dist/cli/server/run-history-store.js +8 -0
  63. package/dist/cli/server/run-history-store.js.map +1 -0
  64. package/dist/cli/server/run-record.d.ts +14 -0
  65. package/dist/cli/server/run-record.d.ts.map +1 -0
  66. package/dist/cli/server/run-record.js +12 -0
  67. package/dist/cli/server/run-record.js.map +1 -0
  68. package/dist/cli/server/server-mode.d.ts +3 -0
  69. package/dist/cli/server/server-mode.d.ts.map +1 -0
  70. package/dist/cli/server/server-mode.js +8 -0
  71. package/dist/cli/server/server-mode.js.map +1 -0
  72. package/dist/cli/server-app.d.ts +46 -0
  73. package/dist/cli/server-app.d.ts.map +1 -0
  74. package/dist/cli/server-app.js +1846 -0
  75. package/dist/cli/server-app.js.map +1 -0
  76. package/dist/cli/session-store.d.ts +103 -0
  77. package/dist/cli/session-store.d.ts.map +1 -0
  78. package/dist/cli/session-store.js +254 -0
  79. package/dist/cli/session-store.js.map +1 -0
  80. package/dist/cli/session-title.d.ts +81 -0
  81. package/dist/cli/session-title.d.ts.map +1 -0
  82. package/dist/cli/session-title.js +229 -0
  83. package/dist/cli/session-title.js.map +1 -0
  84. package/dist/cli/sim-config.d.ts.map +1 -0
  85. package/dist/cli/sim-config.js.map +1 -0
  86. package/dist/cli/types.d.ts.map +1 -0
  87. package/dist/{src/cli → cli}/types.js.map +1 -1
  88. package/dist/engine/_template/index.d.ts.map +1 -0
  89. package/dist/engine/_template/index.js.map +1 -0
  90. package/dist/engine/compiler/cache.d.ts.map +1 -0
  91. package/dist/engine/compiler/cache.js.map +1 -0
  92. package/dist/engine/compiler/generate-director.d.ts.map +1 -0
  93. package/dist/engine/compiler/generate-director.js.map +1 -0
  94. package/dist/engine/compiler/generate-fingerprint.d.ts.map +1 -0
  95. package/dist/engine/compiler/generate-fingerprint.js.map +1 -0
  96. package/dist/engine/compiler/generate-milestones.d.ts.map +1 -0
  97. package/dist/engine/compiler/generate-milestones.js.map +1 -0
  98. package/dist/engine/compiler/generate-politics.d.ts.map +1 -0
  99. package/dist/engine/compiler/generate-politics.js.map +1 -0
  100. package/dist/engine/compiler/generate-progression.d.ts.map +1 -0
  101. package/dist/engine/compiler/generate-progression.js.map +1 -0
  102. package/dist/engine/compiler/generate-prompts.d.ts.map +1 -0
  103. package/dist/engine/compiler/generate-prompts.js.map +1 -0
  104. package/dist/engine/compiler/generate-reactions.d.ts.map +1 -0
  105. package/dist/engine/compiler/generate-reactions.js.map +1 -0
  106. package/dist/engine/compiler/index.d.ts.map +1 -0
  107. package/dist/engine/compiler/index.js.map +1 -0
  108. package/dist/engine/compiler/llm-invocations/generateValidatedCode.d.ts.map +1 -0
  109. package/dist/engine/compiler/llm-invocations/generateValidatedCode.js.map +1 -0
  110. package/dist/engine/compiler/llm-invocations/generateValidatedJson.d.ts.map +1 -0
  111. package/dist/engine/compiler/llm-invocations/generateValidatedJson.js.map +1 -0
  112. package/dist/engine/compiler/llm-invocations/generateValidatedObject.d.ts.map +1 -0
  113. package/dist/engine/compiler/llm-invocations/generateValidatedObject.js.map +1 -0
  114. package/dist/engine/compiler/llm-invocations/generateValidatedProse.d.ts.map +1 -0
  115. package/dist/engine/compiler/llm-invocations/generateValidatedProse.js.map +1 -0
  116. package/dist/engine/compiler/schemas/index.d.ts.map +1 -0
  117. package/dist/engine/compiler/schemas/index.js.map +1 -0
  118. package/dist/engine/compiler/schemas/milestones.d.ts.map +1 -0
  119. package/dist/engine/compiler/schemas/milestones.js.map +1 -0
  120. package/dist/engine/compiler/seed-ingestion.d.ts.map +1 -0
  121. package/dist/engine/compiler/seed-ingestion.js.map +1 -0
  122. package/dist/engine/compiler/telemetry.d.ts.map +1 -0
  123. package/dist/engine/compiler/telemetry.js.map +1 -0
  124. package/dist/engine/compiler/types.d.ts.map +1 -0
  125. package/dist/engine/compiler/types.js.map +1 -0
  126. package/dist/engine/compiler/validate.d.ts.map +1 -0
  127. package/dist/engine/compiler/validate.js.map +1 -0
  128. package/dist/engine/core/agent-generator.d.ts.map +1 -0
  129. package/dist/engine/core/agent-generator.js.map +1 -0
  130. package/dist/engine/core/kernel.d.ts.map +1 -0
  131. package/dist/engine/core/kernel.js.map +1 -0
  132. package/dist/engine/core/progression.d.ts.map +1 -0
  133. package/dist/engine/core/progression.js.map +1 -0
  134. package/dist/engine/core/rng.d.ts.map +1 -0
  135. package/dist/engine/core/rng.js.map +1 -0
  136. package/dist/engine/core/state.d.ts.map +1 -0
  137. package/dist/engine/core/state.js.map +1 -0
  138. package/dist/engine/effect-registry.d.ts.map +1 -0
  139. package/dist/engine/effect-registry.js.map +1 -0
  140. package/dist/engine/event-taxonomy.d.ts.map +1 -0
  141. package/dist/engine/event-taxonomy.js.map +1 -0
  142. package/dist/{src/engine → engine}/index.d.ts +2 -0
  143. package/dist/engine/index.d.ts.map +1 -0
  144. package/dist/{src/engine → engine}/index.js +5 -0
  145. package/dist/engine/index.js.map +1 -0
  146. package/dist/engine/lunar/effects.d.ts.map +1 -0
  147. package/dist/engine/lunar/effects.js.map +1 -0
  148. package/dist/engine/lunar/events.d.ts.map +1 -0
  149. package/dist/engine/lunar/events.js.map +1 -0
  150. package/dist/engine/lunar/fingerprint.d.ts.map +1 -0
  151. package/dist/engine/lunar/fingerprint.js.map +1 -0
  152. package/dist/engine/lunar/hooks.d.ts.map +1 -0
  153. package/dist/engine/lunar/hooks.js.map +1 -0
  154. package/dist/engine/lunar/index.d.ts.map +1 -0
  155. package/dist/engine/lunar/index.js.map +1 -0
  156. package/dist/engine/lunar/metrics.d.ts.map +1 -0
  157. package/dist/engine/lunar/metrics.js.map +1 -0
  158. package/dist/engine/lunar/milestones.d.ts.map +1 -0
  159. package/dist/engine/lunar/milestones.js.map +1 -0
  160. package/dist/engine/lunar/names.d.ts.map +1 -0
  161. package/dist/engine/lunar/names.js.map +1 -0
  162. package/dist/engine/lunar/politics.d.ts.map +1 -0
  163. package/dist/engine/lunar/politics.js.map +1 -0
  164. package/dist/engine/lunar/presets.d.ts.map +1 -0
  165. package/dist/engine/lunar/presets.js.map +1 -0
  166. package/dist/engine/lunar/progression-hooks.d.ts.map +1 -0
  167. package/dist/engine/lunar/progression-hooks.js.map +1 -0
  168. package/dist/engine/lunar/prompts.d.ts.map +1 -0
  169. package/dist/engine/lunar/prompts.js.map +1 -0
  170. package/dist/engine/lunar/reactions.d.ts.map +1 -0
  171. package/dist/engine/lunar/reactions.js.map +1 -0
  172. package/dist/engine/lunar/research-bundle.d.ts.map +1 -0
  173. package/dist/engine/lunar/research-bundle.js.map +1 -0
  174. package/dist/engine/mars/effects.d.ts.map +1 -0
  175. package/dist/engine/mars/effects.js.map +1 -0
  176. package/dist/engine/mars/events.d.ts.map +1 -0
  177. package/dist/engine/mars/events.js.map +1 -0
  178. package/dist/engine/mars/fingerprint.d.ts.map +1 -0
  179. package/dist/engine/mars/fingerprint.js.map +1 -0
  180. package/dist/engine/mars/hooks.d.ts.map +1 -0
  181. package/dist/engine/mars/hooks.js.map +1 -0
  182. package/dist/engine/mars/index.d.ts.map +1 -0
  183. package/dist/engine/mars/index.js.map +1 -0
  184. package/dist/engine/mars/metrics.d.ts.map +1 -0
  185. package/dist/engine/mars/metrics.js.map +1 -0
  186. package/dist/engine/mars/milestones.d.ts.map +1 -0
  187. package/dist/engine/mars/milestones.js.map +1 -0
  188. package/dist/engine/mars/names.d.ts.map +1 -0
  189. package/dist/engine/mars/names.js.map +1 -0
  190. package/dist/engine/mars/politics.d.ts.map +1 -0
  191. package/dist/engine/mars/politics.js.map +1 -0
  192. package/dist/engine/mars/presets.d.ts.map +1 -0
  193. package/dist/engine/mars/presets.js.map +1 -0
  194. package/dist/engine/mars/progression-hooks.d.ts.map +1 -0
  195. package/dist/engine/mars/progression-hooks.js.map +1 -0
  196. package/dist/engine/mars/prompts.d.ts.map +1 -0
  197. package/dist/engine/mars/prompts.js.map +1 -0
  198. package/dist/engine/mars/reactions.d.ts.map +1 -0
  199. package/dist/engine/mars/reactions.js.map +1 -0
  200. package/dist/engine/mars/research-bundle.d.ts.map +1 -0
  201. package/dist/engine/mars/research-bundle.js.map +1 -0
  202. package/dist/engine/metric-registry.d.ts.map +1 -0
  203. package/dist/engine/metric-registry.js.map +1 -0
  204. package/dist/engine/provider-resolver.d.ts.map +1 -0
  205. package/dist/{src/engine → engine}/provider-resolver.js +2 -1
  206. package/dist/engine/provider-resolver.js.map +1 -0
  207. package/dist/engine/types.d.ts.map +1 -0
  208. package/dist/{src/engine → engine}/types.js.map +1 -1
  209. package/dist/runtime/agent-memory.d.ts.map +1 -0
  210. package/dist/runtime/agent-memory.js.map +1 -0
  211. package/dist/runtime/agent-reactions.d.ts.map +1 -0
  212. package/dist/runtime/agent-reactions.js.map +1 -0
  213. package/dist/runtime/batch.d.ts.map +1 -0
  214. package/dist/runtime/batch.js.map +1 -0
  215. package/dist/runtime/chat-agents.d.ts.map +1 -0
  216. package/dist/runtime/chat-agents.js.map +1 -0
  217. package/dist/runtime/citations-catalog.d.ts.map +1 -0
  218. package/dist/runtime/citations-catalog.js.map +1 -0
  219. package/dist/runtime/commander-setup.d.ts.map +1 -0
  220. package/dist/runtime/commander-setup.js.map +1 -0
  221. package/dist/runtime/contracts.d.ts.map +1 -0
  222. package/dist/{src/runtime → runtime}/contracts.js.map +1 -1
  223. package/dist/runtime/cost-tracker.d.ts.map +1 -0
  224. package/dist/runtime/cost-tracker.js.map +1 -0
  225. package/dist/runtime/departments.d.ts.map +1 -0
  226. package/dist/runtime/departments.js.map +1 -0
  227. package/dist/runtime/director.d.ts.map +1 -0
  228. package/dist/runtime/director.js.map +1 -0
  229. package/dist/runtime/economics-profile.d.ts.map +1 -0
  230. package/dist/runtime/economics-profile.js.map +1 -0
  231. package/dist/runtime/emergent-setup.d.ts.map +1 -0
  232. package/dist/runtime/emergent-setup.js.map +1 -0
  233. package/dist/runtime/generic-fingerprint.d.ts.map +1 -0
  234. package/dist/runtime/generic-fingerprint.js.map +1 -0
  235. package/dist/runtime/hexaco-cues/trajectory.d.ts.map +1 -0
  236. package/dist/runtime/hexaco-cues/trajectory.js.map +1 -0
  237. package/dist/runtime/hexaco-cues/translation.d.ts.map +1 -0
  238. package/dist/runtime/hexaco-cues/translation.js.map +1 -0
  239. package/dist/runtime/index.d.ts.map +1 -0
  240. package/dist/runtime/index.js.map +1 -0
  241. package/dist/runtime/llm-invocations/generateValidatedObject.d.ts.map +1 -0
  242. package/dist/runtime/llm-invocations/generateValidatedObject.js.map +1 -0
  243. package/dist/runtime/llm-invocations/sendAndValidate.d.ts.map +1 -0
  244. package/dist/runtime/llm-invocations/sendAndValidate.js.map +1 -0
  245. package/dist/runtime/orchestrator.d.ts.map +1 -0
  246. package/dist/runtime/orchestrator.js.map +1 -0
  247. package/dist/runtime/output-writer.d.ts.map +1 -0
  248. package/dist/runtime/output-writer.js.map +1 -0
  249. package/dist/runtime/parsers.d.ts.map +1 -0
  250. package/dist/runtime/parsers.js.map +1 -0
  251. package/dist/runtime/pricing.d.ts.map +1 -0
  252. package/dist/runtime/pricing.js.map +1 -0
  253. package/dist/runtime/provider-errors.d.ts.map +1 -0
  254. package/dist/runtime/provider-errors.js.map +1 -0
  255. package/dist/runtime/reaction-step.d.ts.map +1 -0
  256. package/dist/runtime/reaction-step.js.map +1 -0
  257. package/dist/runtime/research/knowledge-base.d.ts.map +1 -0
  258. package/dist/runtime/research/knowledge-base.js.map +1 -0
  259. package/dist/runtime/research/research-memory.d.ts.map +1 -0
  260. package/dist/runtime/research/research-memory.js.map +1 -0
  261. package/dist/runtime/research/research.d.ts.map +1 -0
  262. package/dist/runtime/research/research.js.map +1 -0
  263. package/dist/runtime/research/scenario-research.d.ts.map +1 -0
  264. package/dist/runtime/research/scenario-research.js.map +1 -0
  265. package/dist/runtime/research/scenarios.d.ts.map +1 -0
  266. package/dist/runtime/research/scenarios.js.map +1 -0
  267. package/dist/runtime/runtime-helpers.d.ts.map +1 -0
  268. package/dist/runtime/runtime-helpers.js.map +1 -0
  269. package/dist/runtime/schemas/commander.d.ts.map +1 -0
  270. package/dist/runtime/schemas/commander.js.map +1 -0
  271. package/dist/runtime/schemas/department.d.ts.map +1 -0
  272. package/dist/runtime/schemas/department.js.map +1 -0
  273. package/dist/runtime/schemas/director.d.ts.map +1 -0
  274. package/dist/runtime/schemas/director.js.map +1 -0
  275. package/dist/runtime/schemas/index.d.ts.map +1 -0
  276. package/dist/runtime/schemas/index.js.map +1 -0
  277. package/dist/runtime/schemas/reactions.d.ts.map +1 -0
  278. package/dist/runtime/schemas/reactions.js.map +1 -0
  279. package/dist/runtime/schemas/verdict.d.ts.map +1 -0
  280. package/dist/runtime/schemas/verdict.js.map +1 -0
  281. package/dist/runtime/tool-ledger.d.ts.map +1 -0
  282. package/dist/runtime/tool-ledger.js.map +1 -0
  283. package/package.json +8 -2
  284. package/dist/src/cli/sim-config.d.ts.map +0 -1
  285. package/dist/src/cli/sim-config.js.map +0 -1
  286. package/dist/src/cli/types.d.ts.map +0 -1
  287. package/dist/src/engine/_template/index.d.ts.map +0 -1
  288. package/dist/src/engine/_template/index.js.map +0 -1
  289. package/dist/src/engine/compiler/cache.d.ts.map +0 -1
  290. package/dist/src/engine/compiler/cache.js.map +0 -1
  291. package/dist/src/engine/compiler/generate-director.d.ts.map +0 -1
  292. package/dist/src/engine/compiler/generate-director.js.map +0 -1
  293. package/dist/src/engine/compiler/generate-fingerprint.d.ts.map +0 -1
  294. package/dist/src/engine/compiler/generate-fingerprint.js.map +0 -1
  295. package/dist/src/engine/compiler/generate-milestones.d.ts.map +0 -1
  296. package/dist/src/engine/compiler/generate-milestones.js.map +0 -1
  297. package/dist/src/engine/compiler/generate-politics.d.ts.map +0 -1
  298. package/dist/src/engine/compiler/generate-politics.js.map +0 -1
  299. package/dist/src/engine/compiler/generate-progression.d.ts.map +0 -1
  300. package/dist/src/engine/compiler/generate-progression.js.map +0 -1
  301. package/dist/src/engine/compiler/generate-prompts.d.ts.map +0 -1
  302. package/dist/src/engine/compiler/generate-prompts.js.map +0 -1
  303. package/dist/src/engine/compiler/generate-reactions.d.ts.map +0 -1
  304. package/dist/src/engine/compiler/generate-reactions.js.map +0 -1
  305. package/dist/src/engine/compiler/index.d.ts.map +0 -1
  306. package/dist/src/engine/compiler/index.js.map +0 -1
  307. package/dist/src/engine/compiler/llm-invocations/generateValidatedCode.d.ts.map +0 -1
  308. package/dist/src/engine/compiler/llm-invocations/generateValidatedCode.js.map +0 -1
  309. package/dist/src/engine/compiler/llm-invocations/generateValidatedJson.d.ts.map +0 -1
  310. package/dist/src/engine/compiler/llm-invocations/generateValidatedJson.js.map +0 -1
  311. package/dist/src/engine/compiler/llm-invocations/generateValidatedObject.d.ts.map +0 -1
  312. package/dist/src/engine/compiler/llm-invocations/generateValidatedObject.js.map +0 -1
  313. package/dist/src/engine/compiler/llm-invocations/generateValidatedProse.d.ts.map +0 -1
  314. package/dist/src/engine/compiler/llm-invocations/generateValidatedProse.js.map +0 -1
  315. package/dist/src/engine/compiler/schemas/index.d.ts.map +0 -1
  316. package/dist/src/engine/compiler/schemas/index.js.map +0 -1
  317. package/dist/src/engine/compiler/schemas/milestones.d.ts.map +0 -1
  318. package/dist/src/engine/compiler/schemas/milestones.js.map +0 -1
  319. package/dist/src/engine/compiler/seed-ingestion.d.ts.map +0 -1
  320. package/dist/src/engine/compiler/seed-ingestion.js.map +0 -1
  321. package/dist/src/engine/compiler/telemetry.d.ts.map +0 -1
  322. package/dist/src/engine/compiler/telemetry.js.map +0 -1
  323. package/dist/src/engine/compiler/types.d.ts.map +0 -1
  324. package/dist/src/engine/compiler/types.js.map +0 -1
  325. package/dist/src/engine/compiler/validate.d.ts.map +0 -1
  326. package/dist/src/engine/compiler/validate.js.map +0 -1
  327. package/dist/src/engine/core/agent-generator.d.ts.map +0 -1
  328. package/dist/src/engine/core/agent-generator.js.map +0 -1
  329. package/dist/src/engine/core/kernel.d.ts.map +0 -1
  330. package/dist/src/engine/core/kernel.js.map +0 -1
  331. package/dist/src/engine/core/progression.d.ts.map +0 -1
  332. package/dist/src/engine/core/progression.js.map +0 -1
  333. package/dist/src/engine/core/rng.d.ts.map +0 -1
  334. package/dist/src/engine/core/rng.js.map +0 -1
  335. package/dist/src/engine/core/state.d.ts.map +0 -1
  336. package/dist/src/engine/core/state.js.map +0 -1
  337. package/dist/src/engine/effect-registry.d.ts.map +0 -1
  338. package/dist/src/engine/effect-registry.js.map +0 -1
  339. package/dist/src/engine/event-taxonomy.d.ts.map +0 -1
  340. package/dist/src/engine/event-taxonomy.js.map +0 -1
  341. package/dist/src/engine/index.d.ts.map +0 -1
  342. package/dist/src/engine/index.js.map +0 -1
  343. package/dist/src/engine/lunar/effects.d.ts.map +0 -1
  344. package/dist/src/engine/lunar/effects.js.map +0 -1
  345. package/dist/src/engine/lunar/events.d.ts.map +0 -1
  346. package/dist/src/engine/lunar/events.js.map +0 -1
  347. package/dist/src/engine/lunar/fingerprint.d.ts.map +0 -1
  348. package/dist/src/engine/lunar/fingerprint.js.map +0 -1
  349. package/dist/src/engine/lunar/hooks.d.ts.map +0 -1
  350. package/dist/src/engine/lunar/hooks.js.map +0 -1
  351. package/dist/src/engine/lunar/index.d.ts.map +0 -1
  352. package/dist/src/engine/lunar/index.js.map +0 -1
  353. package/dist/src/engine/lunar/metrics.d.ts.map +0 -1
  354. package/dist/src/engine/lunar/metrics.js.map +0 -1
  355. package/dist/src/engine/lunar/milestones.d.ts.map +0 -1
  356. package/dist/src/engine/lunar/milestones.js.map +0 -1
  357. package/dist/src/engine/lunar/names.d.ts.map +0 -1
  358. package/dist/src/engine/lunar/names.js.map +0 -1
  359. package/dist/src/engine/lunar/politics.d.ts.map +0 -1
  360. package/dist/src/engine/lunar/politics.js.map +0 -1
  361. package/dist/src/engine/lunar/presets.d.ts.map +0 -1
  362. package/dist/src/engine/lunar/presets.js.map +0 -1
  363. package/dist/src/engine/lunar/progression-hooks.d.ts.map +0 -1
  364. package/dist/src/engine/lunar/progression-hooks.js.map +0 -1
  365. package/dist/src/engine/lunar/prompts.d.ts.map +0 -1
  366. package/dist/src/engine/lunar/prompts.js.map +0 -1
  367. package/dist/src/engine/lunar/reactions.d.ts.map +0 -1
  368. package/dist/src/engine/lunar/reactions.js.map +0 -1
  369. package/dist/src/engine/lunar/research-bundle.d.ts.map +0 -1
  370. package/dist/src/engine/lunar/research-bundle.js.map +0 -1
  371. package/dist/src/engine/mars/effects.d.ts.map +0 -1
  372. package/dist/src/engine/mars/effects.js.map +0 -1
  373. package/dist/src/engine/mars/events.d.ts.map +0 -1
  374. package/dist/src/engine/mars/events.js.map +0 -1
  375. package/dist/src/engine/mars/fingerprint.d.ts.map +0 -1
  376. package/dist/src/engine/mars/fingerprint.js.map +0 -1
  377. package/dist/src/engine/mars/hooks.d.ts.map +0 -1
  378. package/dist/src/engine/mars/hooks.js.map +0 -1
  379. package/dist/src/engine/mars/index.d.ts.map +0 -1
  380. package/dist/src/engine/mars/index.js.map +0 -1
  381. package/dist/src/engine/mars/metrics.d.ts.map +0 -1
  382. package/dist/src/engine/mars/metrics.js.map +0 -1
  383. package/dist/src/engine/mars/milestones.d.ts.map +0 -1
  384. package/dist/src/engine/mars/milestones.js.map +0 -1
  385. package/dist/src/engine/mars/names.d.ts.map +0 -1
  386. package/dist/src/engine/mars/names.js.map +0 -1
  387. package/dist/src/engine/mars/politics.d.ts.map +0 -1
  388. package/dist/src/engine/mars/politics.js.map +0 -1
  389. package/dist/src/engine/mars/presets.d.ts.map +0 -1
  390. package/dist/src/engine/mars/presets.js.map +0 -1
  391. package/dist/src/engine/mars/progression-hooks.d.ts.map +0 -1
  392. package/dist/src/engine/mars/progression-hooks.js.map +0 -1
  393. package/dist/src/engine/mars/prompts.d.ts.map +0 -1
  394. package/dist/src/engine/mars/prompts.js.map +0 -1
  395. package/dist/src/engine/mars/reactions.d.ts.map +0 -1
  396. package/dist/src/engine/mars/reactions.js.map +0 -1
  397. package/dist/src/engine/mars/research-bundle.d.ts.map +0 -1
  398. package/dist/src/engine/mars/research-bundle.js.map +0 -1
  399. package/dist/src/engine/metric-registry.d.ts.map +0 -1
  400. package/dist/src/engine/metric-registry.js.map +0 -1
  401. package/dist/src/engine/provider-resolver.d.ts.map +0 -1
  402. package/dist/src/engine/provider-resolver.js.map +0 -1
  403. package/dist/src/engine/types.d.ts.map +0 -1
  404. package/dist/src/runtime/agent-memory.d.ts.map +0 -1
  405. package/dist/src/runtime/agent-memory.js.map +0 -1
  406. package/dist/src/runtime/agent-reactions.d.ts.map +0 -1
  407. package/dist/src/runtime/agent-reactions.js.map +0 -1
  408. package/dist/src/runtime/batch.d.ts.map +0 -1
  409. package/dist/src/runtime/batch.js.map +0 -1
  410. package/dist/src/runtime/chat-agents.d.ts.map +0 -1
  411. package/dist/src/runtime/chat-agents.js.map +0 -1
  412. package/dist/src/runtime/citations-catalog.d.ts.map +0 -1
  413. package/dist/src/runtime/citations-catalog.js.map +0 -1
  414. package/dist/src/runtime/commander-setup.d.ts.map +0 -1
  415. package/dist/src/runtime/commander-setup.js.map +0 -1
  416. package/dist/src/runtime/contracts.d.ts.map +0 -1
  417. package/dist/src/runtime/cost-tracker.d.ts.map +0 -1
  418. package/dist/src/runtime/cost-tracker.js.map +0 -1
  419. package/dist/src/runtime/departments.d.ts.map +0 -1
  420. package/dist/src/runtime/departments.js.map +0 -1
  421. package/dist/src/runtime/director.d.ts.map +0 -1
  422. package/dist/src/runtime/director.js.map +0 -1
  423. package/dist/src/runtime/economics-profile.d.ts.map +0 -1
  424. package/dist/src/runtime/economics-profile.js.map +0 -1
  425. package/dist/src/runtime/emergent-setup.d.ts.map +0 -1
  426. package/dist/src/runtime/emergent-setup.js.map +0 -1
  427. package/dist/src/runtime/generic-fingerprint.d.ts.map +0 -1
  428. package/dist/src/runtime/generic-fingerprint.js.map +0 -1
  429. package/dist/src/runtime/hexaco-cues/trajectory.d.ts.map +0 -1
  430. package/dist/src/runtime/hexaco-cues/trajectory.js.map +0 -1
  431. package/dist/src/runtime/hexaco-cues/translation.d.ts.map +0 -1
  432. package/dist/src/runtime/hexaco-cues/translation.js.map +0 -1
  433. package/dist/src/runtime/index.d.ts.map +0 -1
  434. package/dist/src/runtime/index.js.map +0 -1
  435. package/dist/src/runtime/llm-invocations/generateValidatedObject.d.ts.map +0 -1
  436. package/dist/src/runtime/llm-invocations/generateValidatedObject.js.map +0 -1
  437. package/dist/src/runtime/llm-invocations/sendAndValidate.d.ts.map +0 -1
  438. package/dist/src/runtime/llm-invocations/sendAndValidate.js.map +0 -1
  439. package/dist/src/runtime/orchestrator.d.ts.map +0 -1
  440. package/dist/src/runtime/orchestrator.js.map +0 -1
  441. package/dist/src/runtime/output-writer.d.ts.map +0 -1
  442. package/dist/src/runtime/output-writer.js.map +0 -1
  443. package/dist/src/runtime/parsers.d.ts.map +0 -1
  444. package/dist/src/runtime/parsers.js.map +0 -1
  445. package/dist/src/runtime/pricing.d.ts.map +0 -1
  446. package/dist/src/runtime/pricing.js.map +0 -1
  447. package/dist/src/runtime/provider-errors.d.ts.map +0 -1
  448. package/dist/src/runtime/provider-errors.js.map +0 -1
  449. package/dist/src/runtime/reaction-step.d.ts.map +0 -1
  450. package/dist/src/runtime/reaction-step.js.map +0 -1
  451. package/dist/src/runtime/research/knowledge-base.d.ts.map +0 -1
  452. package/dist/src/runtime/research/knowledge-base.js.map +0 -1
  453. package/dist/src/runtime/research/research-memory.d.ts.map +0 -1
  454. package/dist/src/runtime/research/research-memory.js.map +0 -1
  455. package/dist/src/runtime/research/research.d.ts.map +0 -1
  456. package/dist/src/runtime/research/research.js.map +0 -1
  457. package/dist/src/runtime/research/scenario-research.d.ts.map +0 -1
  458. package/dist/src/runtime/research/scenario-research.js.map +0 -1
  459. package/dist/src/runtime/research/scenarios.d.ts.map +0 -1
  460. package/dist/src/runtime/research/scenarios.js.map +0 -1
  461. package/dist/src/runtime/runtime-helpers.d.ts.map +0 -1
  462. package/dist/src/runtime/runtime-helpers.js.map +0 -1
  463. package/dist/src/runtime/schemas/commander.d.ts.map +0 -1
  464. package/dist/src/runtime/schemas/commander.js.map +0 -1
  465. package/dist/src/runtime/schemas/department.d.ts.map +0 -1
  466. package/dist/src/runtime/schemas/department.js.map +0 -1
  467. package/dist/src/runtime/schemas/director.d.ts.map +0 -1
  468. package/dist/src/runtime/schemas/director.js.map +0 -1
  469. package/dist/src/runtime/schemas/index.d.ts.map +0 -1
  470. package/dist/src/runtime/schemas/index.js.map +0 -1
  471. package/dist/src/runtime/schemas/reactions.d.ts.map +0 -1
  472. package/dist/src/runtime/schemas/reactions.js.map +0 -1
  473. package/dist/src/runtime/schemas/verdict.d.ts.map +0 -1
  474. package/dist/src/runtime/schemas/verdict.js.map +0 -1
  475. package/dist/src/runtime/tool-ledger.d.ts.map +0 -1
  476. package/dist/src/runtime/tool-ledger.js.map +0 -1
  477. /package/dist/{src/cli → cli}/sim-config.d.ts +0 -0
  478. /package/dist/{src/cli → cli}/sim-config.js +0 -0
  479. /package/dist/{src/cli → cli}/types.d.ts +0 -0
  480. /package/dist/{src/cli → cli}/types.js +0 -0
  481. /package/dist/{src/engine → engine}/_template/index.d.ts +0 -0
  482. /package/dist/{src/engine → engine}/_template/index.js +0 -0
  483. /package/dist/{src/engine → engine}/compiler/cache.d.ts +0 -0
  484. /package/dist/{src/engine → engine}/compiler/cache.js +0 -0
  485. /package/dist/{src/engine → engine}/compiler/generate-director.d.ts +0 -0
  486. /package/dist/{src/engine → engine}/compiler/generate-director.js +0 -0
  487. /package/dist/{src/engine → engine}/compiler/generate-fingerprint.d.ts +0 -0
  488. /package/dist/{src/engine → engine}/compiler/generate-fingerprint.js +0 -0
  489. /package/dist/{src/engine → engine}/compiler/generate-milestones.d.ts +0 -0
  490. /package/dist/{src/engine → engine}/compiler/generate-milestones.js +0 -0
  491. /package/dist/{src/engine → engine}/compiler/generate-politics.d.ts +0 -0
  492. /package/dist/{src/engine → engine}/compiler/generate-politics.js +0 -0
  493. /package/dist/{src/engine → engine}/compiler/generate-progression.d.ts +0 -0
  494. /package/dist/{src/engine → engine}/compiler/generate-progression.js +0 -0
  495. /package/dist/{src/engine → engine}/compiler/generate-prompts.d.ts +0 -0
  496. /package/dist/{src/engine → engine}/compiler/generate-prompts.js +0 -0
  497. /package/dist/{src/engine → engine}/compiler/generate-reactions.d.ts +0 -0
  498. /package/dist/{src/engine → engine}/compiler/generate-reactions.js +0 -0
  499. /package/dist/{src/engine → engine}/compiler/index.d.ts +0 -0
  500. /package/dist/{src/engine → engine}/compiler/index.js +0 -0
  501. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedCode.d.ts +0 -0
  502. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedCode.js +0 -0
  503. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedJson.d.ts +0 -0
  504. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedJson.js +0 -0
  505. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedObject.d.ts +0 -0
  506. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedObject.js +0 -0
  507. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedProse.d.ts +0 -0
  508. /package/dist/{src/engine → engine}/compiler/llm-invocations/generateValidatedProse.js +0 -0
  509. /package/dist/{src/engine → engine}/compiler/schemas/index.d.ts +0 -0
  510. /package/dist/{src/engine → engine}/compiler/schemas/index.js +0 -0
  511. /package/dist/{src/engine → engine}/compiler/schemas/milestones.d.ts +0 -0
  512. /package/dist/{src/engine → engine}/compiler/schemas/milestones.js +0 -0
  513. /package/dist/{src/engine → engine}/compiler/seed-ingestion.d.ts +0 -0
  514. /package/dist/{src/engine → engine}/compiler/seed-ingestion.js +0 -0
  515. /package/dist/{src/engine → engine}/compiler/telemetry.d.ts +0 -0
  516. /package/dist/{src/engine → engine}/compiler/telemetry.js +0 -0
  517. /package/dist/{src/engine → engine}/compiler/types.d.ts +0 -0
  518. /package/dist/{src/engine → engine}/compiler/types.js +0 -0
  519. /package/dist/{src/engine → engine}/compiler/validate.d.ts +0 -0
  520. /package/dist/{src/engine → engine}/compiler/validate.js +0 -0
  521. /package/dist/{src/engine → engine}/core/agent-generator.d.ts +0 -0
  522. /package/dist/{src/engine → engine}/core/agent-generator.js +0 -0
  523. /package/dist/{src/engine → engine}/core/kernel.d.ts +0 -0
  524. /package/dist/{src/engine → engine}/core/kernel.js +0 -0
  525. /package/dist/{src/engine → engine}/core/progression.d.ts +0 -0
  526. /package/dist/{src/engine → engine}/core/progression.js +0 -0
  527. /package/dist/{src/engine → engine}/core/rng.d.ts +0 -0
  528. /package/dist/{src/engine → engine}/core/rng.js +0 -0
  529. /package/dist/{src/engine → engine}/core/state.d.ts +0 -0
  530. /package/dist/{src/engine → engine}/core/state.js +0 -0
  531. /package/dist/{src/engine → engine}/effect-registry.d.ts +0 -0
  532. /package/dist/{src/engine → engine}/effect-registry.js +0 -0
  533. /package/dist/{src/engine → engine}/event-taxonomy.d.ts +0 -0
  534. /package/dist/{src/engine → engine}/event-taxonomy.js +0 -0
  535. /package/dist/{src/engine → engine}/lunar/effects.d.ts +0 -0
  536. /package/dist/{src/engine → engine}/lunar/effects.js +0 -0
  537. /package/dist/{src/engine → engine}/lunar/events.d.ts +0 -0
  538. /package/dist/{src/engine → engine}/lunar/events.js +0 -0
  539. /package/dist/{src/engine → engine}/lunar/fingerprint.d.ts +0 -0
  540. /package/dist/{src/engine → engine}/lunar/fingerprint.js +0 -0
  541. /package/dist/{src/engine → engine}/lunar/hooks.d.ts +0 -0
  542. /package/dist/{src/engine → engine}/lunar/hooks.js +0 -0
  543. /package/dist/{src/engine → engine}/lunar/index.d.ts +0 -0
  544. /package/dist/{src/engine → engine}/lunar/index.js +0 -0
  545. /package/dist/{src/engine → engine}/lunar/metrics.d.ts +0 -0
  546. /package/dist/{src/engine → engine}/lunar/metrics.js +0 -0
  547. /package/dist/{src/engine → engine}/lunar/milestones.d.ts +0 -0
  548. /package/dist/{src/engine → engine}/lunar/milestones.js +0 -0
  549. /package/dist/{src/engine → engine}/lunar/names.d.ts +0 -0
  550. /package/dist/{src/engine → engine}/lunar/names.js +0 -0
  551. /package/dist/{src/engine → engine}/lunar/politics.d.ts +0 -0
  552. /package/dist/{src/engine → engine}/lunar/politics.js +0 -0
  553. /package/dist/{src/engine → engine}/lunar/presets.d.ts +0 -0
  554. /package/dist/{src/engine → engine}/lunar/presets.js +0 -0
  555. /package/dist/{src/engine → engine}/lunar/progression-hooks.d.ts +0 -0
  556. /package/dist/{src/engine → engine}/lunar/progression-hooks.js +0 -0
  557. /package/dist/{src/engine → engine}/lunar/prompts.d.ts +0 -0
  558. /package/dist/{src/engine → engine}/lunar/prompts.js +0 -0
  559. /package/dist/{src/engine → engine}/lunar/reactions.d.ts +0 -0
  560. /package/dist/{src/engine → engine}/lunar/reactions.js +0 -0
  561. /package/dist/{src/engine → engine}/lunar/research-bundle.d.ts +0 -0
  562. /package/dist/{src/engine → engine}/lunar/research-bundle.js +0 -0
  563. /package/dist/{src/engine → engine}/lunar/scenario.json +0 -0
  564. /package/dist/{src/engine → engine}/mars/effects.d.ts +0 -0
  565. /package/dist/{src/engine → engine}/mars/effects.js +0 -0
  566. /package/dist/{src/engine → engine}/mars/events.d.ts +0 -0
  567. /package/dist/{src/engine → engine}/mars/events.js +0 -0
  568. /package/dist/{src/engine → engine}/mars/fingerprint.d.ts +0 -0
  569. /package/dist/{src/engine → engine}/mars/fingerprint.js +0 -0
  570. /package/dist/{src/engine → engine}/mars/hooks.d.ts +0 -0
  571. /package/dist/{src/engine → engine}/mars/hooks.js +0 -0
  572. /package/dist/{src/engine → engine}/mars/index.d.ts +0 -0
  573. /package/dist/{src/engine → engine}/mars/index.js +0 -0
  574. /package/dist/{src/engine → engine}/mars/metrics.d.ts +0 -0
  575. /package/dist/{src/engine → engine}/mars/metrics.js +0 -0
  576. /package/dist/{src/engine → engine}/mars/milestones.d.ts +0 -0
  577. /package/dist/{src/engine → engine}/mars/milestones.js +0 -0
  578. /package/dist/{src/engine → engine}/mars/names.d.ts +0 -0
  579. /package/dist/{src/engine → engine}/mars/names.js +0 -0
  580. /package/dist/{src/engine → engine}/mars/politics.d.ts +0 -0
  581. /package/dist/{src/engine → engine}/mars/politics.js +0 -0
  582. /package/dist/{src/engine → engine}/mars/presets.d.ts +0 -0
  583. /package/dist/{src/engine → engine}/mars/presets.js +0 -0
  584. /package/dist/{src/engine → engine}/mars/progression-hooks.d.ts +0 -0
  585. /package/dist/{src/engine → engine}/mars/progression-hooks.js +0 -0
  586. /package/dist/{src/engine → engine}/mars/prompts.d.ts +0 -0
  587. /package/dist/{src/engine → engine}/mars/prompts.js +0 -0
  588. /package/dist/{src/engine → engine}/mars/reactions.d.ts +0 -0
  589. /package/dist/{src/engine → engine}/mars/reactions.js +0 -0
  590. /package/dist/{src/engine → engine}/mars/research-bundle.d.ts +0 -0
  591. /package/dist/{src/engine → engine}/mars/research-bundle.js +0 -0
  592. /package/dist/{src/engine → engine}/mars/scenario.json +0 -0
  593. /package/dist/{src/engine → engine}/metric-registry.d.ts +0 -0
  594. /package/dist/{src/engine → engine}/metric-registry.js +0 -0
  595. /package/dist/{src/engine → engine}/provider-resolver.d.ts +0 -0
  596. /package/dist/{src/engine → engine}/types.d.ts +0 -0
  597. /package/dist/{src/engine → engine}/types.js +0 -0
  598. /package/dist/{src/runtime → runtime}/agent-memory.d.ts +0 -0
  599. /package/dist/{src/runtime → runtime}/agent-memory.js +0 -0
  600. /package/dist/{src/runtime → runtime}/agent-reactions.d.ts +0 -0
  601. /package/dist/{src/runtime → runtime}/agent-reactions.js +0 -0
  602. /package/dist/{src/runtime → runtime}/batch.d.ts +0 -0
  603. /package/dist/{src/runtime → runtime}/batch.js +0 -0
  604. /package/dist/{src/runtime → runtime}/chat-agents.d.ts +0 -0
  605. /package/dist/{src/runtime → runtime}/chat-agents.js +0 -0
  606. /package/dist/{src/runtime → runtime}/citations-catalog.d.ts +0 -0
  607. /package/dist/{src/runtime → runtime}/citations-catalog.js +0 -0
  608. /package/dist/{src/runtime → runtime}/commander-setup.d.ts +0 -0
  609. /package/dist/{src/runtime → runtime}/commander-setup.js +0 -0
  610. /package/dist/{src/runtime → runtime}/contracts.d.ts +0 -0
  611. /package/dist/{src/runtime → runtime}/contracts.js +0 -0
  612. /package/dist/{src/runtime → runtime}/cost-tracker.d.ts +0 -0
  613. /package/dist/{src/runtime → runtime}/cost-tracker.js +0 -0
  614. /package/dist/{src/runtime → runtime}/departments.d.ts +0 -0
  615. /package/dist/{src/runtime → runtime}/departments.js +0 -0
  616. /package/dist/{src/runtime → runtime}/director.d.ts +0 -0
  617. /package/dist/{src/runtime → runtime}/director.js +0 -0
  618. /package/dist/{src/runtime → runtime}/economics-profile.d.ts +0 -0
  619. /package/dist/{src/runtime → runtime}/economics-profile.js +0 -0
  620. /package/dist/{src/runtime → runtime}/emergent-setup.d.ts +0 -0
  621. /package/dist/{src/runtime → runtime}/emergent-setup.js +0 -0
  622. /package/dist/{src/runtime → runtime}/generic-fingerprint.d.ts +0 -0
  623. /package/dist/{src/runtime → runtime}/generic-fingerprint.js +0 -0
  624. /package/dist/{src/runtime → runtime}/hexaco-cues/trajectory.d.ts +0 -0
  625. /package/dist/{src/runtime → runtime}/hexaco-cues/trajectory.js +0 -0
  626. /package/dist/{src/runtime → runtime}/hexaco-cues/translation.d.ts +0 -0
  627. /package/dist/{src/runtime → runtime}/hexaco-cues/translation.js +0 -0
  628. /package/dist/{src/runtime → runtime}/index.d.ts +0 -0
  629. /package/dist/{src/runtime → runtime}/index.js +0 -0
  630. /package/dist/{src/runtime → runtime}/llm-invocations/generateValidatedObject.d.ts +0 -0
  631. /package/dist/{src/runtime → runtime}/llm-invocations/generateValidatedObject.js +0 -0
  632. /package/dist/{src/runtime → runtime}/llm-invocations/sendAndValidate.d.ts +0 -0
  633. /package/dist/{src/runtime → runtime}/llm-invocations/sendAndValidate.js +0 -0
  634. /package/dist/{src/runtime → runtime}/orchestrator.d.ts +0 -0
  635. /package/dist/{src/runtime → runtime}/orchestrator.js +0 -0
  636. /package/dist/{src/runtime → runtime}/output-writer.d.ts +0 -0
  637. /package/dist/{src/runtime → runtime}/output-writer.js +0 -0
  638. /package/dist/{src/runtime → runtime}/parsers.d.ts +0 -0
  639. /package/dist/{src/runtime → runtime}/parsers.js +0 -0
  640. /package/dist/{src/runtime → runtime}/pricing.d.ts +0 -0
  641. /package/dist/{src/runtime → runtime}/pricing.js +0 -0
  642. /package/dist/{src/runtime → runtime}/provider-errors.d.ts +0 -0
  643. /package/dist/{src/runtime → runtime}/provider-errors.js +0 -0
  644. /package/dist/{src/runtime → runtime}/reaction-step.d.ts +0 -0
  645. /package/dist/{src/runtime → runtime}/reaction-step.js +0 -0
  646. /package/dist/{src/runtime → runtime}/research/knowledge-base.d.ts +0 -0
  647. /package/dist/{src/runtime → runtime}/research/knowledge-base.js +0 -0
  648. /package/dist/{src/runtime → runtime}/research/research-memory.d.ts +0 -0
  649. /package/dist/{src/runtime → runtime}/research/research-memory.js +0 -0
  650. /package/dist/{src/runtime → runtime}/research/research.d.ts +0 -0
  651. /package/dist/{src/runtime → runtime}/research/research.js +0 -0
  652. /package/dist/{src/runtime → runtime}/research/scenario-research.d.ts +0 -0
  653. /package/dist/{src/runtime → runtime}/research/scenario-research.js +0 -0
  654. /package/dist/{src/runtime → runtime}/research/scenarios.d.ts +0 -0
  655. /package/dist/{src/runtime → runtime}/research/scenarios.js +0 -0
  656. /package/dist/{src/runtime → runtime}/runtime-helpers.d.ts +0 -0
  657. /package/dist/{src/runtime → runtime}/runtime-helpers.js +0 -0
  658. /package/dist/{src/runtime → runtime}/schemas/commander.d.ts +0 -0
  659. /package/dist/{src/runtime → runtime}/schemas/commander.js +0 -0
  660. /package/dist/{src/runtime → runtime}/schemas/department.d.ts +0 -0
  661. /package/dist/{src/runtime → runtime}/schemas/department.js +0 -0
  662. /package/dist/{src/runtime → runtime}/schemas/director.d.ts +0 -0
  663. /package/dist/{src/runtime → runtime}/schemas/director.js +0 -0
  664. /package/dist/{src/runtime → runtime}/schemas/index.d.ts +0 -0
  665. /package/dist/{src/runtime → runtime}/schemas/index.js +0 -0
  666. /package/dist/{src/runtime → runtime}/schemas/reactions.d.ts +0 -0
  667. /package/dist/{src/runtime → runtime}/schemas/reactions.js +0 -0
  668. /package/dist/{src/runtime → runtime}/schemas/verdict.d.ts +0 -0
  669. /package/dist/{src/runtime → runtime}/schemas/verdict.js +0 -0
  670. /package/dist/{src/runtime → runtime}/tool-ledger.d.ts +0 -0
  671. /package/dist/{src/runtime → runtime}/tool-ledger.js +0 -0
@@ -0,0 +1,93 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ function isRecord(value) {
4
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
5
+ }
6
+ function hasString(value, key) {
7
+ return typeof value[key] === 'string' && value[key].length > 0;
8
+ }
9
+ function hasNumber(value, key) {
10
+ return typeof value[key] === 'number' && Number.isFinite(value[key]);
11
+ }
12
+ export function isRunnableScenarioPackage(value) {
13
+ if (!isRecord(value))
14
+ return false;
15
+ if (!hasString(value, 'id') || !hasString(value, 'version'))
16
+ return false;
17
+ if (value.engineArchetype !== 'closed_turn_based_settlement')
18
+ return false;
19
+ const labels = value.labels;
20
+ const theme = value.theme;
21
+ const setup = value.setup;
22
+ const world = value.world;
23
+ const ui = value.ui;
24
+ const policies = value.policies;
25
+ const hooks = value.hooks;
26
+ if (!isRecord(labels))
27
+ return false;
28
+ if (!hasString(labels, 'name') || !hasString(labels, 'shortName') || !hasString(labels, 'populationNoun') || !hasString(labels, 'settlementNoun') || !hasString(labels, 'currency'))
29
+ return false;
30
+ if (!isRecord(theme))
31
+ return false;
32
+ if (!hasString(theme, 'primaryColor') || !hasString(theme, 'accentColor') || !isRecord(theme.cssVariables))
33
+ return false;
34
+ if (!isRecord(setup))
35
+ return false;
36
+ if (!hasNumber(setup, 'defaultTurns') || !hasNumber(setup, 'defaultSeed') || !hasNumber(setup, 'defaultStartYear') || !hasNumber(setup, 'defaultPopulation') || !Array.isArray(setup.configurableSections))
37
+ return false;
38
+ if (!isRecord(world) || !isRecord(world.metrics) || !isRecord(world.capacities) || !isRecord(world.statuses) || !isRecord(world.politics) || !isRecord(world.environment))
39
+ return false;
40
+ if (!Array.isArray(value.departments) || !Array.isArray(value.metrics) || !Array.isArray(value.events) || !Array.isArray(value.effects) || !Array.isArray(value.presets))
41
+ return false;
42
+ if (!isRecord(ui))
43
+ return false;
44
+ if (!Array.isArray(ui.headerMetrics) || !Array.isArray(ui.tooltipFields) || !Array.isArray(ui.reportSections) || !isRecord(ui.departmentIcons) || !isRecord(ui.eventRenderers) || !Array.isArray(ui.setupSections))
45
+ return false;
46
+ if (!isRecord(policies))
47
+ return false;
48
+ if (!isRecord(policies.toolForging) || typeof policies.toolForging.enabled !== 'boolean')
49
+ return false;
50
+ if (!isRecord(policies.liveSearch) || typeof policies.liveSearch.enabled !== 'boolean' || typeof policies.liveSearch.mode !== 'string')
51
+ return false;
52
+ if (!isRecord(policies.bulletin) || typeof policies.bulletin.enabled !== 'boolean')
53
+ return false;
54
+ if (!isRecord(policies.characterChat) || typeof policies.characterChat.enabled !== 'boolean')
55
+ return false;
56
+ if (!isRecord(policies.sandbox) || !hasNumber(policies.sandbox, 'timeoutMs') || !hasNumber(policies.sandbox, 'memoryMB'))
57
+ return false;
58
+ if (!isRecord(value.knowledge) || !isRecord(value.knowledge.topics) || !isRecord(value.knowledge.categoryMapping))
59
+ return false;
60
+ if (!isRecord(hooks))
61
+ return false;
62
+ return true;
63
+ }
64
+ export function loadDiskCustomScenarios(scenarioDir) {
65
+ const catalog = new Map();
66
+ if (!existsSync(scenarioDir))
67
+ return catalog;
68
+ for (const entry of readdirSync(scenarioDir, { withFileTypes: true })) {
69
+ if (!entry.isFile() || !entry.name.endsWith('.json'))
70
+ continue;
71
+ const filePath = resolve(scenarioDir, entry.name);
72
+ try {
73
+ const parsed = JSON.parse(readFileSync(filePath, 'utf-8'));
74
+ if (!isRunnableScenarioPackage(parsed))
75
+ continue;
76
+ catalog.set(parsed.id, { scenario: parsed, source: 'disk' });
77
+ }
78
+ catch {
79
+ // Ignore unreadable or invalid custom scenario files at boot.
80
+ }
81
+ }
82
+ return catalog;
83
+ }
84
+ export function describeCustomScenarioSource(source) {
85
+ if (source === 'builtin')
86
+ return 'Built-in scenario';
87
+ if (source === 'disk')
88
+ return 'Custom scenario (disk)';
89
+ if (source === 'compiled')
90
+ return 'Custom compiled scenario';
91
+ return 'Custom scenario (memory)';
92
+ }
93
+ //# sourceMappingURL=custom-scenarios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-scenarios.js","sourceRoot":"","sources":["../../src/cli/custom-scenarios.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { LeaderConfig } from './types.js';
2
+ export interface ResolvedLeaders {
3
+ leaders: LeaderConfig[];
4
+ /** Absolute path of the file the leaders were read from. Surfaces
5
+ * in CLI output so users know which file is actually in use. */
6
+ sourcePath: string;
7
+ /** Marker for whether the source was the shipped example (we
8
+ * want to print a hint nudging users to create their own). */
9
+ isExample: boolean;
10
+ }
11
+ /**
12
+ * Walks the candidate paths and loads the first `leaders.json` that
13
+ * exists. Throws only when nothing (not even the bundled example)
14
+ * is available — which would indicate a broken install.
15
+ */
16
+ export declare function resolveLeaders(options?: {
17
+ explicitPath?: string;
18
+ }): ResolvedLeaders;
19
+ /**
20
+ * Pulls `--leaders <path>` out of argv WITHOUT mutating the array.
21
+ * Returns undefined when the flag isn't present. Kept separate from
22
+ * the main CLI parser so run.ts / serve.ts can resolve leaders the
23
+ * same way without duplicating flag logic.
24
+ */
25
+ export declare function parseLeadersFlag(args: readonly string[]): string | undefined;
26
+ //# sourceMappingURL=leaders-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaders-resolver.d.ts","sourceRoot":"","sources":["../../src/cli/leaders-resolver.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB;qEACiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB;mEAC+D;IAC/D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,CAwBvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAM5E"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Resolve the active `leaders.json` for a paracosm CLI invocation.
3
+ *
4
+ * Search order (first match wins):
5
+ * 1. --leaders <path> CLI flag (explicit path)
6
+ * 2. $CWD/leaders.json (user's project root)
7
+ * 3. $CWD/config/leaders.json (user's config dir)
8
+ * 4. <package>/config/leaders.json (paracosm-shipped fallback)
9
+ * 5. <package>/config/leaders.example.json (last-resort default)
10
+ *
11
+ * Covers three consumer shapes:
12
+ * - Repo clone: users edit config/leaders.json at the repo root.
13
+ * - npm install: users drop leaders.json (or config/leaders.json)
14
+ * into their project CWD.
15
+ * - npx one-off: falls back to the bundled example so `npx
16
+ * paracosm` Just Works even before the user writes any config.
17
+ *
18
+ * @module paracosm/cli/leaders-resolver
19
+ */
20
+ import { readFileSync, existsSync } from 'node:fs';
21
+ import { resolve, dirname } from 'node:path';
22
+ import { fileURLToPath } from 'node:url';
23
+ const __filename = fileURLToPath(import.meta.url);
24
+ const __dirname = dirname(__filename);
25
+ /**
26
+ * Walks the candidate paths and loads the first `leaders.json` that
27
+ * exists. Throws only when nothing (not even the bundled example)
28
+ * is available — which would indicate a broken install.
29
+ */
30
+ export function resolveLeaders(options = {}) {
31
+ const cwd = process.cwd();
32
+ const packageRoot = resolve(__dirname, '..', '..');
33
+ const candidates = [];
34
+ if (options.explicitPath) {
35
+ candidates.push({ path: resolve(cwd, options.explicitPath), isExample: false });
36
+ }
37
+ candidates.push({ path: resolve(cwd, 'leaders.json'), isExample: false });
38
+ candidates.push({ path: resolve(cwd, 'config', 'leaders.json'), isExample: false });
39
+ candidates.push({ path: resolve(packageRoot, 'config', 'leaders.json'), isExample: false });
40
+ candidates.push({ path: resolve(packageRoot, 'config', 'leaders.example.json'), isExample: true });
41
+ for (const { path, isExample } of candidates) {
42
+ if (!existsSync(path))
43
+ continue;
44
+ const raw = JSON.parse(readFileSync(path, 'utf-8'));
45
+ const leaders = Array.isArray(raw.leaders) ? raw.leaders : [];
46
+ return { leaders, sourcePath: path, isExample };
47
+ }
48
+ throw new Error(`paracosm: no leaders.json found. Create one at ${resolve(cwd, 'config', 'leaders.json')} ` +
49
+ `or pass --leaders <path>. A starter template lives at ${resolve(packageRoot, 'config', 'leaders.example.json')}.`);
50
+ }
51
+ /**
52
+ * Pulls `--leaders <path>` out of argv WITHOUT mutating the array.
53
+ * Returns undefined when the flag isn't present. Kept separate from
54
+ * the main CLI parser so run.ts / serve.ts can resolve leaders the
55
+ * same way without duplicating flag logic.
56
+ */
57
+ export function parseLeadersFlag(args) {
58
+ const idx = args.indexOf('--leaders');
59
+ if (idx < 0)
60
+ return undefined;
61
+ const next = args[idx + 1];
62
+ if (!next || next.startsWith('--'))
63
+ return undefined;
64
+ return next;
65
+ }
66
+ //# sourceMappingURL=leaders-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaders-resolver.js","sourceRoot":"","sources":["../../src/cli/leaders-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAYtC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAqC,EAAE;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAgD,EAAE,CAAC;IAEnE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnG,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAiC,CAAC;QACpF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,GAAG;QAC3F,yDAAyD,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CACnH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type NormalizedSimulationConfig } from './sim-config.js';
2
+ import type { ScenarioPackage } from '../engine/types.js';
3
+ export type BroadcastFn = (event: string, data: unknown) => void;
4
+ export declare function runPairSimulations(simConfig: NormalizedSimulationConfig, broadcast: BroadcastFn,
5
+ /**
6
+ * Optional cancellation signal. When the server's disconnect watchdog
7
+ * trips (all SSE clients gone + grace period expired), it aborts this
8
+ * signal. Both leaders' runSimulation calls check it at turn
9
+ * boundaries and short-circuit cleanly, emitting a `sim_aborted`
10
+ * event and returning partial results. The event buffer is preserved
11
+ * so a returning user sees everything up to the cancel point.
12
+ */
13
+ signal?: AbortSignal,
14
+ /**
15
+ * Scenario to run. Defaults to Mars Genesis when omitted so CLI
16
+ * callers that don't thread a scenario still work. The server path
17
+ * passes the currently-active scenario (set by /compile or
18
+ * /scenario/switch) so custom-compiled scenarios (e.g. "Brain Sim")
19
+ * actually get their own hooks + labels run instead of silently
20
+ * falling back to Mars while the page title shows the custom name.
21
+ */
22
+ scenario?: ScenarioPackage): Promise<void>;
23
+ //# sourceMappingURL=pair-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pair-runner.d.ts","sourceRoot":"","sources":["../../src/cli/pair-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAIzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAyBjE,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,0BAA0B,EACrC,SAAS,EAAE,WAAW;AACtB;;;;;;;GAOG;AACH,MAAM,CAAC,EAAE,WAAW;AACpB;;;;;;;GAOG;AACH,QAAQ,GAAE,eAA8B,GACvC,OAAO,CAAC,IAAI,CAAC,CA2Lf"}
@@ -0,0 +1,225 @@
1
+ import { DEFAULT_KEY_PERSONNEL } from './sim-config.js';
2
+ import { marsScenario } from '../engine/mars/index.js';
3
+ import { generateValidatedObject } from '../runtime/llm-invocations/generateValidatedObject.js';
4
+ import { VerdictSchema } from '../runtime/schemas/verdict.js';
5
+ function resolveVerdictModel(provider, economics) {
6
+ switch (economics.verdict.mode) {
7
+ case 'skip':
8
+ return null;
9
+ case 'cheap':
10
+ return provider === 'anthropic'
11
+ ? 'claude-haiku-4-5-20251001'
12
+ : 'gpt-5.4-mini';
13
+ case 'flagship':
14
+ return provider === 'anthropic'
15
+ ? 'claude-opus-4-7'
16
+ : 'gpt-5.4-pro';
17
+ case 'balanced':
18
+ default:
19
+ return provider === 'anthropic'
20
+ ? 'claude-sonnet-4-6'
21
+ : 'gpt-5.4';
22
+ }
23
+ }
24
+ export async function runPairSimulations(simConfig, broadcast,
25
+ /**
26
+ * Optional cancellation signal. When the server's disconnect watchdog
27
+ * trips (all SSE clients gone + grace period expired), it aborts this
28
+ * signal. Both leaders' runSimulation calls check it at turn
29
+ * boundaries and short-circuit cleanly, emitting a `sim_aborted`
30
+ * event and returning partial results. The event buffer is preserved
31
+ * so a returning user sees everything up to the cancel point.
32
+ */
33
+ signal,
34
+ /**
35
+ * Scenario to run. Defaults to Mars Genesis when omitted so CLI
36
+ * callers that don't thread a scenario still work. The server path
37
+ * passes the currently-active scenario (set by /compile or
38
+ * /scenario/switch) so custom-compiled scenarios (e.g. "Brain Sim")
39
+ * actually get their own hooks + labels run instead of silently
40
+ * falling back to Mars while the page title shows the custom name.
41
+ */
42
+ scenario = marsScenario) {
43
+ const { leaders, turns, seed, startYear, liveSearch, customEvents } = simConfig;
44
+ broadcast('status', { phase: 'starting', maxTurns: turns, customEvents });
45
+ const { runSimulation } = await import('../runtime/orchestrator.js');
46
+ const onEvent = (event) => broadcast('sim', event);
47
+ broadcast('status', {
48
+ phase: 'parallel',
49
+ leaders: leaders.map(leader => ({
50
+ name: leader.name,
51
+ archetype: leader.archetype,
52
+ colony: leader.colony,
53
+ hexaco: leader.hexaco,
54
+ })),
55
+ });
56
+ console.log(` Running: ${leaders[0].name} vs ${leaders[1].name} | ${turns} turns | seed ${seed}\n`);
57
+ const results = await Promise.allSettled(leaders.map((leader, index) => {
58
+ const tag = leader.archetype.toLowerCase().replace(/^the\s+/, '').replace(/\s+/g, '-') || `leader-${index}`;
59
+ return runSimulation(leader, simConfig.keyPersonnel ?? DEFAULT_KEY_PERSONNEL, {
60
+ maxTurns: turns,
61
+ seed,
62
+ startYear,
63
+ yearsPerTurn: simConfig.yearsPerTurn,
64
+ liveSearch,
65
+ activeDepartments: simConfig.activeDepartments,
66
+ onEvent,
67
+ customEvents,
68
+ provider: simConfig.provider,
69
+ models: simConfig.models,
70
+ economics: simConfig.economics,
71
+ initialPopulation: simConfig.initialPopulation,
72
+ startingResources: simConfig.startingResources,
73
+ startingPolitics: simConfig.startingPolitics,
74
+ execution: simConfig.execution,
75
+ scenario,
76
+ signal,
77
+ }).then(result => {
78
+ broadcast('result', {
79
+ leader: tag,
80
+ summary: {
81
+ population: result.finalState?.colony?.population,
82
+ morale: result.finalState?.colony?.morale,
83
+ toolsForged: result.totalToolsForged,
84
+ citations: result.totalCitations,
85
+ },
86
+ fingerprint: result.fingerprint || null,
87
+ });
88
+ return { tag, leader, result };
89
+ }, error => {
90
+ broadcast('sim_error', { leader: tag, error: String(error) });
91
+ throw error;
92
+ });
93
+ }));
94
+ // Generate final verdict comparing both leaders
95
+ const settled = results.filter(r => r.status === 'fulfilled').map(r => r.value);
96
+ // Skip verdict generation when EITHER leader was cancelled externally
97
+ // (user navigated away → server pulled the plug) or hit a terminal
98
+ // provider error. Running the verdict LLM call on partial data would
99
+ // burn an extra flagship call for a comparison that doesn't mean
100
+ // anything on incomplete runs. The dashboard shows the "Unfinished"
101
+ // badge in place of the verdict card.
102
+ const anyAborted = settled.some(v => v.result?.aborted === true || v.result?.providerError);
103
+ if (anyAborted) {
104
+ broadcast('complete', { timestamp: new Date().toISOString(), aborted: true });
105
+ return;
106
+ }
107
+ if (settled.length === 2) {
108
+ try {
109
+ const [a, b] = settled;
110
+ const colA = a.result.finalState?.colony;
111
+ const colB = b.result.finalState?.colony;
112
+ const verdictModel = resolveVerdictModel(simConfig.provider || 'openai', simConfig.economics);
113
+ if (!verdictModel) {
114
+ broadcast('complete', {
115
+ timestamp: new Date().toISOString(),
116
+ verdictSkipped: true,
117
+ economicsProfile: simConfig.economics.id,
118
+ });
119
+ return;
120
+ }
121
+ // Build a richer per-leader summary including innovation telemetry
122
+ // (forged toolbox details, fingerprint classification) so the LLM
123
+ // verdict actually reasons about emergent tool use, not just final
124
+ // colony numbers.
125
+ const formatLeader = (label, v, col) => {
126
+ const fp = v.result.fingerprint || {};
127
+ const toolbox = v.result.forgedToolbox || [];
128
+ const topTools = toolbox.slice(0, 5).map((t) => `${t.name}(${t.firstForgedDepartment}, reused ${t.reuseCount}x)`).join('; ');
129
+ // Cause-of-death breakdown. Each death in the event log carries
130
+ // an attributed cause (natural, radiation cancer, starvation,
131
+ // despair, fatal fracture, accident). Roll up for the verdict
132
+ // prompt so the LLM can reason about HOW colonists died, not
133
+ // just how many — a Mars colony losing 5 to radiation reads
134
+ // very differently from losing 5 to accidents.
135
+ const deathEvents = (v.result.finalState?.eventLog ?? []).filter((e) => e.type === 'death');
136
+ const causeCounts = {};
137
+ for (const d of deathEvents) {
138
+ const raw = d.cause ?? 'unknown';
139
+ const key = raw.startsWith('accident:') ? 'accident' : raw;
140
+ causeCounts[key] = (causeCounts[key] ?? 0) + 1;
141
+ }
142
+ const causeSummary = Object.keys(causeCounts).length > 0
143
+ ? Object.entries(causeCounts).sort((a, b) => b[1] - a[1]).map(([k, n]) => `${n} ${k}`).join(', ')
144
+ : 'no deaths';
145
+ return [
146
+ `${label}: ${v.leader.name} "${v.leader.archetype}" (${v.leader.colony})`,
147
+ ` HEXACO: O${v.leader.hexaco.openness.toFixed(2)} C${v.leader.hexaco.conscientiousness.toFixed(2)} E${v.leader.hexaco.extraversion.toFixed(2)} A${v.leader.hexaco.agreeableness.toFixed(2)} Em${v.leader.hexaco.emotionality.toFixed(2)} HH${v.leader.hexaco.honestyHumility.toFixed(2)}`,
148
+ ` Final: Pop ${col?.population ?? '?'}, Morale ${Math.round((col?.morale ?? 0) * 100)}%, Food ${col?.foodMonthsReserve?.toFixed(1) ?? '?'}mo, Power ${col?.powerKw?.toFixed(0) ?? '?'}kW, Modules ${col?.infrastructureModules?.toFixed(1) ?? '?'}, Science ${col?.scienceOutput ?? '?'}`,
149
+ ` Mortality: ${deathEvents.length} total (${causeSummary})`,
150
+ ` Innovation: ${toolbox.length} unique tools forged (${fp.innovation || 'n/a'}), citations ${v.result.totalCitations}`,
151
+ topTools ? ` Top tools: ${topTools}` : ' No tools forged',
152
+ ` Fingerprint: ${fp.summary || 'n/a'}`,
153
+ ` Cost: $${v.result.cost?.totalCostUSD?.toFixed(4) ?? '?'} over ${v.result.cost?.llmCalls ?? '?'} LLM calls`,
154
+ ].join('\n');
155
+ };
156
+ // Verdict runs once per completed sim and is the single most
157
+ // user-facing synthesis call in the pipeline: it reads both
158
+ // final states, the per-leader cause-of-death breakdown, the
159
+ // forged toolbox, and writes the headline + summary that the
160
+ // user sees first when the run finishes. Cheap-tier output on
161
+ // this call was noticeably flatter than flagship output, so
162
+ // pay the ~$0.02-0.05 per run for the better read.
163
+ try {
164
+ const { object: verdict, fromFallback } = await generateValidatedObject({
165
+ provider: simConfig.provider || 'openai',
166
+ model: verdictModel,
167
+ schema: VerdictSchema,
168
+ schemaName: 'Verdict',
169
+ prompt: `You are judging a colony simulation. Two AI commanders with opposing HEXACO personality profiles led identical colonies through ${turns} turns from the same starting conditions and deterministic seed. Your job is to write a verdict that explains WHY the runs diverged the way they did, not just WHO won.
170
+
171
+ ${formatLeader('LEADER A', a, colA)}
172
+
173
+ ${formatLeader('LEADER B', b, colB)}
174
+
175
+ TRADEOFFS TO WEIGH
176
+ Tool forging is a cost / capability tradeoff: every forged tool spent a judge LLM call and ate analyst attention; failed forges hurt morale and produced no reusable capability; successful tools let later decisions reason about concrete numbers. A leader who built few tools and reused them many times has a disciplined, cost-efficient signature. A leader who forged many novel tools has an exploratory signature with broader capability surface. Both are valid strategies and your scoring should reflect that trade, not punish either extreme.
177
+
178
+ Mortality is a cause-specific signal, not a number. The "Mortality" line above names HOW each colonist died. A leader who lost 5 to starvation made different resource-allocation decisions than a leader who lost 5 to radiation cancer; a leader with despair deaths presided over a colony in psychological freefall. Reference the specific causes when they shape the story.
179
+
180
+ REASONING — populate the "reasoning" field of your JSON response with a numbered list covering:
181
+ (1) Population trajectory — how did each colony's population evolve, and which tradeoffs produced that shape?
182
+ (2) Morale + psychological state — which leader's colony held together emotionally, and what does that say about HEXACO + decision style?
183
+ (3) Resource efficiency — food, power, infrastructure — which side ran leaner, which hit crises?
184
+ (4) Innovation signature — tools forged vs reused, breadth vs depth. What does each leader's toolbox say about their cognition?
185
+ (5) Mortality story — which causes dominated each side, and what does THAT say about the leader's priorities?
186
+ (6) The single most impactful divergence — resource decision, crisis response, tool strategy, or emergent behavior. Name it precisely.
187
+ (7) Weighing the tradeoffs, who won and why.
188
+
189
+ Then fill out:
190
+ winner: "A" or "B" or "tie"
191
+ winnerName: the winning leader's name, or "Tie" for a tie
192
+ headline: one-line verdict grounded in the key divergence (max 80 chars)
193
+ summary: 2-3 sentences naming the personality + tool-use + mortality pattern that drove the divergence
194
+ keyDivergence: the single most impactful difference between the two runs
195
+ scores: { a: { survival, prosperity, morale, innovation }, b: { survival, prosperity, morale, innovation } } — each 0-10`,
196
+ });
197
+ if (fromFallback) {
198
+ console.log(' Verdict schema fallback; skipping broadcast');
199
+ }
200
+ else {
201
+ broadcast('verdict', {
202
+ ...verdict,
203
+ leaderA: { name: a.leader.name, archetype: a.leader.archetype, colony: a.leader.colony },
204
+ leaderB: { name: b.leader.name, archetype: b.leader.archetype, colony: b.leader.colony },
205
+ finalStats: {
206
+ a: { population: colA?.population, morale: colA?.morale, food: colA?.foodMonthsReserve, power: colA?.powerKw, modules: colA?.infrastructureModules, science: colA?.scienceOutput, tools: a.result.totalToolsForged },
207
+ b: { population: colB?.population, morale: colB?.morale, food: colB?.foodMonthsReserve, power: colB?.powerKw, modules: colB?.infrastructureModules, science: colB?.scienceOutput, tools: b.result.totalToolsForged },
208
+ },
209
+ });
210
+ console.log(`\n VERDICT: ${verdict.headline}`);
211
+ console.log(` Winner: ${verdict.winnerName} (${verdict.winner})`);
212
+ console.log(` ${verdict.summary}\n`);
213
+ }
214
+ }
215
+ catch (verdictErr) {
216
+ console.log(' Verdict generation failed:', verdictErr);
217
+ }
218
+ }
219
+ catch (outerErr) {
220
+ console.log(' Verdict outer failure:', outerErr);
221
+ }
222
+ }
223
+ broadcast('complete', { timestamp: new Date().toISOString() });
224
+ }
225
+ //# sourceMappingURL=pair-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pair-runner.js","sourceRoot":"","sources":["../../src/cli/pair-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAmC,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAM9D,SAAS,mBAAmB,CAC1B,QAAgC,EAChC,SAAmC;IAEnC,QAAQ,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,QAAQ,KAAK,WAAW;gBAC7B,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,cAAc,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,QAAQ,KAAK,WAAW;gBAC7B,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,aAAa,CAAC;QACpB,KAAK,UAAU,CAAC;QAChB;YACE,OAAO,QAAQ,KAAK,WAAW;gBAC7B,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,SAAS,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAqC,EACrC,SAAsB;AACtB;;;;;;;GAOG;AACH,MAAoB;AACpB;;;;;;;GAOG;AACH,WAA4B,YAAY;IAExC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAChF,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAE1E,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,SAAS,CAAC,QAAQ,EAAE;QAClB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,iBAAiB,IAAI,IAAI,CAAC,CAAC;IAErG,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC;QAC5G,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,IAAI,qBAAqB,EAAE;YAC5E,QAAQ,EAAE,KAAK;YACf,IAAI;YACJ,SAAS;YACT,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,UAAU;YACV,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,OAAO;YACP,YAAY;YACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,QAAQ;YACR,MAAM;SACP,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACf,SAAS,CAAC,QAAQ,EAAE;gBAClB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACP,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU;oBACjD,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM;oBACzC,WAAW,EAAE,MAAM,CAAC,gBAAgB;oBACpC,SAAS,EAAE,MAAM,CAAC,cAAc;iBACjC;gBACD,WAAW,EAAG,MAAc,CAAC,WAAW,IAAI,IAAI;aACjD,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjC,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,CAAC;IAEJ,gDAAgD;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAiC,CAAC,KAAK,CAAC,CAAC;IAEjH,sEAAsE;IACtE,mEAAmE;IACnE,qEAAqE;IACrE,iEAAiE;IACjE,oEAAoE;IACpE,sCAAsC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,MAAc,EAAE,OAAO,KAAK,IAAI,IAAK,CAAC,CAAC,MAAc,EAAE,aAAa,CAAC,CAAC;IAC9G,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;YACzC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;YACzC,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,QAAQ,IAAI,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YAC9F,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,SAAS,CAAC,UAAU,EAAE;oBACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,cAAc,EAAE,IAAI;oBACpB,gBAAgB,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE;iBACzC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,mEAAmE;YACnE,kEAAkE;YAClE,mEAAmE;YACnE,kBAAkB;YAClB,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,CAAM,EAAE,GAAQ,EAAE,EAAE;gBACvD,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,qBAAqB,YAAY,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClI,gEAAgE;gBAChE,8DAA8D;gBAC9D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,4DAA4D;gBAC5D,+CAA+C;gBAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBACjG,MAAM,WAAW,GAA2B,EAAE,CAAC;gBAC/C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAI,CAAC,CAAC,KAA4B,IAAI,SAAS,CAAC;oBACzD,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC3D,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;oBACtD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjG,CAAC,CAAC,WAAW,CAAC;gBAChB,OAAO;oBACL,GAAG,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG;oBACzE,cAAc,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAC1R,gBAAgB,GAAG,EAAE,UAAU,IAAI,GAAG,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,GAAG,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,aAAa,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,eAAe,GAAG,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,aAAa,GAAG,EAAE,aAAa,IAAI,GAAG,EAAE;oBAC1R,gBAAgB,WAAW,CAAC,MAAM,WAAW,YAAY,GAAG;oBAC5D,iBAAiB,OAAO,CAAC,MAAM,yBAAyB,EAAE,CAAC,UAAU,IAAI,KAAK,gBAAgB,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE;oBACvH,QAAQ,CAAC,CAAC,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC,mBAAmB;oBAC3D,kBAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,EAAE;oBACvC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,GAAG,YAAY;iBAC9G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CAAC;YAEF,6DAA6D;YAC7D,4DAA4D;YAC5D,6DAA6D;YAC7D,6DAA6D;YAC7D,8DAA8D;YAC9D,4DAA4D;YAC5D,mDAAmD;YACnD,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,uBAAuB,CAAC;oBACtE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,QAAQ;oBACxC,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,SAAS;oBACrB,MAAM,EAAE,mIAAmI,KAAK;;EAExJ,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC;;EAEjC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;2HAsBwF;iBAClH,CAAC,CAAC;gBACH,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;gBAC/D,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,SAAS,EAAE;wBACnB,GAAG,OAAO;wBACV,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;wBACxF,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;wBACxF,UAAU,EAAE;4BACV,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE;4BACpN,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE;yBACrN;qBACF,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * IP-based rate limiter with optional JSON-file persistence.
3
+ *
4
+ * Extracted from server-app.ts so the quota machinery can be unit-tested
5
+ * without spinning up the whole HTTP server and so createMarsServer reads
6
+ * more like a route file. Behavior is unchanged.
7
+ *
8
+ * Three buckets keyed by IP:
9
+ * - simStore / maxPerDay: /setup (most expensive action, daily)
10
+ * - compileStore / maxCompilePerDay: /compile (~$0.10 per call, daily)
11
+ * - chatStore / maxChatPerHour: /chat (hourly, users legitimately
12
+ * burst but scripts/loops flatten the
13
+ * budget if unlimited)
14
+ *
15
+ * When a persistencePath is supplied, state is loaded on construct and
16
+ * flushed on every mutation via a 500ms-debounced atomic write
17
+ * (tmp + rename). pm2 restarts preserve user quotas. Missing or corrupt
18
+ * files self-heal at next mutation.
19
+ *
20
+ * @module paracosm/cli/rate-limiter
21
+ */
22
+ import type { IncomingMessage } from 'node:http';
23
+ export interface RateLimitDecision {
24
+ allowed: boolean;
25
+ remaining: number;
26
+ resetAt: number;
27
+ limit: number;
28
+ }
29
+ export declare class IpRateLimiter {
30
+ private simStore;
31
+ private compileStore;
32
+ private chatStore;
33
+ private maxPerDay;
34
+ private maxCompilePerDay;
35
+ private maxChatPerHour;
36
+ private cleanupTimer;
37
+ private persistencePath;
38
+ private persistTimer;
39
+ constructor(maxPerDay?: number, maxCompilePerDay?: number, maxChatPerHour?: number, persistencePath?: string | null);
40
+ /** Load persisted state from disk. Silently tolerates missing/corrupt files. */
41
+ private load;
42
+ /** Debounced flush to disk. Writes atomically via tmp+rename. */
43
+ private persist;
44
+ /** Extract client IP, respecting reverse proxy headers (nginx, Cloudflare, etc.) */
45
+ static getIp(req: IncomingMessage): string;
46
+ private nextReset;
47
+ private bump;
48
+ /** Check the simulation-per-day quota without consuming it. */
49
+ check(ip: string): RateLimitDecision;
50
+ /** Record a simulation start. Prefer `check` + `record` for legacy callers. */
51
+ record(ip: string): void;
52
+ /** Check AND consume a slot for /compile (daily bucket, ~$0.10/call). */
53
+ consumeCompile(ip: string): RateLimitDecision;
54
+ /** Check AND consume a slot for /chat (hourly bucket). */
55
+ consumeChat(ip: string): RateLimitDecision;
56
+ /** Get stats for monitoring endpoints. */
57
+ stats(): {
58
+ totalIps: number;
59
+ sim: Array<{
60
+ ip: string;
61
+ count: number;
62
+ resetAt: string;
63
+ }>;
64
+ compile: Array<{
65
+ ip: string;
66
+ count: number;
67
+ resetAt: string;
68
+ }>;
69
+ chat: Array<{
70
+ ip: string;
71
+ count: number;
72
+ resetAt: string;
73
+ }>;
74
+ };
75
+ private cleanup;
76
+ destroy(): void;
77
+ }
78
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/cli/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAcjD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAA8C;gBAGhE,SAAS,GAAE,MAAU,EACrB,gBAAgB,GAAE,MAAU,EAC5B,cAAc,GAAE,MAAY,EAC5B,eAAe,GAAE,MAAM,GAAG,IAAW;IAUvC,gFAAgF;IAChF,OAAO,CAAC,IAAI;IAyBZ,iEAAiE;IACjE,OAAO,CAAC,OAAO;IA0Bf,oFAAoF;IACpF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM;IAa1C,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,IAAI;IAyBZ,+DAA+D;IAC/D,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB;IAIpC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQxB,yEAAyE;IACzE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB;IAI7C,0DAA0D;IAC1D,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB;IAI1C,0CAA0C;IAC1C,KAAK,IAAI;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/D,IAAI,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7D;IAWD,OAAO,CAAC,OAAO;IAcf,OAAO,IAAI,IAAI;CAIhB"}