paracosm 0.7.409 → 0.7.431

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 (146) hide show
  1. package/README.md +79 -14
  2. package/dist/cli/compile.d.ts +1 -1
  3. package/dist/cli/compile.js +4 -4
  4. package/dist/cli/fetch-seed-url.d.ts +48 -0
  5. package/dist/cli/fetch-seed-url.d.ts.map +1 -0
  6. package/dist/cli/fetch-seed-url.js +109 -0
  7. package/dist/cli/fetch-seed-url.js.map +1 -0
  8. package/dist/cli/fork-preconditions.d.ts +17 -0
  9. package/dist/cli/fork-preconditions.d.ts.map +1 -0
  10. package/dist/cli/fork-preconditions.js +51 -0
  11. package/dist/cli/fork-preconditions.js.map +1 -0
  12. package/dist/cli/init-templates.d.ts +43 -0
  13. package/dist/cli/init-templates.d.ts.map +1 -0
  14. package/dist/cli/init-templates.js +141 -0
  15. package/dist/cli/init-templates.js.map +1 -0
  16. package/dist/cli/init.d.ts +46 -0
  17. package/dist/cli/init.d.ts.map +1 -0
  18. package/dist/cli/init.js +207 -0
  19. package/dist/cli/init.js.map +1 -0
  20. package/dist/cli/pair-runner.d.ts +25 -2
  21. package/dist/cli/pair-runner.d.ts.map +1 -1
  22. package/dist/cli/pair-runner.js +141 -5
  23. package/dist/cli/pair-runner.js.map +1 -1
  24. package/dist/cli/quickstart-routes.d.ts +35 -0
  25. package/dist/cli/quickstart-routes.d.ts.map +1 -0
  26. package/dist/cli/quickstart-routes.js +100 -0
  27. package/dist/cli/quickstart-routes.js.map +1 -0
  28. package/dist/cli/run.js +8 -0
  29. package/dist/cli/run.js.map +1 -1
  30. package/dist/cli/server/enrich-run-record.d.ts +22 -0
  31. package/dist/cli/server/enrich-run-record.d.ts.map +1 -0
  32. package/dist/cli/server/enrich-run-record.js +27 -0
  33. package/dist/cli/server/enrich-run-record.js.map +1 -0
  34. package/dist/cli/server/routes/platform-api.d.ts +19 -3
  35. package/dist/cli/server/routes/platform-api.d.ts.map +1 -1
  36. package/dist/cli/server/routes/platform-api.js +174 -5
  37. package/dist/cli/server/routes/platform-api.js.map +1 -1
  38. package/dist/cli/server/run-history-store.d.ts +27 -1
  39. package/dist/cli/server/run-history-store.d.ts.map +1 -1
  40. package/dist/cli/server/run-history-store.js +5 -0
  41. package/dist/cli/server/run-history-store.js.map +1 -1
  42. package/dist/cli/server/run-record.d.ts +13 -0
  43. package/dist/cli/server/run-record.d.ts.map +1 -1
  44. package/dist/cli/server/run-record.js.map +1 -1
  45. package/dist/cli/server/sqlite-run-history-store.d.ts +6 -0
  46. package/dist/cli/server/sqlite-run-history-store.d.ts.map +1 -0
  47. package/dist/cli/server/sqlite-run-history-store.js +226 -0
  48. package/dist/cli/server/sqlite-run-history-store.js.map +1 -0
  49. package/dist/cli/server-app.d.ts +73 -2
  50. package/dist/cli/server-app.d.ts.map +1 -1
  51. package/dist/cli/server-app.js +409 -159
  52. package/dist/cli/server-app.js.map +1 -1
  53. package/dist/cli/session-title.js +1 -1
  54. package/dist/cli/sim-config.d.ts +13 -0
  55. package/dist/cli/sim-config.d.ts.map +1 -1
  56. package/dist/cli/sim-config.js +8 -1
  57. package/dist/cli/sim-config.js.map +1 -1
  58. package/dist/cli/simulate-route.d.ts +103 -0
  59. package/dist/cli/simulate-route.d.ts.map +1 -0
  60. package/dist/cli/simulate-route.js +95 -0
  61. package/dist/cli/simulate-route.js.map +1 -0
  62. package/dist/engine/compiler/cache.d.ts +2 -2
  63. package/dist/engine/compiler/cache.js +2 -2
  64. package/dist/engine/compiler/compile-from-seed.d.ts +78 -0
  65. package/dist/engine/compiler/compile-from-seed.d.ts.map +1 -0
  66. package/dist/engine/compiler/compile-from-seed.js +93 -0
  67. package/dist/engine/compiler/compile-from-seed.js.map +1 -0
  68. package/dist/engine/compiler/generate-fingerprint.d.ts.map +1 -1
  69. package/dist/engine/compiler/generate-fingerprint.js +3 -6
  70. package/dist/engine/compiler/generate-fingerprint.js.map +1 -1
  71. package/dist/engine/compiler/generate-politics.d.ts.map +1 -1
  72. package/dist/engine/compiler/generate-politics.js +3 -6
  73. package/dist/engine/compiler/generate-politics.js.map +1 -1
  74. package/dist/engine/compiler/generate-progression.d.ts +10 -1
  75. package/dist/engine/compiler/generate-progression.d.ts.map +1 -1
  76. package/dist/engine/compiler/generate-progression.js +15 -15
  77. package/dist/engine/compiler/generate-progression.js.map +1 -1
  78. package/dist/engine/compiler/generate-prompts.d.ts.map +1 -1
  79. package/dist/engine/compiler/generate-prompts.js +4 -7
  80. package/dist/engine/compiler/generate-prompts.js.map +1 -1
  81. package/dist/engine/compiler/generate-reactions.d.ts.map +1 -1
  82. package/dist/engine/compiler/generate-reactions.js +3 -6
  83. package/dist/engine/compiler/generate-reactions.js.map +1 -1
  84. package/dist/engine/compiler/index.d.ts +9 -6
  85. package/dist/engine/compiler/index.d.ts.map +1 -1
  86. package/dist/engine/compiler/index.js +9 -6
  87. package/dist/engine/compiler/index.js.map +1 -1
  88. package/dist/engine/compiler/sandbox-runner.d.ts +40 -0
  89. package/dist/engine/compiler/sandbox-runner.d.ts.map +1 -0
  90. package/dist/engine/compiler/sandbox-runner.js +278 -0
  91. package/dist/engine/compiler/sandbox-runner.js.map +1 -0
  92. package/dist/engine/compiler/scenario-fixture.d.ts +4 -4
  93. package/dist/engine/compiler/scenario-fixture.js +4 -4
  94. package/dist/engine/compiler/seed-ingestion.d.ts +2 -2
  95. package/dist/engine/compiler/seed-ingestion.js +2 -2
  96. package/dist/engine/compiler/state-shape-block.d.ts +1 -1
  97. package/dist/engine/compiler/state-shape-block.js +5 -5
  98. package/dist/engine/compiler/types.d.ts +2 -2
  99. package/dist/engine/compiler/types.d.ts.map +1 -1
  100. package/dist/engine/compiler/validate.js +1 -1
  101. package/dist/engine/core/kernel.d.ts +4 -4
  102. package/dist/engine/core/kernel.js +6 -6
  103. package/dist/engine/core/progression.d.ts +3 -3
  104. package/dist/engine/core/progression.js +21 -21
  105. package/dist/engine/core/state.d.ts +7 -5
  106. package/dist/engine/core/state.d.ts.map +1 -1
  107. package/dist/engine/digital-twin/index.d.ts +41 -0
  108. package/dist/engine/digital-twin/index.d.ts.map +1 -0
  109. package/dist/engine/digital-twin/index.js +40 -0
  110. package/dist/engine/digital-twin/index.js.map +1 -0
  111. package/dist/engine/index.d.ts +1 -1
  112. package/dist/engine/leader-presets.d.ts +39 -0
  113. package/dist/engine/leader-presets.d.ts.map +1 -0
  114. package/dist/engine/leader-presets.js +118 -0
  115. package/dist/engine/leader-presets.js.map +1 -0
  116. package/dist/engine/lunar/fingerprint.js +2 -2
  117. package/dist/engine/lunar/prompts.js +2 -2
  118. package/dist/engine/mars/fingerprint.js +1 -1
  119. package/dist/engine/mars/metrics.d.ts +2 -2
  120. package/dist/engine/mars/metrics.js +2 -2
  121. package/dist/engine/mars/prompts.js +3 -3
  122. package/dist/runtime/build-artifact.d.ts +2 -1
  123. package/dist/runtime/build-artifact.d.ts.map +1 -1
  124. package/dist/runtime/build-artifact.js +2 -1
  125. package/dist/runtime/build-artifact.js.map +1 -1
  126. package/dist/runtime/canonical-json.d.ts +25 -0
  127. package/dist/runtime/canonical-json.d.ts.map +1 -0
  128. package/dist/runtime/canonical-json.js +46 -0
  129. package/dist/runtime/canonical-json.js.map +1 -0
  130. package/dist/runtime/contracts.d.ts +1 -1
  131. package/dist/runtime/departments.js +1 -1
  132. package/dist/runtime/orchestrator.d.ts +44 -4
  133. package/dist/runtime/orchestrator.d.ts.map +1 -1
  134. package/dist/runtime/orchestrator.js +125 -33
  135. package/dist/runtime/orchestrator.js.map +1 -1
  136. package/dist/runtime/parsers.js +5 -5
  137. package/dist/runtime/reaction-step.js +2 -2
  138. package/dist/runtime/world-model/index.d.ts +172 -18
  139. package/dist/runtime/world-model/index.d.ts.map +1 -1
  140. package/dist/runtime/world-model/index.js +242 -4
  141. package/dist/runtime/world-model/index.js.map +1 -1
  142. package/dist/runtime/world-snapshot.d.ts +13 -0
  143. package/dist/runtime/world-snapshot.d.ts.map +1 -0
  144. package/dist/runtime/world-snapshot.js +19 -0
  145. package/dist/runtime/world-snapshot.js.map +1 -0
  146. package/package.json +19 -4
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ const LeaderSchema = z.object({
3
+ name: z.string().min(1).max(80),
4
+ archetype: z.string().min(1).max(60),
5
+ unit: z.string().min(1).max(80),
6
+ hexaco: z.object({
7
+ openness: z.number().min(0).max(1),
8
+ conscientiousness: z.number().min(0).max(1),
9
+ extraversion: z.number().min(0).max(1),
10
+ agreeableness: z.number().min(0).max(1),
11
+ emotionality: z.number().min(0).max(1),
12
+ honestyHumility: z.number().min(0).max(1),
13
+ }),
14
+ instructions: z.string().default(''),
15
+ });
16
+ const SimulateOptionsSchema = z.object({
17
+ maxTurns: z.number().int().min(1).max(12).optional(),
18
+ seed: z.number().int().optional(),
19
+ startTime: z.number().int().optional(),
20
+ captureSnapshots: z.boolean().optional(),
21
+ provider: z.enum(['openai', 'anthropic']).optional(),
22
+ costPreset: z.enum(['quality', 'economy']).optional(),
23
+ seedText: z.string().max(50_000).optional(),
24
+ seedUrl: z.string().url().max(2048).optional(),
25
+ }).partial();
26
+ export const SimulateRequestSchema = z.object({
27
+ // Scenario payload is the raw JSON that `compileScenario` accepts.
28
+ // The endpoint always runs this through the compiler (cache-by-id
29
+ // keeps repeat calls nearly free) so HTTP callers never need to
30
+ // ship compiled hook code across the wire. We accept an arbitrary
31
+ // record shape and let the compiler's own validation surface any
32
+ // domain errors.
33
+ scenario: z.record(z.string(), z.unknown()).refine(s => typeof s.id === 'string'
34
+ && (s.id).trim().length > 0, { message: 'scenario.id must be a non-empty string' }),
35
+ leader: LeaderSchema,
36
+ options: SimulateOptionsSchema.optional(),
37
+ });
38
+ function writeJson(res, status, body) {
39
+ res.writeHead(status, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
40
+ res.end(JSON.stringify(body));
41
+ }
42
+ /**
43
+ * Route handler. Returns nothing; writes response on `res`.
44
+ */
45
+ export async function handleSimulate(_req, res, body, deps) {
46
+ const parsed = SimulateRequestSchema.safeParse(body);
47
+ if (!parsed.success) {
48
+ writeJson(res, 400, {
49
+ error: 'invalid request',
50
+ issues: parsed.error.issues.slice(0, 5).map(i => i.message),
51
+ });
52
+ return;
53
+ }
54
+ const { scenario: scenarioInput, leader, options = {} } = parsed.data;
55
+ let scenarioPkg;
56
+ try {
57
+ // Always compile. compileScenario caches by id so repeat calls
58
+ // are nearly free, and forcing the server-side compile means we
59
+ // never trust client-supplied hook code.
60
+ scenarioPkg = await deps.compileScenario(scenarioInput, {
61
+ provider: options.provider,
62
+ seedText: options.seedText,
63
+ seedUrl: options.seedUrl,
64
+ });
65
+ }
66
+ catch (err) {
67
+ // Server-side log with the full stack; client gets a generic
68
+ // message to avoid leaking paths + stack traces.
69
+ console.error('[simulate] compileScenario failed:', err);
70
+ writeJson(res, 502, { error: 'Scenario compile failed' });
71
+ return;
72
+ }
73
+ const startedAt = Date.now();
74
+ let artifact;
75
+ try {
76
+ artifact = await deps.runSimulation(leader, [], {
77
+ scenario: scenarioPkg,
78
+ maxTurns: options.maxTurns,
79
+ seed: options.seed,
80
+ startTime: options.startTime,
81
+ captureSnapshots: options.captureSnapshots ?? false,
82
+ provider: options.provider,
83
+ costPreset: options.costPreset,
84
+ });
85
+ }
86
+ catch (err) {
87
+ console.error('[simulate] runSimulation failed:', err);
88
+ writeJson(res, 500, { error: 'Simulation failed' });
89
+ return;
90
+ }
91
+ const durationMs = Date.now() - startedAt;
92
+ const response = { artifact, scenario: scenarioPkg, durationMs };
93
+ writeJson(res, 200, response);
94
+ }
95
+ //# sourceMappingURL=simulate-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate-route.js","sourceRoot":"","sources":["../../src/cli/simulate-route.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  * array shape to { founding, legacy } object shape for OpenAI
15
15
  * response_format:json_object compatibility.
16
16
  * - v3 (2026-04-21): state access path renamed from ctx.state.colony
17
- * to ctx.state.systems as part of the 0.5.0 domain-agnostic schema
17
+ * to ctx.state.metrics as part of the 0.5.0 domain-agnostic schema
18
18
  * rename. Every cached progression / reactions / politics hook from
19
19
  * v2 references the old path and must regenerate.
20
20
  * - v4 (2026-04-23): F23 time-units rename. Progression/reactions/
@@ -28,7 +28,7 @@
28
28
  * scenario-declared key lists; smokeTest fixtures derived from the
29
29
  * scenario's own world.* bags instead of hardcoded Mars defaults.
30
30
  * Pre-v5 cached hooks were generated under looser prompts and may
31
- * reference nested state paths (e.g. state.systems.hull.integrity)
31
+ * reference nested state paths (e.g. state.metrics.hull.integrity)
32
32
  * that throw at runtime. Regenerate to pick up the tightened
33
33
  * contract (one-time ~$0.10 per previously-compiled scenario).
34
34
  */
@@ -18,7 +18,7 @@ const DEFAULT_CACHE_DIR = '.paracosm/cache';
18
18
  * array shape to { founding, legacy } object shape for OpenAI
19
19
  * response_format:json_object compatibility.
20
20
  * - v3 (2026-04-21): state access path renamed from ctx.state.colony
21
- * to ctx.state.systems as part of the 0.5.0 domain-agnostic schema
21
+ * to ctx.state.metrics as part of the 0.5.0 domain-agnostic schema
22
22
  * rename. Every cached progression / reactions / politics hook from
23
23
  * v2 references the old path and must regenerate.
24
24
  * - v4 (2026-04-23): F23 time-units rename. Progression/reactions/
@@ -32,7 +32,7 @@ const DEFAULT_CACHE_DIR = '.paracosm/cache';
32
32
  * scenario-declared key lists; smokeTest fixtures derived from the
33
33
  * scenario's own world.* bags instead of hardcoded Mars defaults.
34
34
  * Pre-v5 cached hooks were generated under looser prompts and may
35
- * reference nested state paths (e.g. state.systems.hull.integrity)
35
+ * reference nested state paths (e.g. state.metrics.hull.integrity)
36
36
  * that throw at runtime. Regenerate to pick up the tightened
37
37
  * contract (one-time ~$0.10 per previously-compiled scenario).
38
38
  */
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Prompt/document/URL to paracosm scenario compiler (Quickstart).
3
+ *
4
+ * Given seed text (optionally with a domain hint), an LLM proposes a
5
+ * scenario JSON draft against `DraftScenarioSchema`. The draft routes
6
+ * into the existing `compileScenario` pipeline so the `seedText` research
7
+ * grounding + hook generation still fire. JSON is the canonical contract;
8
+ * this module only provides a convenience entry for callers that start
9
+ * from unstructured source material.
10
+ *
11
+ * @module paracosm/compiler/compile-from-seed
12
+ */
13
+ import { z } from 'zod';
14
+ import type { CompileOptions } from './types.js';
15
+ import type { ScenarioPackage } from '../types.js';
16
+ /**
17
+ * The subset of a scenario JSON the LLM is asked to propose. Lean on
18
+ * purpose: the compiler's existing pipeline fills in defaults, hooks,
19
+ * and seed-ingested citations; we only need the domain-specific fields.
20
+ */
21
+ export declare const DraftScenarioSchema: z.ZodObject<{
22
+ id: z.ZodString;
23
+ labels: z.ZodObject<{
24
+ name: z.ZodString;
25
+ populationNoun: z.ZodString;
26
+ settlementNoun: z.ZodString;
27
+ timeUnitNoun: z.ZodString;
28
+ currency: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strip>;
30
+ setup: z.ZodObject<{
31
+ defaultTurns: z.ZodNumber;
32
+ defaultPopulation: z.ZodNumber;
33
+ defaultStartTime: z.ZodNumber;
34
+ defaultSeed: z.ZodOptional<z.ZodNumber>;
35
+ }, z.core.$strip>;
36
+ departments: z.ZodArray<z.ZodObject<{
37
+ id: z.ZodString;
38
+ label: z.ZodString;
39
+ role: z.ZodString;
40
+ instructions: z.ZodString;
41
+ }, z.core.$strip>>;
42
+ metrics: z.ZodArray<z.ZodObject<{
43
+ id: z.ZodString;
44
+ format: z.ZodDefault<z.ZodEnum<{
45
+ number: "number";
46
+ percent: "percent";
47
+ currency: "currency";
48
+ }>>;
49
+ }, z.core.$strip>>;
50
+ theme: z.ZodOptional<z.ZodString>;
51
+ }, z.core.$strip>;
52
+ export type DraftScenario = z.infer<typeof DraftScenarioSchema>;
53
+ /** Seed source material + optional domain hint passed by the caller. */
54
+ export interface CompileFromSeedInput {
55
+ seedText: string;
56
+ domainHint?: string;
57
+ sourceUrl?: string;
58
+ }
59
+ /** Internal options, a subset of `CompileOptions` that `compileFromSeed` actually reads. */
60
+ export interface CompileFromSeedOptions extends CompileOptions {
61
+ /** Override the provider for the draft-generation LLM call. Default: 'anthropic'. */
62
+ draftProvider?: string;
63
+ /** Override the model for the draft-generation LLM call. Default: 'claude-sonnet-4-6'. */
64
+ draftModel?: string;
65
+ }
66
+ /**
67
+ * Compile a scenario from seed source material. Calls the LLM to
68
+ * propose a `DraftScenario`, validates it via Zod, then routes into
69
+ * the existing `compileScenario` pipeline with `seedText` threading
70
+ * through for research grounding.
71
+ *
72
+ * Retries once on Zod-validation failure (surfaced through
73
+ * `generateValidatedObject`'s maxRetries mechanism).
74
+ *
75
+ * @throws Error when the LLM fails to produce a valid draft after one retry.
76
+ */
77
+ export declare function compileFromSeed(input: CompileFromSeedInput, options?: CompileFromSeedOptions): Promise<ScenarioPackage>;
78
+ //# sourceMappingURL=compile-from-seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-from-seed.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/compile-from-seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0B9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD,4FAA4F;AAC5F,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,eAAe,CAAC,CAyB1B"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Prompt/document/URL to paracosm scenario compiler (Quickstart).
3
+ *
4
+ * Given seed text (optionally with a domain hint), an LLM proposes a
5
+ * scenario JSON draft against `DraftScenarioSchema`. The draft routes
6
+ * into the existing `compileScenario` pipeline so the `seedText` research
7
+ * grounding + hook generation still fire. JSON is the canonical contract;
8
+ * this module only provides a convenience entry for callers that start
9
+ * from unstructured source material.
10
+ *
11
+ * @module paracosm/compiler/compile-from-seed
12
+ */
13
+ import { z } from 'zod';
14
+ import { compileScenario } from './index.js';
15
+ import { generateValidatedObject } from '../../runtime/llm-invocations/generateValidatedObject.js';
16
+ /**
17
+ * The subset of a scenario JSON the LLM is asked to propose. Lean on
18
+ * purpose: the compiler's existing pipeline fills in defaults, hooks,
19
+ * and seed-ingested citations; we only need the domain-specific fields.
20
+ */
21
+ export const DraftScenarioSchema = z.object({
22
+ id: z.string().min(3).max(64).regex(/^[a-z0-9-]+$/, 'kebab-case ids only'),
23
+ labels: z.object({
24
+ name: z.string().min(2).max(80),
25
+ populationNoun: z.string().min(2).max(32),
26
+ settlementNoun: z.string().min(2).max(32),
27
+ timeUnitNoun: z.string().min(2).max(24),
28
+ currency: z.string().min(1).max(16).optional(),
29
+ }),
30
+ setup: z.object({
31
+ defaultTurns: z.number().int().min(2).max(12),
32
+ defaultPopulation: z.number().int().min(10).max(1000),
33
+ defaultStartTime: z.number().int(),
34
+ defaultSeed: z.number().int().optional(),
35
+ }),
36
+ departments: z.array(z.object({
37
+ id: z.string().min(2).max(48).regex(/^[a-z0-9-]+$/),
38
+ label: z.string().min(2).max(48),
39
+ role: z.string().min(2).max(80),
40
+ instructions: z.string().min(10).max(400),
41
+ })).min(2).max(8),
42
+ metrics: z.array(z.object({
43
+ id: z.string().min(2).max(32).regex(/^[a-z0-9-]+$/),
44
+ format: z.enum(['number', 'percent', 'currency']).default('number'),
45
+ })).min(2).max(12),
46
+ theme: z.string().min(10).max(400).optional(),
47
+ });
48
+ /**
49
+ * LLM system prompt for draft generation. Emphasizes: (a) match the
50
+ * seed's domain, (b) pick domain-appropriate nouns, (c) keep scope
51
+ * coherent so downstream compilation succeeds.
52
+ */
53
+ const DRAFT_SYSTEM_PROMPT = `You are a scenario architect for paracosm, a structured world-model simulator for AI agents.
54
+ Given seed source material, propose a paracosm scenario JSON that matches the domain.
55
+ Pick populationNoun, settlementNoun, and timeUnitNoun that fit the domain ("crew" / "habitat" / "day" for a submarine; "employees" / "company" / "quarter" for a corporate scenario; "colonists" / "colony" / "year" for a space settlement).
56
+ Departments (2-8) should cover the decision-relevant roles in the domain. Metrics (2-12) should be quantifiable state the leader cares about.
57
+ Setup: defaultTurns 4-8, defaultPopulation proportional to the scope, defaultStartTime appropriate for the domain.
58
+ Keep all labels natural language; leave implementation details (hook code, citation sourcing) to downstream compilation.`;
59
+ /**
60
+ * Compile a scenario from seed source material. Calls the LLM to
61
+ * propose a `DraftScenario`, validates it via Zod, then routes into
62
+ * the existing `compileScenario` pipeline with `seedText` threading
63
+ * through for research grounding.
64
+ *
65
+ * Retries once on Zod-validation failure (surfaced through
66
+ * `generateValidatedObject`'s maxRetries mechanism).
67
+ *
68
+ * @throws Error when the LLM fails to produce a valid draft after one retry.
69
+ */
70
+ export async function compileFromSeed(input, options = {}) {
71
+ const provider = options.draftProvider ?? options.provider ?? 'anthropic';
72
+ const model = options.draftModel ?? options.model ?? 'claude-sonnet-4-6';
73
+ const hint = input.domainHint ? `\n\nDomain hint: ${input.domainHint}` : '';
74
+ const prompt = `Seed source material:\n"""\n${input.seedText}\n"""${hint}\n\nRespond with a scenario JSON that matches DraftScenarioSchema.`;
75
+ const result = await generateValidatedObject({
76
+ provider,
77
+ model,
78
+ schema: DraftScenarioSchema,
79
+ schemaName: 'DraftScenario',
80
+ systemCacheable: DRAFT_SYSTEM_PROMPT,
81
+ prompt,
82
+ maxRetries: 1,
83
+ });
84
+ // Route the validated draft into the existing compiler with
85
+ // seedText grounding so the research + hook-generation stages
86
+ // still pull citations and generate TypeScript.
87
+ return compileScenario(result.object, {
88
+ ...options,
89
+ seedText: input.seedText,
90
+ seedUrl: input.sourceUrl,
91
+ });
92
+ }
93
+ //# sourceMappingURL=compile-from-seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-from-seed.js","sourceRoot":"","sources":["../../../src/engine/compiler/compile-from-seed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-fingerprint.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD,KAAK,aAAa,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAiCvJ,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUhE;AA8BD,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAgB3F"}
1
+ {"version":3,"file":"generate-fingerprint.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMxD,KAAK,aAAa,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAiCvJ,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUhE;AA8BD,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAgB3F"}
@@ -1,6 +1,7 @@
1
1
  import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
2
2
  import { buildScenarioFixture } from './scenario-fixture.js';
3
3
  import { buildStateShapeBlock } from './state-shape-block.js';
4
+ import { runArrowSync } from './sandbox-runner.js';
4
5
  function buildSystemBlock(scenarioJson) {
5
6
  const labels = scenarioJson.labels ?? {};
6
7
  const depts = (scenarioJson.departments ?? []).map((d) => d.id).join(', ');
@@ -35,13 +36,9 @@ export function parseResponse(text) {
35
36
  cleaned = cleaned.replace(/^```(?:typescript|ts|javascript|js)?\n?/i, '').replace(/\n?```$/i, '').trim();
36
37
  if (cleaned.endsWith(';'))
37
38
  cleaned = cleaned.slice(0, -1).trim();
38
- try {
39
- const fn = new Function('return ' + cleaned)();
40
- return typeof fn === 'function' ? fn : null;
41
- }
42
- catch {
39
+ if (!cleaned)
43
40
  return null;
44
- }
41
+ return (finalState, outcomeLog, leader, toolRegs, maxTurns) => runArrowSync(cleaned, [finalState, outcomeLog, leader, toolRegs, maxTurns]);
45
42
  }
46
43
  function buildSmokeTest(scenarioJson) {
47
44
  return (fn) => {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-fingerprint.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-fingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-fingerprint.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-fingerprint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-politics.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,KAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAkCvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAU7D;AAWD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAexF"}
1
+ {"version":3,"file":"generate-politics.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,KAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAkCvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAO7D;AAWD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAexF"}
@@ -1,4 +1,5 @@
1
1
  import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
2
+ import { runArrowSync } from './sandbox-runner.js';
2
3
  function buildSystemBlock(scenarioJson) {
3
4
  const labels = scenarioJson.labels ?? {};
4
5
  const effects = scenarioJson.effects ?? {};
@@ -34,13 +35,9 @@ export function parseResponse(text) {
34
35
  cleaned = cleaned.replace(/^```(?:typescript|ts|javascript|js)?\n?/i, '').replace(/\n?```$/i, '').trim();
35
36
  if (cleaned.endsWith(';'))
36
37
  cleaned = cleaned.slice(0, -1).trim();
37
- try {
38
- const fn = new Function('return ' + cleaned)();
39
- return typeof fn === 'function' ? fn : null;
40
- }
41
- catch {
38
+ if (!cleaned)
42
39
  return null;
43
- }
40
+ return (category, outcome) => runArrowSync(cleaned, [category, outcome]);
44
41
  }
45
42
  function smokeTest(fn) {
46
43
  const political = fn('political', 'risky_success');
@@ -1 +1 @@
1
- {"version":3,"file":"generate-politics.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-politics.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,16 @@ import type { ProgressionHookContext } from '../types.js';
9
9
  import type { GenerateTextFn } from './types.js';
10
10
  import type { CompilerTelemetry } from './telemetry.js';
11
11
  type ProgressionFn = (ctx: ProgressionHookContext) => void;
12
- /** Parse the LLM response into an executable function. */
12
+ /**
13
+ * Parse the LLM response into a sandboxed callable. The returned function
14
+ * delegates each invocation to {@link runProgressionSync}, which executes
15
+ * the code in a hardened node:vm context (`codeGeneration: { strings: false }`,
16
+ * dangerous globals undefined, wall-clock timeout) and merges any
17
+ * mutations to `ctx.agents` back onto the host references.
18
+ *
19
+ * No host-side `new Function()` evaluation: the only host-realm parse
20
+ * happens lazily inside the sandbox runner on the first invocation.
21
+ */
13
22
  export declare function parseResponse(text: string): ProgressionFn | null;
14
23
  export interface GenerateProgressionOptions {
15
24
  telemetry?: CompilerTelemetry;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-progression.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-progression.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC;AAiC3D,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgBhE;AAmBD,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAiB3F"}
1
+ {"version":3,"file":"generate-progression.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-progression.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC;AAiC3D;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAQhE;AAmBD,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAiB3F"}
@@ -1,4 +1,5 @@
1
1
  import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
2
+ import { runProgressionSync } from './sandbox-runner.js';
2
3
  function buildSystemBlock(scenarioJson) {
3
4
  const labels = scenarioJson.labels ?? {};
4
5
  const env = scenarioJson.world?.environment ?? {};
@@ -28,27 +29,26 @@ Rules:
28
29
  }
29
30
  const userPrompt = `Return ONLY the complete arrow function. No markdown fences. Example:
30
31
  (ctx) => { for (const c of ctx.agents) { if (!c.health.alive) continue; /* effects */ } }`;
31
- /** Parse the LLM response into an executable function. */
32
+ /**
33
+ * Parse the LLM response into a sandboxed callable. The returned function
34
+ * delegates each invocation to {@link runProgressionSync}, which executes
35
+ * the code in a hardened node:vm context (`codeGeneration: { strings: false }`,
36
+ * dangerous globals undefined, wall-clock timeout) and merges any
37
+ * mutations to `ctx.agents` back onto the host references.
38
+ *
39
+ * No host-side `new Function()` evaluation: the only host-realm parse
40
+ * happens lazily inside the sandbox runner on the first invocation.
41
+ */
32
42
  export function parseResponse(text) {
33
43
  let cleaned = text.trim();
34
44
  cleaned = cleaned.replace(/^```(?:typescript|ts|javascript|js)?\n?/i, '').replace(/\n?```$/i, '').trim();
35
45
  if (cleaned.endsWith(';'))
36
46
  cleaned = cleaned.slice(0, -1).trim();
37
- try {
38
- const fn = new Function('return ' + cleaned)();
39
- if (typeof fn === 'function')
40
- return fn;
47
+ if (!cleaned)
41
48
  return null;
42
- }
43
- catch {
44
- try {
45
- const fn = new Function('ctx', cleaned);
46
- return (ctx) => fn(ctx);
47
- }
48
- catch {
49
- return null;
50
- }
51
- }
49
+ return (ctx) => {
50
+ runProgressionSync(cleaned, ctx);
51
+ };
52
52
  }
53
53
  function smokeTest(fn) {
54
54
  const testColonists = [
@@ -1 +1 @@
1
- {"version":3,"file":"generate-progression.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-progression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-progression.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-progression.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-prompts.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD,KAAK,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC;AAgCjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAUrE;AAoBD,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAkBhG"}
1
+ {"version":3,"file":"generate-prompts.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMxD,KAAK,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC;AAgCjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAMrE;AAoBD,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAkBhG"}
@@ -1,6 +1,7 @@
1
1
  import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
2
2
  import { buildScenarioFixture } from './scenario-fixture.js';
3
3
  import { buildStateShapeBlock } from './state-shape-block.js';
4
+ import { runArrowSync } from './sandbox-runner.js';
4
5
  function buildSystemBlock(scenarioJson) {
5
6
  const labels = scenarioJson.labels ?? {};
6
7
  const depts = (scenarioJson.departments ?? []).map((d) => `- ${d.id}: ${d.label} (${d.role}) — ${d.instructions}`).join('\n');
@@ -23,7 +24,7 @@ For each department, compute and return 2-4 lines of scenario-relevant stats fro
23
24
 
24
25
  Rules:
25
26
  1. Switch on ctx.department with a case per department ID listed above.
26
- 2. Access ctx.state.agents (filter alive), ctx.state.systems, ctx.state.politics. These are the only state bags present at runtime.
27
+ 2. Access ctx.state.agents (filter alive), ctx.state.metrics, ctx.state.politics. These are the only state bags present at runtime.
27
28
  3. Reference only the keys listed in AVAILABLE STATE SHAPE. Bad key access throws at validation or runtime.
28
29
  4. Return string[]; empty array for unknown departments.
29
30
  5. NO external imports, NO async.`;
@@ -34,13 +35,9 @@ export function parseResponse(text) {
34
35
  cleaned = cleaned.replace(/^```(?:typescript|ts|javascript|js)?\n?/i, '').replace(/\n?```$/i, '').trim();
35
36
  if (cleaned.endsWith(';'))
36
37
  cleaned = cleaned.slice(0, -1).trim();
37
- try {
38
- const fn = new Function('return ' + cleaned)();
39
- return typeof fn === 'function' ? fn : null;
40
- }
41
- catch {
38
+ if (!cleaned)
42
39
  return null;
43
- }
40
+ return (ctx) => runArrowSync(cleaned, [ctx]);
44
41
  }
45
42
  function buildSmokeTest(scenarioJson) {
46
43
  return (fn) => {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-prompts.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-prompts.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-reactions.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,KAAK,iBAAiB,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;AA+B7D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAUpE;AAwBD,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAe/F"}
1
+ {"version":3,"file":"generate-reactions.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,KAAK,iBAAiB,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;AA+B7D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAOpE;AAwBD,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAe/F"}
@@ -1,4 +1,5 @@
1
1
  import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
2
+ import { runArrowSync } from './sandbox-runner.js';
2
3
  function buildSystemBlock(scenarioJson) {
3
4
  const labels = scenarioJson.labels ?? {};
4
5
  const timeUnit = labels.timeUnitNoun ?? 'tick';
@@ -31,13 +32,9 @@ export function parseResponse(text) {
31
32
  cleaned = cleaned.replace(/^```(?:typescript|ts|javascript|js)?\n?/i, '').replace(/\n?```$/i, '').trim();
32
33
  if (cleaned.endsWith(';'))
33
34
  cleaned = cleaned.slice(0, -1).trim();
34
- try {
35
- const fn = new Function('return ' + cleaned)();
36
- return typeof fn === 'function' ? fn : null;
37
- }
38
- catch {
35
+ if (!cleaned)
39
36
  return null;
40
- }
37
+ return (colonist, ctx) => runArrowSync(cleaned, [colonist, ctx]);
41
38
  }
42
39
  function smokeTest(fn) {
43
40
  const result = fn({ core: { marsborn: false, birthTime: 2010, name: 'Test' }, health: { alive: true, boneDensityPct: 80, cumulativeRadiationMsv: 200, psychScore: 0.6 } }, { time: 2045, turn: 3 });
@@ -1 +1 @@
1
- {"version":3,"file":"generate-reactions.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-reactions.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"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"}