paracosm 0.7.405 → 0.7.408
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/dist/engine/compiler/cache.d.ts +9 -1
- package/dist/engine/compiler/cache.d.ts.map +1 -1
- package/dist/engine/compiler/cache.js +9 -1
- package/dist/engine/compiler/cache.js.map +1 -1
- package/dist/engine/compiler/generate-fingerprint.d.ts.map +1 -1
- package/dist/engine/compiler/generate-fingerprint.js +18 -10
- package/dist/engine/compiler/generate-fingerprint.js.map +1 -1
- package/dist/engine/compiler/generate-milestones.d.ts.map +1 -1
- package/dist/engine/compiler/generate-milestones.js +3 -0
- package/dist/engine/compiler/generate-milestones.js.map +1 -1
- package/dist/engine/compiler/generate-politics.d.ts.map +1 -1
- package/dist/engine/compiler/generate-politics.js +7 -2
- package/dist/engine/compiler/generate-politics.js.map +1 -1
- package/dist/engine/compiler/generate-prompts.d.ts.map +1 -1
- package/dist/engine/compiler/generate-prompts.js +11 -10
- 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 +6 -2
- package/dist/engine/compiler/generate-reactions.js.map +1 -1
- package/dist/engine/compiler/scenario-fixture.d.ts +46 -0
- package/dist/engine/compiler/scenario-fixture.d.ts.map +1 -0
- package/dist/engine/compiler/scenario-fixture.js +146 -0
- package/dist/engine/compiler/scenario-fixture.js.map +1 -0
- package/dist/engine/compiler/state-shape-block.d.ts +16 -0
- package/dist/engine/compiler/state-shape-block.d.ts.map +1 -0
- package/dist/engine/compiler/state-shape-block.js +50 -0
- package/dist/engine/compiler/state-shape-block.js.map +1 -0
- package/dist/engine/compiler/validate.d.ts.map +1 -1
- package/dist/engine/compiler/validate.js +2 -0
- package/dist/engine/compiler/validate.js.map +1 -1
- package/dist/engine/core/kernel.d.ts +10 -0
- package/dist/engine/core/kernel.d.ts.map +1 -1
- package/dist/engine/core/kernel.js +80 -11
- package/dist/engine/core/kernel.js.map +1 -1
- package/dist/engine/core/state.d.ts +14 -0
- package/dist/engine/core/state.d.ts.map +1 -1
- package/dist/runtime/build-artifact.d.ts +3 -0
- package/dist/runtime/build-artifact.d.ts.map +1 -1
- package/dist/runtime/build-artifact.js +6 -1
- package/dist/runtime/build-artifact.js.map +1 -1
- package/dist/runtime/orchestrator.d.ts +2 -0
- package/dist/runtime/orchestrator.d.ts.map +1 -1
- package/dist/runtime/orchestrator.js +29 -9
- package/dist/runtime/orchestrator.js.map +1 -1
- package/package.json +1 -1
|
@@ -23,8 +23,16 @@
|
|
|
23
23
|
* agent core swaps `birthYear`/`deathYear` for `birthTime`/
|
|
24
24
|
* `deathTime`. Every cached hook references the old names and must
|
|
25
25
|
* regenerate (one-time ~$0.10 per previously-compiled scenario).
|
|
26
|
+
* - v5 (2026-04-23): Compiler prompt hardening. Every generator's
|
|
27
|
+
* system prompt now declares the flat state shape with exact
|
|
28
|
+
* scenario-declared key lists; smokeTest fixtures derived from the
|
|
29
|
+
* scenario's own world.* bags instead of hardcoded Mars defaults.
|
|
30
|
+
* Pre-v5 cached hooks were generated under looser prompts and may
|
|
31
|
+
* reference nested state paths (e.g. state.systems.hull.integrity)
|
|
32
|
+
* that throw at runtime. Regenerate to pick up the tightened
|
|
33
|
+
* contract (one-time ~$0.10 per previously-compiled scenario).
|
|
26
34
|
*/
|
|
27
|
-
export declare const COMPILE_SCHEMA_VERSION =
|
|
35
|
+
export declare const COMPILE_SCHEMA_VERSION = 5;
|
|
28
36
|
/** SHA-256 hash of the scenario JSON, used for cache invalidation. */
|
|
29
37
|
export declare function hashScenario(scenarioJson: Record<string, unknown>): string;
|
|
30
38
|
/** Read a cached hook result. Returns null on cache miss. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAM1E;AAOD,6DAA6D;AAC7D,wBAAgB,SAAS,CACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,SAAoB,GAC1B,MAAM,GAAG,IAAI,CAqBf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,aAAa,EAAE,MAAM,EACrB,OAAO,SAAoB,GAC1B,OAAO,GAAG,IAAI,CAWhB;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,EACf,OAAO,SAAoB,GAC1B,IAAI,CAUN;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQ9H;AAED,yCAAyC;AACzC,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,SAAoB,GAC1B,IAAI,CA0BN"}
|
|
@@ -27,8 +27,16 @@ const DEFAULT_CACHE_DIR = '.paracosm/cache';
|
|
|
27
27
|
* agent core swaps `birthYear`/`deathYear` for `birthTime`/
|
|
28
28
|
* `deathTime`. Every cached hook references the old names and must
|
|
29
29
|
* regenerate (one-time ~$0.10 per previously-compiled scenario).
|
|
30
|
+
* - v5 (2026-04-23): Compiler prompt hardening. Every generator's
|
|
31
|
+
* system prompt now declares the flat state shape with exact
|
|
32
|
+
* scenario-declared key lists; smokeTest fixtures derived from the
|
|
33
|
+
* scenario's own world.* bags instead of hardcoded Mars defaults.
|
|
34
|
+
* Pre-v5 cached hooks were generated under looser prompts and may
|
|
35
|
+
* reference nested state paths (e.g. state.systems.hull.integrity)
|
|
36
|
+
* that throw at runtime. Regenerate to pick up the tightened
|
|
37
|
+
* contract (one-time ~$0.10 per previously-compiled scenario).
|
|
30
38
|
*/
|
|
31
|
-
export const COMPILE_SCHEMA_VERSION =
|
|
39
|
+
export const COMPILE_SCHEMA_VERSION = 5;
|
|
32
40
|
/** SHA-256 hash of the scenario JSON, used for cache invalidation. */
|
|
33
41
|
export function hashScenario(scenarioJson) {
|
|
34
42
|
return createHash('sha256')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/engine/compiler/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/engine/compiler/cache.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;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,4 +1,6 @@
|
|
|
1
1
|
import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
|
|
2
|
+
import { buildScenarioFixture } from './scenario-fixture.js';
|
|
3
|
+
import { buildStateShapeBlock } from './state-shape-block.js';
|
|
2
4
|
function buildSystemBlock(scenarioJson) {
|
|
3
5
|
const labels = scenarioJson.labels ?? {};
|
|
4
6
|
const depts = (scenarioJson.departments ?? []).map((d) => d.id).join(', ');
|
|
@@ -10,19 +12,22 @@ DEPARTMENTS: ${depts}
|
|
|
10
12
|
Function signature: (finalState, outcomeLog, leader, toolRegs, maxTurns) => Record<string, string>
|
|
11
13
|
|
|
12
14
|
Inputs:
|
|
13
|
-
- finalState: { agents, systems, politics, metadata: { currentTime, startTime } }
|
|
15
|
+
- finalState: { agents, systems, politics, metadata: { currentTime, startTime, currentTurn } }
|
|
14
16
|
- outcomeLog: [{ turn, time, outcome: 'risky_success' | 'risky_failure' | 'conservative_success' | 'conservative_failure' }]
|
|
15
17
|
- leader: { name, archetype, hexaco }
|
|
16
18
|
- toolRegs: Record<dept, string[]> (department -> tool names)
|
|
17
19
|
- maxTurns: number
|
|
18
20
|
|
|
21
|
+
${buildStateShapeBlock(scenarioJson)}
|
|
22
|
+
|
|
19
23
|
Output: object with 5-7 classification dimensions (each 2-3 possible values e.g. "resilient" | "brittle") PLUS a "summary" key joining them with " · ".
|
|
20
24
|
|
|
21
25
|
Rules:
|
|
22
26
|
1. Scenario-relevant classification names (not Mars-specific)
|
|
23
|
-
2.
|
|
24
|
-
3.
|
|
25
|
-
4.
|
|
27
|
+
2. Reference only keys listed in AVAILABLE STATE SHAPE. Bad key access throws.
|
|
28
|
+
3. Base classifications on final state, outcome patterns, leader personality
|
|
29
|
+
4. Always include "summary"
|
|
30
|
+
5. NO external imports`;
|
|
26
31
|
}
|
|
27
32
|
const userPrompt = 'Return ONLY the arrow function. No markdown fences.';
|
|
28
33
|
export function parseResponse(text) {
|
|
@@ -38,11 +43,14 @@ export function parseResponse(text) {
|
|
|
38
43
|
return null;
|
|
39
44
|
}
|
|
40
45
|
}
|
|
41
|
-
function
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
function buildSmokeTest(scenarioJson) {
|
|
47
|
+
return (fn) => {
|
|
48
|
+
const fixture = buildScenarioFixture(scenarioJson);
|
|
49
|
+
const result = fn(fixture, [{ turn: 1, time: fixture.metadata.startTime, outcome: 'conservative_success' }], { name: 'Test', archetype: 'test', hexaco: { openness: 0.5, conscientiousness: 0.5, extraversion: 0.5, agreeableness: 0.5, emotionality: 0.5, honestyHumility: 0.5 } }, { engineering: ['tool1'] }, 8);
|
|
50
|
+
if (typeof result !== 'object' || !result.summary) {
|
|
51
|
+
throw new Error('Fingerprint must return object with summary key');
|
|
52
|
+
}
|
|
53
|
+
};
|
|
46
54
|
}
|
|
47
55
|
const fallback = (_fs, outcomeLog, leader, toolRegs, maxTurns) => {
|
|
48
56
|
const riskyWins = outcomeLog.filter(o => o.outcome === 'risky_success').length;
|
|
@@ -61,7 +69,7 @@ export async function generateFingerprintHook(scenarioJson, generateText, option
|
|
|
61
69
|
systemCacheable: buildSystemBlock(scenarioJson),
|
|
62
70
|
prompt: userPrompt,
|
|
63
71
|
parse: parseResponse,
|
|
64
|
-
smokeTest,
|
|
72
|
+
smokeTest: buildSmokeTest(scenarioJson),
|
|
65
73
|
fallback,
|
|
66
74
|
fallbackSource: '// Fallback fingerprint',
|
|
67
75
|
// Fingerprint is a small classifier function (~800 output tokens);
|
|
@@ -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;
|
|
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-milestones.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-milestones.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-milestones.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/generate-milestones.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAyFxD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAe3F;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,cAAc,EAC5B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CAyB1I"}
|
|
@@ -3,6 +3,8 @@ import { generateValidatedJson } from './llm-invocations/generateValidatedJson.j
|
|
|
3
3
|
function buildSystemBlock(scenarioJson) {
|
|
4
4
|
const labels = scenarioJson.labels ?? {};
|
|
5
5
|
const depts = (scenarioJson.departments ?? []).map((d) => d.id).join(', ');
|
|
6
|
+
const timeUnit = labels.timeUnitNoun ?? 'tick';
|
|
7
|
+
const timeUnitPlural = labels.timeUnitNounPlural ?? 'ticks';
|
|
6
8
|
return `You are generating milestone events for a simulation engine.
|
|
7
9
|
|
|
8
10
|
SCENARIO: ${labels.name ?? 'Unknown'}
|
|
@@ -10,6 +12,7 @@ SETTLEMENT TYPE: ${labels.settlementNoun ?? 'settlement'}
|
|
|
10
12
|
POPULATION NOUN: ${labels.populationNoun ?? 'members'}
|
|
11
13
|
DEPARTMENTS: ${depts}
|
|
12
14
|
DEFAULT TURNS: ${scenarioJson.setup?.defaultTurns ?? 12}
|
|
15
|
+
TIME UNIT: ${timeUnit} (plural: ${timeUnitPlural}). Use this vocabulary in turn descriptions, never hardcode "year"/"years".
|
|
13
16
|
|
|
14
17
|
Output shape:
|
|
15
18
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-milestones.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-milestones.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,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,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,OAAO;;YAEG,MAAM,CAAC,IAAI,IAAI,SAAS;mBACjB,MAAM,CAAC,cAAc,IAAI,YAAY;mBACrC,MAAM,CAAC,cAAc,IAAI,SAAS;eACtC,KAAK;iBACH,YAAY,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generate-milestones.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-milestones.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;
|
|
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"}
|
|
@@ -5,10 +5,14 @@ function buildSystemBlock(scenarioJson) {
|
|
|
5
5
|
const categories = typeof effects === 'object' && !Array.isArray(effects)
|
|
6
6
|
? Object.keys(effects)
|
|
7
7
|
: [];
|
|
8
|
+
const timeUnit = labels.timeUnitNoun ?? 'tick';
|
|
9
|
+
const politicsKeys = Object.keys((scenarioJson.world?.politics ?? {}));
|
|
8
10
|
return `You are generating a politics hook for a simulation engine.
|
|
9
11
|
|
|
10
12
|
SCENARIO: ${labels.name ?? 'Unknown'} — ${labels.settlementNoun ?? 'settlement'} simulation
|
|
11
13
|
EVENT CATEGORIES: ${categories.join(', ')}
|
|
14
|
+
TIME UNIT: ${timeUnit}
|
|
15
|
+
DECLARED POLITICS KEYS: ${politicsKeys.length ? politicsKeys.join(', ') : '(none declared; hook should return null)'}
|
|
12
16
|
|
|
13
17
|
Function signature: (category, outcome) => Record<string, number> | null
|
|
14
18
|
|
|
@@ -20,8 +24,9 @@ Rules:
|
|
|
20
24
|
1. Success → push toward independence/autonomy
|
|
21
25
|
2. Failure → push toward dependency/instability
|
|
22
26
|
3. 1-3 politics fields appropriate to this scenario
|
|
23
|
-
4.
|
|
24
|
-
5.
|
|
27
|
+
4. Only return keys listed under DECLARED POLITICS KEYS above; other keys are ignored by the kernel
|
|
28
|
+
5. Small deltas (0.01-0.10 for pct, 1-5 for ints)
|
|
29
|
+
6. NO external imports`;
|
|
25
30
|
}
|
|
26
31
|
const userPrompt = 'Return ONLY the arrow function. No markdown fences.';
|
|
27
32
|
export function parseResponse(text) {
|
|
@@ -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;AAInF,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,OAAO;;YAEG,MAAM,CAAC,IAAI,IAAI,SAAS,MAAM,MAAM,CAAC,cAAc,IAAI,YAAY;oBAC3D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"generate-politics.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-politics.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;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,4 +1,6 @@
|
|
|
1
1
|
import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
|
|
2
|
+
import { buildScenarioFixture } from './scenario-fixture.js';
|
|
3
|
+
import { buildStateShapeBlock } from './state-shape-block.js';
|
|
2
4
|
function buildSystemBlock(scenarioJson) {
|
|
3
5
|
const labels = scenarioJson.labels ?? {};
|
|
4
6
|
const depts = (scenarioJson.departments ?? []).map((d) => `- ${d.id}: ${d.label} (${d.role}) — ${d.instructions}`).join('\n');
|
|
@@ -11,17 +13,20 @@ ${depts}
|
|
|
11
13
|
Function signature: (ctx) => string[]
|
|
12
14
|
ctx shape:
|
|
13
15
|
- ctx.department: string (department ID)
|
|
14
|
-
- ctx.state: { agents, systems, politics, metadata: { currentTime } }
|
|
16
|
+
- ctx.state: { agents, systems, politics, metadata: { currentTime, startTime, currentTurn } }
|
|
15
17
|
- ctx.scenario: any
|
|
16
18
|
- ctx.researchPacket: { canonicalFacts[], counterpoints[], departmentNotes }
|
|
17
19
|
|
|
20
|
+
${buildStateShapeBlock(scenarioJson)}
|
|
21
|
+
|
|
18
22
|
For each department, compute and return 2-4 lines of scenario-relevant stats from ctx.state.
|
|
19
23
|
|
|
20
24
|
Rules:
|
|
21
25
|
1. Switch on ctx.department with a case per department ID listed above.
|
|
22
|
-
2. Access ctx.state.agents (filter alive), ctx.state.systems, ctx.state.politics.
|
|
23
|
-
3.
|
|
24
|
-
4.
|
|
26
|
+
2. Access ctx.state.agents (filter alive), ctx.state.systems, ctx.state.politics. These are the only state bags present at runtime.
|
|
27
|
+
3. Reference only the keys listed in AVAILABLE STATE SHAPE. Bad key access throws at validation or runtime.
|
|
28
|
+
4. Return string[]; empty array for unknown departments.
|
|
29
|
+
5. NO external imports, NO async.`;
|
|
25
30
|
}
|
|
26
31
|
const userPrompt = 'Return ONLY the arrow function. No markdown fences, no explanation.';
|
|
27
32
|
export function parseResponse(text) {
|
|
@@ -40,14 +45,10 @@ export function parseResponse(text) {
|
|
|
40
45
|
function buildSmokeTest(scenarioJson) {
|
|
41
46
|
return (fn) => {
|
|
42
47
|
const deptId = (scenarioJson.departments ?? [])[0]?.id ?? 'engineering';
|
|
48
|
+
const fixture = buildScenarioFixture(scenarioJson);
|
|
43
49
|
const result = fn({
|
|
44
50
|
department: deptId,
|
|
45
|
-
state:
|
|
46
|
-
agents: [{ core: { name: 'Test' }, health: { alive: true, boneDensityPct: 90, cumulativeRadiationMsv: 100, psychScore: 0.7 } }],
|
|
47
|
-
systems: { morale: 0.6, population: 80, foodMonthsReserve: 6, powerKw: 300, infrastructureModules: 10, scienceOutput: 5, lifeSupportCapacity: 100 },
|
|
48
|
-
politics: { earthDependencyPct: 50, governanceStatus: 'colonial' },
|
|
49
|
-
metadata: { currentTime: 2045 },
|
|
50
|
-
},
|
|
51
|
+
state: fixture,
|
|
51
52
|
scenario: scenarioJson,
|
|
52
53
|
researchPacket: { canonicalFacts: [], counterpoints: [], departmentNotes: {} },
|
|
53
54
|
});
|
|
@@ -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;
|
|
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;
|
|
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,11 +1,14 @@
|
|
|
1
1
|
import { generateValidatedCode } from './llm-invocations/generateValidatedCode.js';
|
|
2
2
|
function buildSystemBlock(scenarioJson) {
|
|
3
3
|
const labels = scenarioJson.labels ?? {};
|
|
4
|
+
const timeUnit = labels.timeUnitNoun ?? 'tick';
|
|
5
|
+
const timeUnitPlural = labels.timeUnitNounPlural ?? 'ticks';
|
|
4
6
|
return `You are generating a reaction context hook for a simulation engine.
|
|
5
7
|
|
|
6
8
|
SCENARIO: ${labels.name ?? 'Unknown'} — ${labels.settlementNoun ?? 'settlement'} simulation
|
|
7
9
|
POPULATION NOUN: ${labels.populationNoun ?? 'members'}
|
|
8
|
-
START
|
|
10
|
+
START TIME: ${scenarioJson.setup?.defaultStartTime ?? 0}
|
|
11
|
+
TIME UNIT: ${timeUnit} (plural: ${timeUnitPlural})
|
|
9
12
|
|
|
10
13
|
Function signature: (colonist, ctx) => string
|
|
11
14
|
|
|
@@ -19,7 +22,8 @@ Rules:
|
|
|
19
22
|
1. Return a string, not an object
|
|
20
23
|
2. 1-3 short sentences
|
|
21
24
|
3. Reference scenario-specific health concerns
|
|
22
|
-
4.
|
|
25
|
+
4. When mentioning elapsed time, use "${timeUnit}" / "${timeUnitPlural}" — never hardcode "year" / "years"
|
|
26
|
+
5. NO external imports`;
|
|
23
27
|
}
|
|
24
28
|
const userPrompt = 'Return ONLY the arrow function. No markdown fences.';
|
|
25
29
|
export function parseResponse(text) {
|
|
@@ -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;AAInF,SAAS,gBAAgB,CAAC,YAAiC;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC;IACzC,OAAO;;YAEG,MAAM,CAAC,IAAI,IAAI,SAAS,MAAM,MAAM,CAAC,cAAc,IAAI,YAAY;mBAC5D,MAAM,CAAC,cAAc,IAAI,SAAS;cACvC,YAAY,CAAC,KAAK,EAAE,gBAAgB,IAAI,
|
|
1
|
+
{"version":3,"file":"generate-reactions.js","sourceRoot":"","sources":["../../../src/engine/compiler/generate-reactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a runtime-accurate `SimulationState`-shaped fixture derived
|
|
3
|
+
* from a scenario's own `world.*` declarations. Used by every compiler
|
|
4
|
+
* generator's smokeTest so validation runs against the shape the hook
|
|
5
|
+
* will actually see at runtime — not a hardcoded Mars fixture that
|
|
6
|
+
* produces false positives and false negatives for non-Mars scenarios.
|
|
7
|
+
*
|
|
8
|
+
* Runtime `SimulationState` has `systems`, `politics`, `statuses`,
|
|
9
|
+
* `environment`, `agents`, `metadata` at the top level. `world.metrics`
|
|
10
|
+
* AND `world.capacities` both flatten into `state.systems`;
|
|
11
|
+
* `world.politics` / `world.statuses` / `world.environment` each map
|
|
12
|
+
* to their own runtime bag. The fixture mirrors that shape exactly.
|
|
13
|
+
*
|
|
14
|
+
* @module paracosm/engine/compiler/scenario-fixture
|
|
15
|
+
*/
|
|
16
|
+
import type { Agent } from '../core/state.js';
|
|
17
|
+
export interface ScenarioFixture {
|
|
18
|
+
systems: Record<string, number>;
|
|
19
|
+
politics: Record<string, number | string | boolean>;
|
|
20
|
+
statuses: Record<string, string | boolean>;
|
|
21
|
+
environment: Record<string, number | string | boolean>;
|
|
22
|
+
metadata: {
|
|
23
|
+
simulationId: string;
|
|
24
|
+
leaderId: string;
|
|
25
|
+
seed: number;
|
|
26
|
+
startTime: number;
|
|
27
|
+
currentTime: number;
|
|
28
|
+
currentTurn: number;
|
|
29
|
+
};
|
|
30
|
+
agents: Agent[];
|
|
31
|
+
eventLog: never[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Build a runtime-accurate `SimulationState`-shaped fixture from a
|
|
35
|
+
* scenario JSON. `state.systems` is a FLAT bag merged from the scenario's
|
|
36
|
+
* `world.metrics` AND `world.capacities` declarations (both map to
|
|
37
|
+
* runtime numbers under `state.systems`). `state.politics` carries
|
|
38
|
+
* `world.politics`. Mars-heritage defaults (population, morale) are
|
|
39
|
+
* overlaid so hooks that reference those still validate.
|
|
40
|
+
*
|
|
41
|
+
* Throws if `world.metrics` is missing — post-0.5.0 scenarios all
|
|
42
|
+
* carry the declaration bag, so a missing one indicates malformed
|
|
43
|
+
* input and should surface fast rather than falling back silently.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildScenarioFixture(scenarioJson: Record<string, unknown>): ScenarioFixture;
|
|
46
|
+
//# sourceMappingURL=scenario-fixture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-fixture.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/scenario-fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAW9C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACvD,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,KAAK,EAAE,CAAC;CACnB;AAgHD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CA4C3F"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
function coerceInitial(def) {
|
|
2
|
+
if (def.initial !== undefined)
|
|
3
|
+
return def.initial;
|
|
4
|
+
switch (def.type) {
|
|
5
|
+
case 'number': return 0;
|
|
6
|
+
case 'string': return '';
|
|
7
|
+
case 'boolean': return false;
|
|
8
|
+
default: return 0;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function coerceNumeric(def) {
|
|
12
|
+
const v = coerceInitial(def);
|
|
13
|
+
return typeof v === 'number' ? v : 0;
|
|
14
|
+
}
|
|
15
|
+
function coerceAny(def) {
|
|
16
|
+
return coerceInitial(def);
|
|
17
|
+
}
|
|
18
|
+
function mergeBagsNumeric(...bags) {
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const bag of bags) {
|
|
21
|
+
if (!bag)
|
|
22
|
+
continue;
|
|
23
|
+
for (const [key, def] of Object.entries(bag)) {
|
|
24
|
+
out[key] = coerceNumeric(def);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
function buildPoliticsBag(bag) {
|
|
30
|
+
const out = {};
|
|
31
|
+
if (!bag)
|
|
32
|
+
return out;
|
|
33
|
+
for (const [key, def] of Object.entries(bag)) {
|
|
34
|
+
out[key] = coerceAny(def);
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function buildStatusesBag(bag) {
|
|
39
|
+
const out = {};
|
|
40
|
+
if (!bag)
|
|
41
|
+
return out;
|
|
42
|
+
for (const [key, def] of Object.entries(bag)) {
|
|
43
|
+
const v = coerceInitial(def);
|
|
44
|
+
out[key] = typeof v === 'boolean' ? v : String(v);
|
|
45
|
+
}
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
function buildEnvironmentBag(bag) {
|
|
49
|
+
const out = {};
|
|
50
|
+
if (!bag)
|
|
51
|
+
return out;
|
|
52
|
+
for (const [key, def] of Object.entries(bag)) {
|
|
53
|
+
out[key] = coerceAny(def);
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
function buildSyntheticAgent(startTime) {
|
|
58
|
+
return {
|
|
59
|
+
core: {
|
|
60
|
+
id: 'fixture-agent-001',
|
|
61
|
+
name: 'Fixture Agent',
|
|
62
|
+
birthTime: startTime - 30,
|
|
63
|
+
marsborn: false,
|
|
64
|
+
department: 'engineering',
|
|
65
|
+
role: 'engineer',
|
|
66
|
+
},
|
|
67
|
+
health: {
|
|
68
|
+
alive: true,
|
|
69
|
+
psychScore: 0.7,
|
|
70
|
+
conditions: [],
|
|
71
|
+
},
|
|
72
|
+
career: {
|
|
73
|
+
specialization: 'general',
|
|
74
|
+
yearsExperience: 5,
|
|
75
|
+
rank: 'senior',
|
|
76
|
+
achievements: [],
|
|
77
|
+
},
|
|
78
|
+
social: {
|
|
79
|
+
partnerId: undefined,
|
|
80
|
+
childrenIds: [],
|
|
81
|
+
friendIds: [],
|
|
82
|
+
earthContacts: 3,
|
|
83
|
+
},
|
|
84
|
+
narrative: {
|
|
85
|
+
lifeEvents: [],
|
|
86
|
+
featured: false,
|
|
87
|
+
},
|
|
88
|
+
hexaco: {
|
|
89
|
+
openness: 0.5,
|
|
90
|
+
conscientiousness: 0.5,
|
|
91
|
+
extraversion: 0.5,
|
|
92
|
+
agreeableness: 0.5,
|
|
93
|
+
emotionality: 0.5,
|
|
94
|
+
honestyHumility: 0.5,
|
|
95
|
+
},
|
|
96
|
+
hexacoHistory: [],
|
|
97
|
+
memory: { shortTerm: [], longTerm: [], stances: {}, relationships: {} },
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Build a runtime-accurate `SimulationState`-shaped fixture from a
|
|
102
|
+
* scenario JSON. `state.systems` is a FLAT bag merged from the scenario's
|
|
103
|
+
* `world.metrics` AND `world.capacities` declarations (both map to
|
|
104
|
+
* runtime numbers under `state.systems`). `state.politics` carries
|
|
105
|
+
* `world.politics`. Mars-heritage defaults (population, morale) are
|
|
106
|
+
* overlaid so hooks that reference those still validate.
|
|
107
|
+
*
|
|
108
|
+
* Throws if `world.metrics` is missing — post-0.5.0 scenarios all
|
|
109
|
+
* carry the declaration bag, so a missing one indicates malformed
|
|
110
|
+
* input and should surface fast rather than falling back silently.
|
|
111
|
+
*/
|
|
112
|
+
export function buildScenarioFixture(scenarioJson) {
|
|
113
|
+
const world = scenarioJson.world;
|
|
114
|
+
if (!world || !world.metrics) {
|
|
115
|
+
throw new Error('buildScenarioFixture: scenario missing world.metrics declaration');
|
|
116
|
+
}
|
|
117
|
+
const setup = (scenarioJson.setup ?? {});
|
|
118
|
+
const startTime = typeof setup.defaultStartTime === 'number' ? setup.defaultStartTime : 0;
|
|
119
|
+
const scenarioId = scenarioJson.id ?? 'fixture-scenario';
|
|
120
|
+
// Mars-heritage defaults the kernel always populates, so hooks that
|
|
121
|
+
// read these continue to pass smokeTest even when the scenario doesn't
|
|
122
|
+
// declare them. Scenario-declared metrics and capacities overlay on
|
|
123
|
+
// top to populate the scenario's own keys.
|
|
124
|
+
const marsHeritageSystems = {
|
|
125
|
+
population: 100,
|
|
126
|
+
morale: 0.75,
|
|
127
|
+
};
|
|
128
|
+
const systems = { ...marsHeritageSystems, ...mergeBagsNumeric(world.metrics, world.capacities) };
|
|
129
|
+
return {
|
|
130
|
+
systems,
|
|
131
|
+
politics: buildPoliticsBag(world.politics),
|
|
132
|
+
statuses: buildStatusesBag(world.statuses),
|
|
133
|
+
environment: buildEnvironmentBag(world.environment),
|
|
134
|
+
metadata: {
|
|
135
|
+
simulationId: `fixture-${scenarioId}`,
|
|
136
|
+
leaderId: 'fixture-leader',
|
|
137
|
+
seed: 42,
|
|
138
|
+
startTime,
|
|
139
|
+
currentTime: startTime,
|
|
140
|
+
currentTurn: 0,
|
|
141
|
+
},
|
|
142
|
+
agents: [buildSyntheticAgent(startTime)],
|
|
143
|
+
eventLog: [],
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=scenario-fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-fixture.js","sourceRoot":"","sources":["../../../src/engine/compiler/scenario-fixture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the "AVAILABLE STATE SHAPE" block that every state-accessing
|
|
3
|
+
* generator's system prompt includes. Declares the exact flat key list
|
|
4
|
+
* on each runtime state bag so the LLM cannot silently hallucinate
|
|
5
|
+
* nested access patterns.
|
|
6
|
+
*
|
|
7
|
+
* Paracosm's runtime `SimulationState` carries `systems`, `politics`,
|
|
8
|
+
* `statuses`, `environment`, `agents`, `metadata` at the top level.
|
|
9
|
+
* Scenario-declared keys under `world.metrics` + `world.capacities`
|
|
10
|
+
* both flatten into `state.systems`. `world.politics` / `world.statuses`
|
|
11
|
+
* / `world.environment` each have their own runtime bag.
|
|
12
|
+
*
|
|
13
|
+
* @module paracosm/engine/compiler/state-shape-block
|
|
14
|
+
*/
|
|
15
|
+
export declare function buildStateShapeBlock(scenarioJson: Record<string, unknown>): string;
|
|
16
|
+
//# sourceMappingURL=state-shape-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-shape-block.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/state-shape-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA8BlF"}
|