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.
- package/README.md +79 -14
- package/dist/cli/compile.d.ts +1 -1
- package/dist/cli/compile.js +4 -4
- package/dist/cli/fetch-seed-url.d.ts +48 -0
- package/dist/cli/fetch-seed-url.d.ts.map +1 -0
- package/dist/cli/fetch-seed-url.js +109 -0
- package/dist/cli/fetch-seed-url.js.map +1 -0
- package/dist/cli/fork-preconditions.d.ts +17 -0
- package/dist/cli/fork-preconditions.d.ts.map +1 -0
- package/dist/cli/fork-preconditions.js +51 -0
- package/dist/cli/fork-preconditions.js.map +1 -0
- package/dist/cli/init-templates.d.ts +43 -0
- package/dist/cli/init-templates.d.ts.map +1 -0
- package/dist/cli/init-templates.js +141 -0
- package/dist/cli/init-templates.js.map +1 -0
- package/dist/cli/init.d.ts +46 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +207 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/pair-runner.d.ts +25 -2
- package/dist/cli/pair-runner.d.ts.map +1 -1
- package/dist/cli/pair-runner.js +141 -5
- package/dist/cli/pair-runner.js.map +1 -1
- package/dist/cli/quickstart-routes.d.ts +35 -0
- package/dist/cli/quickstart-routes.d.ts.map +1 -0
- package/dist/cli/quickstart-routes.js +100 -0
- package/dist/cli/quickstart-routes.js.map +1 -0
- package/dist/cli/run.js +8 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/server/enrich-run-record.d.ts +22 -0
- package/dist/cli/server/enrich-run-record.d.ts.map +1 -0
- package/dist/cli/server/enrich-run-record.js +27 -0
- package/dist/cli/server/enrich-run-record.js.map +1 -0
- package/dist/cli/server/routes/platform-api.d.ts +19 -3
- package/dist/cli/server/routes/platform-api.d.ts.map +1 -1
- package/dist/cli/server/routes/platform-api.js +174 -5
- package/dist/cli/server/routes/platform-api.js.map +1 -1
- package/dist/cli/server/run-history-store.d.ts +27 -1
- package/dist/cli/server/run-history-store.d.ts.map +1 -1
- package/dist/cli/server/run-history-store.js +5 -0
- package/dist/cli/server/run-history-store.js.map +1 -1
- package/dist/cli/server/run-record.d.ts +13 -0
- package/dist/cli/server/run-record.d.ts.map +1 -1
- package/dist/cli/server/run-record.js.map +1 -1
- package/dist/cli/server/sqlite-run-history-store.d.ts +6 -0
- package/dist/cli/server/sqlite-run-history-store.d.ts.map +1 -0
- package/dist/cli/server/sqlite-run-history-store.js +226 -0
- package/dist/cli/server/sqlite-run-history-store.js.map +1 -0
- package/dist/cli/server-app.d.ts +73 -2
- package/dist/cli/server-app.d.ts.map +1 -1
- package/dist/cli/server-app.js +409 -159
- package/dist/cli/server-app.js.map +1 -1
- package/dist/cli/session-title.js +1 -1
- package/dist/cli/sim-config.d.ts +13 -0
- package/dist/cli/sim-config.d.ts.map +1 -1
- package/dist/cli/sim-config.js +8 -1
- package/dist/cli/sim-config.js.map +1 -1
- package/dist/cli/simulate-route.d.ts +103 -0
- package/dist/cli/simulate-route.d.ts.map +1 -0
- package/dist/cli/simulate-route.js +95 -0
- package/dist/cli/simulate-route.js.map +1 -0
- package/dist/engine/compiler/cache.d.ts +2 -2
- package/dist/engine/compiler/cache.js +2 -2
- package/dist/engine/compiler/compile-from-seed.d.ts +78 -0
- package/dist/engine/compiler/compile-from-seed.d.ts.map +1 -0
- package/dist/engine/compiler/compile-from-seed.js +93 -0
- package/dist/engine/compiler/compile-from-seed.js.map +1 -0
- package/dist/engine/compiler/generate-fingerprint.d.ts.map +1 -1
- package/dist/engine/compiler/generate-fingerprint.js +3 -6
- package/dist/engine/compiler/generate-fingerprint.js.map +1 -1
- package/dist/engine/compiler/generate-politics.d.ts.map +1 -1
- package/dist/engine/compiler/generate-politics.js +3 -6
- package/dist/engine/compiler/generate-politics.js.map +1 -1
- package/dist/engine/compiler/generate-progression.d.ts +10 -1
- package/dist/engine/compiler/generate-progression.d.ts.map +1 -1
- package/dist/engine/compiler/generate-progression.js +15 -15
- package/dist/engine/compiler/generate-progression.js.map +1 -1
- package/dist/engine/compiler/generate-prompts.d.ts.map +1 -1
- package/dist/engine/compiler/generate-prompts.js +4 -7
- package/dist/engine/compiler/generate-prompts.js.map +1 -1
- package/dist/engine/compiler/generate-reactions.d.ts.map +1 -1
- package/dist/engine/compiler/generate-reactions.js +3 -6
- package/dist/engine/compiler/generate-reactions.js.map +1 -1
- package/dist/engine/compiler/index.d.ts +9 -6
- package/dist/engine/compiler/index.d.ts.map +1 -1
- package/dist/engine/compiler/index.js +9 -6
- package/dist/engine/compiler/index.js.map +1 -1
- package/dist/engine/compiler/sandbox-runner.d.ts +40 -0
- package/dist/engine/compiler/sandbox-runner.d.ts.map +1 -0
- package/dist/engine/compiler/sandbox-runner.js +278 -0
- package/dist/engine/compiler/sandbox-runner.js.map +1 -0
- package/dist/engine/compiler/scenario-fixture.d.ts +4 -4
- package/dist/engine/compiler/scenario-fixture.js +4 -4
- package/dist/engine/compiler/seed-ingestion.d.ts +2 -2
- package/dist/engine/compiler/seed-ingestion.js +2 -2
- package/dist/engine/compiler/state-shape-block.d.ts +1 -1
- package/dist/engine/compiler/state-shape-block.js +5 -5
- package/dist/engine/compiler/types.d.ts +2 -2
- package/dist/engine/compiler/types.d.ts.map +1 -1
- package/dist/engine/compiler/validate.js +1 -1
- package/dist/engine/core/kernel.d.ts +4 -4
- package/dist/engine/core/kernel.js +6 -6
- package/dist/engine/core/progression.d.ts +3 -3
- package/dist/engine/core/progression.js +21 -21
- package/dist/engine/core/state.d.ts +7 -5
- package/dist/engine/core/state.d.ts.map +1 -1
- package/dist/engine/digital-twin/index.d.ts +41 -0
- package/dist/engine/digital-twin/index.d.ts.map +1 -0
- package/dist/engine/digital-twin/index.js +40 -0
- package/dist/engine/digital-twin/index.js.map +1 -0
- package/dist/engine/index.d.ts +1 -1
- package/dist/engine/leader-presets.d.ts +39 -0
- package/dist/engine/leader-presets.d.ts.map +1 -0
- package/dist/engine/leader-presets.js +118 -0
- package/dist/engine/leader-presets.js.map +1 -0
- package/dist/engine/lunar/fingerprint.js +2 -2
- package/dist/engine/lunar/prompts.js +2 -2
- package/dist/engine/mars/fingerprint.js +1 -1
- package/dist/engine/mars/metrics.d.ts +2 -2
- package/dist/engine/mars/metrics.js +2 -2
- package/dist/engine/mars/prompts.js +3 -3
- package/dist/runtime/build-artifact.d.ts +2 -1
- package/dist/runtime/build-artifact.d.ts.map +1 -1
- package/dist/runtime/build-artifact.js +2 -1
- package/dist/runtime/build-artifact.js.map +1 -1
- package/dist/runtime/canonical-json.d.ts +25 -0
- package/dist/runtime/canonical-json.d.ts.map +1 -0
- package/dist/runtime/canonical-json.js +46 -0
- package/dist/runtime/canonical-json.js.map +1 -0
- package/dist/runtime/contracts.d.ts +1 -1
- package/dist/runtime/departments.js +1 -1
- package/dist/runtime/orchestrator.d.ts +44 -4
- package/dist/runtime/orchestrator.d.ts.map +1 -1
- package/dist/runtime/orchestrator.js +125 -33
- package/dist/runtime/orchestrator.js.map +1 -1
- package/dist/runtime/parsers.js +5 -5
- package/dist/runtime/reaction-step.js +2 -2
- package/dist/runtime/world-model/index.d.ts +172 -18
- package/dist/runtime/world-model/index.d.ts.map +1 -1
- package/dist/runtime/world-model/index.js +242 -4
- package/dist/runtime/world-model/index.js.map +1 -1
- package/dist/runtime/world-snapshot.d.ts +13 -0
- package/dist/runtime/world-snapshot.d.ts.map +1 -0
- package/dist/runtime/world-snapshot.js +19 -0
- package/dist/runtime/world-snapshot.js.map +1 -0
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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;
|
|
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
|
-
|
|
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":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
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;
|
|
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
|
-
|
|
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":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-politics.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,SAAS,gBAAgB,CAAC,YAAiC;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACvE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC;IAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAA4B,CAAC,CAAC;IAClG,OAAO;;YAEG,MAAM,CAAC,IAAI,IAAI,SAAS,MAAM,MAAM,CAAC,cAAc,IAAI,YAAY;oBAC3D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aAC5B,QAAQ;0BACK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0CAA0C;;;;;;;;;;;;;;uBAc7F,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,GAAG,qDAAqD,CAAC;AAEzE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC3B,YAAY,CAAkD,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,SAAS,CAAC,EAAc;IAC/B,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACnD,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAe,GAAG,EAAE,CAAC,IAAI,CAAC;AAMxC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAAiC,EACjC,YAA4B,EAC5B,UAAmC,EAAE;IAErC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAa;QACrD,QAAQ,EAAE,UAAU;QACpB,eAAe,EAAE,gBAAgB,CAAC,YAAY,CAAC;QAC/C,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,aAAa;QACpB,SAAS;QACT,QAAQ;QACR,cAAc,EAAE,6BAA6B;QAC7C,wDAAwD;QACxD,SAAS,EAAE,IAAI;QACf,YAAY;QACZ,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AACpH,CAAC"}
|
|
@@ -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
|
-
/**
|
|
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;
|
|
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
|
-
/**
|
|
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
|
-
|
|
38
|
-
const fn = new Function('return ' + cleaned)();
|
|
39
|
-
if (typeof fn === 'function')
|
|
40
|
-
return fn;
|
|
47
|
+
if (!cleaned)
|
|
41
48
|
return null;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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":"AAUA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;
|
|
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;
|
|
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.
|
|
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
|
-
|
|
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":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-prompts.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-prompts.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,SAAS,gBAAgB,CAAC,YAAiC;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnI,OAAO;;YAEG,MAAM,CAAC,IAAI,IAAI,SAAS,MAAM,MAAM,CAAC,cAAc,IAAI,YAAY;;EAE7E,KAAK;;;;;;;;;EASL,oBAAoB,CAAC,YAAY,CAAC;;;;;;;;;kCASF,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,GAAG,qEAAqE,CAAC;AAEzF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,CAAC,GAAY,EAAE,EAAE,CAAC,YAAY,CAAsB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,cAAc,CAAC,YAAiC;IACvD,OAAO,CAAC,EAAE,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC;QACxE,MAAM,OAAO,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,EAAE,CAAC;YAChB,UAAU,EAAE,MAAM;YAClB,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,YAAY;YACtB,cAAc,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE;SAC/E,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,aAAkC;IACvD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,2CAA2C,CAAC,CAAC;AAClF,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,YAAiC,EACjC,YAA4B,EAC5B,UAAkC,EAAE;IAEpC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAqB;QAC7D,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,gBAAgB,CAAC,YAAY,CAAC;QAC/C,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,aAAa;QACpB,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC;QACvC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC;QACrC,cAAc,EAAE,gCAAgC;QAChD,oEAAoE;QACpE,8DAA8D;QAC9D,+DAA+D;QAC/D,yBAAyB;QACzB,SAAS,EAAE,IAAI;QACf,YAAY;QACZ,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AACpH,CAAC"}
|
|
@@ -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;
|
|
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
|
-
|
|
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":"AAUA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-reactions.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"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"}
|