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
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Paracosm Scenario Compiler
|
|
3
3
|
*
|
|
4
|
-
* Takes a
|
|
5
|
-
* all runtime hooks via LLM calls.
|
|
6
|
-
*
|
|
4
|
+
* Takes a canonical scenario JSON draft (the data portion of a ScenarioPackage)
|
|
5
|
+
* and generates all runtime hooks via LLM calls. Natural-language prompts,
|
|
6
|
+
* briefs, and URLs enter today through CompileOptions.seedText / seedUrl,
|
|
7
|
+
* which ground the draft before hook generation. A prompt-only authoring API
|
|
8
|
+
* should be a wrapper that first emits this same JSON contract, then calls this
|
|
9
|
+
* compiler.
|
|
7
10
|
*
|
|
8
11
|
* @example
|
|
9
12
|
* ```typescript
|
|
@@ -22,10 +25,10 @@ export type { CompileOptions, GenerateTextFn };
|
|
|
22
25
|
export { ingestSeed, ingestFromUrl } from './seed-ingestion.js';
|
|
23
26
|
export type { SeedIngestionOptions } from './seed-ingestion.js';
|
|
24
27
|
/**
|
|
25
|
-
* Compile a scenario JSON into a complete ScenarioPackage with generated hooks.
|
|
28
|
+
* Compile a scenario JSON draft into a complete ScenarioPackage with generated hooks.
|
|
26
29
|
*
|
|
27
|
-
* @param scenarioJson -
|
|
28
|
-
* @param options - Compiler options (provider, model, cache settings)
|
|
30
|
+
* @param scenarioJson - Canonical world draft (labels, departments, metrics, effects, etc.)
|
|
31
|
+
* @param options - Compiler options (provider, model, cache settings, seed text / URL grounding)
|
|
29
32
|
* @returns A complete ScenarioPackage ready for runSimulation()
|
|
30
33
|
*/
|
|
31
34
|
export declare function compileScenario(scenarioJson: Record<string, unknown>, options?: CompileOptions): Promise<ScenarioPackage>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAA8B,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAajE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAoFhE;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAiM1B"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Paracosm Scenario Compiler
|
|
3
3
|
*
|
|
4
|
-
* Takes a
|
|
5
|
-
* all runtime hooks via LLM calls.
|
|
6
|
-
*
|
|
4
|
+
* Takes a canonical scenario JSON draft (the data portion of a ScenarioPackage)
|
|
5
|
+
* and generates all runtime hooks via LLM calls. Natural-language prompts,
|
|
6
|
+
* briefs, and URLs enter today through CompileOptions.seedText / seedUrl,
|
|
7
|
+
* which ground the draft before hook generation. A prompt-only authoring API
|
|
8
|
+
* should be a wrapper that first emits this same JSON contract, then calls this
|
|
9
|
+
* compiler.
|
|
7
10
|
*
|
|
8
11
|
* @example
|
|
9
12
|
* ```typescript
|
|
@@ -111,10 +114,10 @@ function restoreHookFromCache(hookName, source) {
|
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
116
|
/**
|
|
114
|
-
* Compile a scenario JSON into a complete ScenarioPackage with generated hooks.
|
|
117
|
+
* Compile a scenario JSON draft into a complete ScenarioPackage with generated hooks.
|
|
115
118
|
*
|
|
116
|
-
* @param scenarioJson -
|
|
117
|
-
* @param options - Compiler options (provider, model, cache settings)
|
|
119
|
+
* @param scenarioJson - Canonical world draft (labels, departments, metrics, effects, etc.)
|
|
120
|
+
* @param options - Compiler options (provider, model, cache settings, seed text / URL grounding)
|
|
118
121
|
* @returns A complete ScenarioPackage ready for runSimulation()
|
|
119
122
|
*/
|
|
120
123
|
export async function compileScenario(scenarioJson, options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/compiler/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/compiler/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error thrown by sandbox-runner. Distinct class so callers can detect
|
|
3
|
+
* sandbox-specific failures vs ordinary user-code exceptions.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SandboxRunnerError extends Error {
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Validate that the user-supplied arrow-function code does not contain
|
|
10
|
+
* any always-banned pattern. Throws SandboxRunnerError on the first hit.
|
|
11
|
+
*
|
|
12
|
+
* Static regex validation alone is bypassable via obfuscation (Unicode
|
|
13
|
+
* escapes, string concatenation, constructor reflection). The runtime
|
|
14
|
+
* sandbox closes those gaps; this check is defense in depth and produces
|
|
15
|
+
* clearer error messages than the runtime would.
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateHookCode(code: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Run an LLM-generated arrow function `(...args) => result` inside the
|
|
20
|
+
* hardened sandbox and return the result. Throws SandboxRunnerError on
|
|
21
|
+
* validation failure, escape attempt, timeout, or thrown exception.
|
|
22
|
+
*
|
|
23
|
+
* Args are JSON-serialized into the sandbox source so the user code
|
|
24
|
+
* only sees sandbox-realm objects.
|
|
25
|
+
*/
|
|
26
|
+
export declare function runArrowSync<TArgs extends unknown[], TReturn>(userArrowCode: string, args: TArgs): TReturn;
|
|
27
|
+
/**
|
|
28
|
+
* ProgressionFn-shaped hook variant: the user fn returns void and is
|
|
29
|
+
* expected to mutate `ctx.agents` in place. Sandbox-side, the input is
|
|
30
|
+
* JSON-cloned (so mutations land on a sandbox-realm copy), the user fn
|
|
31
|
+
* is invoked for its side effects, then the mutated agents array is
|
|
32
|
+
* returned to host. Host-side, this function merges each cloned agent's
|
|
33
|
+
* fields back onto the original agent object so external references
|
|
34
|
+
* stay stable.
|
|
35
|
+
*/
|
|
36
|
+
export declare function runProgressionSync(userArrowCode: string, ctx: {
|
|
37
|
+
agents: Array<Record<string, unknown>>;
|
|
38
|
+
[k: string]: unknown;
|
|
39
|
+
}): void;
|
|
40
|
+
//# sourceMappingURL=sandbox-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-runner.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/sandbox-runner.ts"],"names":[],"mappings":"AA6EA;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMnD;AAwFD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EAC3D,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,KAAK,GACV,OAAO,CA+BT;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACpE,IAAI,CAqDN"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hardened synchronous node:vm wrapper for paracosm's compiled hooks.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the raw `new Function()` evaluation that previously executed
|
|
5
|
+
* LLM-generated arrow functions in the host process. Each invocation
|
|
6
|
+
* runs the user code in a fresh node:vm context with:
|
|
7
|
+
*
|
|
8
|
+
* - `codeGeneration: { strings: false, wasm: false }` blocks runtime
|
|
9
|
+
* `eval` and `Function()` reflection that bypass static regex validation.
|
|
10
|
+
* - Frozen console + explicit `process` / `globalThis` / `require` /
|
|
11
|
+
* `setTimeout` / `setInterval` / `fetch` set to undefined.
|
|
12
|
+
* - Wall-clock `timeout` enforced via vm.runInContext.
|
|
13
|
+
*
|
|
14
|
+
* The sandbox is intentionally synchronous (paracosm's runtime calls these
|
|
15
|
+
* hooks per-turn from sync code paths in kernel / orchestrator). Mirrors
|
|
16
|
+
* the hardenings in `@framers/agentos`'s `CodeSandbox.executeJavaScript`,
|
|
17
|
+
* which is async-only. Candidate for upstream consolidation when the
|
|
18
|
+
* runtime allows an async refactor.
|
|
19
|
+
*
|
|
20
|
+
* Inputs are JSON-round-tripped into the sandbox so the user code only
|
|
21
|
+
* sees sandbox-realm objects (host-realm prototype chain reflection
|
|
22
|
+
* cannot reach a host `Function` constructor with permissive
|
|
23
|
+
* codeGeneration).
|
|
24
|
+
*
|
|
25
|
+
* @module paracosm/engine/compiler/sandbox-runner
|
|
26
|
+
*/
|
|
27
|
+
import * as vm from 'node:vm';
|
|
28
|
+
/**
|
|
29
|
+
* Keys that must NEVER be exposed inside the sandbox even if a future
|
|
30
|
+
* caller passes extras. Drops them silently to keep the hardening intact.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Mirror of @framers/agentos CodeSandbox DANGEROUS_GLOBAL_KEYS so paracosm's
|
|
34
|
+
* sandbox-runner has the same hardening surface as the agentos forge sandbox.
|
|
35
|
+
*
|
|
36
|
+
* Categorized:
|
|
37
|
+
* - Host-state escape: process, global, globalThis, require
|
|
38
|
+
* - Code-generation reflection: eval, Function
|
|
39
|
+
* - Realm-reflection / introspection: Reflect, Proxy
|
|
40
|
+
* - Memory side-channels (Spectre family): SharedArrayBuffer, Atomics
|
|
41
|
+
* - Native compilation surface: WebAssembly
|
|
42
|
+
*/
|
|
43
|
+
const DANGEROUS_GLOBAL_KEYS = new Set([
|
|
44
|
+
'process',
|
|
45
|
+
'global',
|
|
46
|
+
'globalThis',
|
|
47
|
+
'require',
|
|
48
|
+
'eval',
|
|
49
|
+
'Function',
|
|
50
|
+
'Reflect',
|
|
51
|
+
'Proxy',
|
|
52
|
+
'WebAssembly',
|
|
53
|
+
'SharedArrayBuffer',
|
|
54
|
+
'Atomics',
|
|
55
|
+
]);
|
|
56
|
+
/**
|
|
57
|
+
* Static regex blocklist applied before any code reaches the runtime.
|
|
58
|
+
* Catches the common literal-pattern attempts; codeGeneration: false at
|
|
59
|
+
* runtime catches the obfuscated reflection variants.
|
|
60
|
+
*/
|
|
61
|
+
const ALWAYS_BANNED_PATTERNS = [
|
|
62
|
+
[/\beval\s*\(/, 'eval() is forbidden'],
|
|
63
|
+
[/\bFunction\s*\(/, 'Function() is forbidden'],
|
|
64
|
+
[/\bnew\s+Function\s*\(/, 'new Function() is forbidden'],
|
|
65
|
+
[/\brequire\s*\(/, 'require() is forbidden'],
|
|
66
|
+
[/\bimport\s+/, 'import statements are forbidden'],
|
|
67
|
+
[/\bimport\s*\(/, 'dynamic import() is forbidden'],
|
|
68
|
+
[/\bprocess\s*\./, 'process access is forbidden'],
|
|
69
|
+
[/\bchild_process\b/, 'child_process access is forbidden'],
|
|
70
|
+
[/\bfs\s*\./, 'fs access is forbidden'],
|
|
71
|
+
];
|
|
72
|
+
/** Wall-clock timeout per hook invocation in milliseconds. */
|
|
73
|
+
const HOOK_TIMEOUT_MS = 1000;
|
|
74
|
+
/**
|
|
75
|
+
* Error thrown by sandbox-runner. Distinct class so callers can detect
|
|
76
|
+
* sandbox-specific failures vs ordinary user-code exceptions.
|
|
77
|
+
*/
|
|
78
|
+
export class SandboxRunnerError extends Error {
|
|
79
|
+
constructor(message) {
|
|
80
|
+
super(message);
|
|
81
|
+
this.name = 'SandboxRunnerError';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Validate that the user-supplied arrow-function code does not contain
|
|
86
|
+
* any always-banned pattern. Throws SandboxRunnerError on the first hit.
|
|
87
|
+
*
|
|
88
|
+
* Static regex validation alone is bypassable via obfuscation (Unicode
|
|
89
|
+
* escapes, string concatenation, constructor reflection). The runtime
|
|
90
|
+
* sandbox closes those gaps; this check is defense in depth and produces
|
|
91
|
+
* clearer error messages than the runtime would.
|
|
92
|
+
*/
|
|
93
|
+
export function validateHookCode(code) {
|
|
94
|
+
for (const [pattern, message] of ALWAYS_BANNED_PATTERNS) {
|
|
95
|
+
if (pattern.test(code)) {
|
|
96
|
+
throw new SandboxRunnerError(`Sandbox validation failed: ${message}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Build the hardened global context object for the sandbox. Provides only
|
|
102
|
+
* safe builtins plus a frozen console stub. All dangerous globals are
|
|
103
|
+
* explicitly nulled so any reference inside the sandbox throws a clear
|
|
104
|
+
* `undefined` error rather than leaking host state.
|
|
105
|
+
*
|
|
106
|
+
* The `extras` parameter (currently used only for the JSON-stringified
|
|
107
|
+
* args bundle and the wrapped user function) is filtered against
|
|
108
|
+
* DANGEROUS_GLOBAL_KEYS before merging.
|
|
109
|
+
*/
|
|
110
|
+
function buildContext(extras = {}) {
|
|
111
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
112
|
+
const ctx = {
|
|
113
|
+
JSON,
|
|
114
|
+
Math,
|
|
115
|
+
Date,
|
|
116
|
+
Number,
|
|
117
|
+
String,
|
|
118
|
+
Boolean,
|
|
119
|
+
Array,
|
|
120
|
+
Object,
|
|
121
|
+
Map,
|
|
122
|
+
Set,
|
|
123
|
+
RegExp,
|
|
124
|
+
Error,
|
|
125
|
+
TypeError,
|
|
126
|
+
RangeError,
|
|
127
|
+
Promise,
|
|
128
|
+
parseInt,
|
|
129
|
+
parseFloat,
|
|
130
|
+
isNaN,
|
|
131
|
+
isFinite,
|
|
132
|
+
encodeURI,
|
|
133
|
+
decodeURI,
|
|
134
|
+
encodeURIComponent,
|
|
135
|
+
decodeURIComponent,
|
|
136
|
+
console: Object.freeze({
|
|
137
|
+
log: () => { },
|
|
138
|
+
warn: () => { },
|
|
139
|
+
error: () => { },
|
|
140
|
+
info: () => { },
|
|
141
|
+
debug: () => { },
|
|
142
|
+
}),
|
|
143
|
+
// Hardened-undefined: any reference inside the sandbox surfaces as
|
|
144
|
+
// a clear `undefined` rather than leaking the host equivalents.
|
|
145
|
+
process: undefined,
|
|
146
|
+
global: undefined,
|
|
147
|
+
globalThis: undefined,
|
|
148
|
+
require: undefined,
|
|
149
|
+
fetch: undefined,
|
|
150
|
+
setTimeout: undefined,
|
|
151
|
+
setInterval: undefined,
|
|
152
|
+
setImmediate: undefined,
|
|
153
|
+
clearTimeout: undefined,
|
|
154
|
+
clearInterval: undefined,
|
|
155
|
+
clearImmediate: undefined,
|
|
156
|
+
queueMicrotask: undefined,
|
|
157
|
+
// Realm intrinsics paracosm hooks have no legitimate need for. Blocks
|
|
158
|
+
// Reflect.construct(Function,...) and Proxy-based prototype attacks
|
|
159
|
+
// that would otherwise sidestep codeGeneration: { strings: false }.
|
|
160
|
+
// SharedArrayBuffer/Atomics close the Spectre side-channel surface;
|
|
161
|
+
// WebAssembly is already blocked via codeGeneration: { wasm: false }
|
|
162
|
+
// but nulled here for belt-and-suspenders.
|
|
163
|
+
Reflect: undefined,
|
|
164
|
+
Proxy: undefined,
|
|
165
|
+
WebAssembly: undefined,
|
|
166
|
+
SharedArrayBuffer: undefined,
|
|
167
|
+
Atomics: undefined,
|
|
168
|
+
};
|
|
169
|
+
for (const [key, value] of Object.entries(extras)) {
|
|
170
|
+
if (!DANGEROUS_GLOBAL_KEYS.has(key)) {
|
|
171
|
+
ctx[key] = value;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return ctx;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Translate node:vm errors into SandboxRunnerError so callers can catch
|
|
178
|
+
* a single class. Preserves the underlying message for debugging.
|
|
179
|
+
*/
|
|
180
|
+
function rethrowAsSandboxError(err) {
|
|
181
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
182
|
+
throw new SandboxRunnerError(`Sandbox execution failed: ${message}`);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Run an LLM-generated arrow function `(...args) => result` inside the
|
|
186
|
+
* hardened sandbox and return the result. Throws SandboxRunnerError on
|
|
187
|
+
* validation failure, escape attempt, timeout, or thrown exception.
|
|
188
|
+
*
|
|
189
|
+
* Args are JSON-serialized into the sandbox source so the user code
|
|
190
|
+
* only sees sandbox-realm objects.
|
|
191
|
+
*/
|
|
192
|
+
export function runArrowSync(userArrowCode, args) {
|
|
193
|
+
validateHookCode(userArrowCode);
|
|
194
|
+
const context = vm.createContext(buildContext(), {
|
|
195
|
+
name: 'paracosm-hook-sandbox',
|
|
196
|
+
codeGeneration: { strings: false, wasm: false },
|
|
197
|
+
});
|
|
198
|
+
const wrappedCode = `
|
|
199
|
+
const __userFn = (${userArrowCode});
|
|
200
|
+
const __args = ${JSON.stringify(args)};
|
|
201
|
+
__userFn(...__args)
|
|
202
|
+
`;
|
|
203
|
+
let sandboxResult;
|
|
204
|
+
try {
|
|
205
|
+
sandboxResult = vm.runInContext(wrappedCode, context, {
|
|
206
|
+
timeout: HOOK_TIMEOUT_MS,
|
|
207
|
+
breakOnSigint: false,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
rethrowAsSandboxError(err);
|
|
212
|
+
}
|
|
213
|
+
// JSON round-trip rebases the result onto host-realm prototypes so
|
|
214
|
+
// host-side equality checks (deepStrictEqual, instanceof Object)
|
|
215
|
+
// behave normally. Safe for paracosm's plain-data hook outputs.
|
|
216
|
+
if (sandboxResult === undefined || typeof sandboxResult !== 'object') {
|
|
217
|
+
return sandboxResult;
|
|
218
|
+
}
|
|
219
|
+
return JSON.parse(JSON.stringify(sandboxResult));
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* ProgressionFn-shaped hook variant: the user fn returns void and is
|
|
223
|
+
* expected to mutate `ctx.agents` in place. Sandbox-side, the input is
|
|
224
|
+
* JSON-cloned (so mutations land on a sandbox-realm copy), the user fn
|
|
225
|
+
* is invoked for its side effects, then the mutated agents array is
|
|
226
|
+
* returned to host. Host-side, this function merges each cloned agent's
|
|
227
|
+
* fields back onto the original agent object so external references
|
|
228
|
+
* stay stable.
|
|
229
|
+
*/
|
|
230
|
+
export function runProgressionSync(userArrowCode, ctx) {
|
|
231
|
+
validateHookCode(userArrowCode);
|
|
232
|
+
const context = vm.createContext(buildContext(), {
|
|
233
|
+
name: 'paracosm-hook-progression-sandbox',
|
|
234
|
+
codeGeneration: { strings: false, wasm: false },
|
|
235
|
+
});
|
|
236
|
+
const wrappedCode = `
|
|
237
|
+
const __userFn = (${userArrowCode});
|
|
238
|
+
const __ctx = ${JSON.stringify(ctx)};
|
|
239
|
+
__userFn(__ctx);
|
|
240
|
+
__ctx.agents
|
|
241
|
+
`;
|
|
242
|
+
let mutatedAgents;
|
|
243
|
+
try {
|
|
244
|
+
mutatedAgents = vm.runInContext(wrappedCode, context, {
|
|
245
|
+
timeout: HOOK_TIMEOUT_MS,
|
|
246
|
+
breakOnSigint: false,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
rethrowAsSandboxError(err);
|
|
251
|
+
}
|
|
252
|
+
if (!Array.isArray(mutatedAgents)) {
|
|
253
|
+
throw new SandboxRunnerError('Progression hook did not return a mutated agents array');
|
|
254
|
+
}
|
|
255
|
+
// Field-level merge back into the host agents. Preserves the host's
|
|
256
|
+
// array + object identities so other runtime references stay stable.
|
|
257
|
+
for (let i = 0; i < ctx.agents.length; i++) {
|
|
258
|
+
const original = ctx.agents[i];
|
|
259
|
+
const updated = mutatedAgents[i];
|
|
260
|
+
if (!original || !updated)
|
|
261
|
+
continue;
|
|
262
|
+
for (const key of Object.keys(updated)) {
|
|
263
|
+
const updatedField = updated[key];
|
|
264
|
+
const originalField = original[key];
|
|
265
|
+
if (originalField &&
|
|
266
|
+
updatedField &&
|
|
267
|
+
typeof originalField === 'object' &&
|
|
268
|
+
typeof updatedField === 'object' &&
|
|
269
|
+
!Array.isArray(originalField)) {
|
|
270
|
+
Object.assign(originalField, updatedField);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
original[key] = updatedField;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=sandbox-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-runner.js","sourceRoot":"","sources":["../../../src/engine/compiler/sandbox-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH;;;;;;;;;;GAUG;AACH,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IACzD,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,aAAa;IACb,mBAAmB;IACnB,SAAS;CACV,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,sBAAsB,GAA6C;IACvE,CAAC,aAAa,EAAE,qBAAqB,CAAC;IACtC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IAC9C,CAAC,uBAAuB,EAAE,6BAA6B,CAAC;IACxD,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IAC5C,CAAC,aAAa,EAAE,iCAAiC,CAAC;IAClD,CAAC,eAAe,EAAE,+BAA+B,CAAC;IAClD,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IACjD,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;IAC1D,CAAC,WAAW,EAAE,wBAAwB,CAAC;CACxC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,sBAAsB,EAAE,CAAC;QACxD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,kBAAkB,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,SAAkC,EAAE;IACxD,uDAAuD;IACvD,MAAM,GAAG,GAA4B;QACnC,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,MAAM;QACN,OAAO;QACP,KAAK;QACL,MAAM;QACN,GAAG;QACH,GAAG;QACH,MAAM;QACN,KAAK;QACL,SAAS;QACT,UAAU;QACV,OAAO;QACP,QAAQ;QACR,UAAU;QACV,KAAK;QACL,QAAQ;QACR,SAAS;QACT,SAAS;QACT,kBAAkB;QAClB,kBAAkB;QAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;YACb,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;SAChB,CAAC;QACF,mEAAmE;QACnE,gEAAgE;QAChE,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,sEAAsE;QACtE,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;QACpE,qEAAqE;QACrE,2CAA2C;QAC3C,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,SAAS;QACtB,iBAAiB,EAAE,SAAS;QAC5B,OAAO,EAAE,SAAS;KACnB,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,GAAY;IACzC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,IAAI,kBAAkB,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,aAAqB,EACrB,IAAW;IAEX,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE;QAC/C,IAAI,EAAE,uBAAuB;QAC7B,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;KAChD,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG;wBACE,aAAa;qBAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;GAEtC,CAAC;IAEF,IAAI,aAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE;YACpD,OAAO,EAAE,eAAe;YACxB,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,mEAAmE;IACnE,iEAAiE;IACjE,gEAAgE;IAChE,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,aAAwB,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAY,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAAqB,EACrB,GAAqE;IAErE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE;QAC/C,IAAI,EAAE,mCAAmC;QACzC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;KAChD,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG;wBACE,aAAa;oBACjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;;GAGpC,CAAC;IAEF,IAAI,aAA6C,CAAC;IAClD,IAAI,CAAC;QACH,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE;YACpD,OAAO,EAAE,eAAe;YACxB,aAAa,EAAE,KAAK;SACrB,CAAmC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,kBAAkB,CAC1B,wDAAwD,CACzD,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,qEAAqE;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,SAAS;QACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpC,IACE,aAAa;gBACb,YAAY;gBACZ,OAAO,aAAa,KAAK,QAAQ;gBACjC,OAAO,YAAY,KAAK,QAAQ;gBAChC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAC7B,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,aAAuB,EAAE,YAAsB,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Runtime `SimulationState` has `systems`, `politics`, `statuses`,
|
|
9
9
|
* `environment`, `agents`, `metadata` at the top level. `world.metrics`
|
|
10
|
-
* AND `world.capacities` both flatten into `state.
|
|
10
|
+
* AND `world.capacities` both flatten into `state.metrics`;
|
|
11
11
|
* `world.politics` / `world.statuses` / `world.environment` each map
|
|
12
12
|
* to their own runtime bag. The fixture mirrors that shape exactly.
|
|
13
13
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { Agent } from '../core/state.js';
|
|
17
17
|
export interface ScenarioFixture {
|
|
18
|
-
|
|
18
|
+
metrics: Record<string, number>;
|
|
19
19
|
politics: Record<string, number | string | boolean>;
|
|
20
20
|
statuses: Record<string, string | boolean>;
|
|
21
21
|
environment: Record<string, number | string | boolean>;
|
|
@@ -32,9 +32,9 @@ export interface ScenarioFixture {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Build a runtime-accurate `SimulationState`-shaped fixture from a
|
|
35
|
-
* scenario JSON. `state.
|
|
35
|
+
* scenario JSON. `state.metrics` is a FLAT bag merged from the scenario's
|
|
36
36
|
* `world.metrics` AND `world.capacities` declarations (both map to
|
|
37
|
-
* runtime numbers under `state.
|
|
37
|
+
* runtime numbers under `state.metrics`). `state.politics` carries
|
|
38
38
|
* `world.politics`. Mars-heritage defaults (population, morale) are
|
|
39
39
|
* overlaid so hooks that reference those still validate.
|
|
40
40
|
*
|
|
@@ -99,9 +99,9 @@ function buildSyntheticAgent(startTime) {
|
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
101
|
* Build a runtime-accurate `SimulationState`-shaped fixture from a
|
|
102
|
-
* scenario JSON. `state.
|
|
102
|
+
* scenario JSON. `state.metrics` is a FLAT bag merged from the scenario's
|
|
103
103
|
* `world.metrics` AND `world.capacities` declarations (both map to
|
|
104
|
-
* runtime numbers under `state.
|
|
104
|
+
* runtime numbers under `state.metrics`). `state.politics` carries
|
|
105
105
|
* `world.politics`. Mars-heritage defaults (population, morale) are
|
|
106
106
|
* overlaid so hooks that reference those still validate.
|
|
107
107
|
*
|
|
@@ -125,9 +125,9 @@ export function buildScenarioFixture(scenarioJson) {
|
|
|
125
125
|
population: 100,
|
|
126
126
|
morale: 0.75,
|
|
127
127
|
};
|
|
128
|
-
const
|
|
128
|
+
const metrics = { ...marsHeritageSystems, ...mergeBagsNumeric(world.metrics, world.capacities) };
|
|
129
129
|
return {
|
|
130
|
-
|
|
130
|
+
metrics,
|
|
131
131
|
politics: buildPoliticsBag(world.politics),
|
|
132
132
|
statuses: buildStatusesBag(world.statuses),
|
|
133
133
|
environment: buildEnvironmentBag(world.environment),
|
|
@@ -26,9 +26,9 @@ export interface SeedIngestionOptions {
|
|
|
26
26
|
onProgress?: (step: string, status: 'start' | 'done') => void;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Ingest
|
|
29
|
+
* Ingest prompt, brief, or document text and produce a KnowledgeBundle for a scenario.
|
|
30
30
|
*
|
|
31
|
-
* @param seedText - The raw text content of the
|
|
31
|
+
* @param seedText - The raw text content of the prompt, brief, or document
|
|
32
32
|
* @param options - Ingestion options (LLM function, web search toggle)
|
|
33
33
|
* @returns A KnowledgeBundle ready to merge into a ScenarioPackage
|
|
34
34
|
*/
|
|
@@ -168,9 +168,9 @@ function assembleKnowledgeBundle(extracted, searchResults) {
|
|
|
168
168
|
return { topics, categoryMapping };
|
|
169
169
|
}
|
|
170
170
|
/**
|
|
171
|
-
* Ingest
|
|
171
|
+
* Ingest prompt, brief, or document text and produce a KnowledgeBundle for a scenario.
|
|
172
172
|
*
|
|
173
|
-
* @param seedText - The raw text content of the
|
|
173
|
+
* @param seedText - The raw text content of the prompt, brief, or document
|
|
174
174
|
* @param options - Ingestion options (LLM function, web search toggle)
|
|
175
175
|
* @returns A KnowledgeBundle ready to merge into a ScenarioPackage
|
|
176
176
|
*/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Paracosm's runtime `SimulationState` carries `systems`, `politics`,
|
|
8
8
|
* `statuses`, `environment`, `agents`, `metadata` at the top level.
|
|
9
9
|
* Scenario-declared keys under `world.metrics` + `world.capacities`
|
|
10
|
-
* both flatten into `state.
|
|
10
|
+
* both flatten into `state.metrics`. `world.politics` / `world.statuses`
|
|
11
11
|
* / `world.environment` each have their own runtime bag.
|
|
12
12
|
*
|
|
13
13
|
* @module paracosm/engine/compiler/state-shape-block
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Paracosm's runtime `SimulationState` carries `systems`, `politics`,
|
|
8
8
|
* `statuses`, `environment`, `agents`, `metadata` at the top level.
|
|
9
9
|
* Scenario-declared keys under `world.metrics` + `world.capacities`
|
|
10
|
-
* both flatten into `state.
|
|
10
|
+
* both flatten into `state.metrics`. `world.politics` / `world.statuses`
|
|
11
11
|
* / `world.environment` each have their own runtime bag.
|
|
12
12
|
*
|
|
13
13
|
* @module paracosm/engine/compiler/state-shape-block
|
|
@@ -23,14 +23,14 @@ export function buildStateShapeBlock(scenarioJson) {
|
|
|
23
23
|
const labels = (scenarioJson.labels ?? {});
|
|
24
24
|
const timeUnit = labels.timeUnitNoun ?? 'tick';
|
|
25
25
|
const timeUnitPlural = labels.timeUnitNounPlural ?? 'ticks';
|
|
26
|
-
// world.metrics and world.capacities both flatten into state.
|
|
26
|
+
// world.metrics and world.capacities both flatten into state.metrics at runtime.
|
|
27
27
|
const systemsKeys = Array.from(new Set([...keys(world.metrics), ...keys(world.capacities)]));
|
|
28
28
|
const politicsKeys = keys(world.politics);
|
|
29
29
|
const statusesKeys = keys(world.statuses);
|
|
30
30
|
const environmentKeys = keys(world.environment);
|
|
31
31
|
return `AVAILABLE STATE SHAPE (read-only, flat):
|
|
32
32
|
|
|
33
|
-
state.
|
|
33
|
+
state.metrics = Record<string, number>
|
|
34
34
|
declared keys: ${listOrNone(systemsKeys)}
|
|
35
35
|
(population + morale also present as Mars-heritage defaults; scenario may omit them.)
|
|
36
36
|
state.politics = Record<string, number | string | boolean>
|
|
@@ -43,8 +43,8 @@ state.agents = Array<{ core, health, career, social, narrative, hexaco, promotio
|
|
|
43
43
|
state.metadata = { simulationId, leaderId, seed, startTime, currentTime, currentTurn }
|
|
44
44
|
|
|
45
45
|
RULES:
|
|
46
|
-
- Access pattern is state.<bag>.<key> — flat, never nested. state.
|
|
47
|
-
- Only reference keys in the declared lists above. Unknown keys are undefined and will throw on .toFixed() / nested property access. Defensive access like \`(state.
|
|
46
|
+
- Access pattern is state.<bag>.<key> — flat, never nested. state.metrics.<key> is always a number.
|
|
47
|
+
- Only reference keys in the declared lists above. Unknown keys are undefined and will throw on .toFixed() / nested property access. Defensive access like \`(state.metrics.foo ?? 0)\` is safer than bare \`state.metrics.foo\`.
|
|
48
48
|
- Time is measured in ${timeUnit} units (plural: ${timeUnitPlural}). Use that vocabulary in any user-visible strings.`;
|
|
49
49
|
}
|
|
50
50
|
//# sourceMappingURL=state-shape-block.js.map
|
|
@@ -43,9 +43,9 @@ export interface CompileOptions {
|
|
|
43
43
|
generateText?: GenerateTextFn;
|
|
44
44
|
/** Progress callback for each hook being generated. */
|
|
45
45
|
onProgress?: (hookName: string, status: 'generating' | 'cached' | 'done' | 'fallback') => void;
|
|
46
|
-
/**
|
|
46
|
+
/** Prompt, brief, or document text to ingest into the scenario's knowledge bundle via LLM extraction + optional web search. */
|
|
47
47
|
seedText?: string;
|
|
48
|
-
/**
|
|
48
|
+
/** URL to fetch and ingest as source material. If set, seedText is ignored. */
|
|
49
49
|
seedUrl?: string;
|
|
50
50
|
/** Enable live web search during seed ingestion. Requires search API keys. Default: true. */
|
|
51
51
|
webSearch?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,eAAe,EACX,MAAM,GACN;IACE,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,KACF,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,uDAAuD;IACvD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC;IAC/F
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/compiler/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,eAAe,EACX,MAAM,GACN;IACE,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,KACF,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,uDAAuD;IACvD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC;IAC/F,+HAA+H;IAC/H,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B"}
|
|
@@ -90,7 +90,7 @@ export function validateFingerprint(fn) {
|
|
|
90
90
|
try {
|
|
91
91
|
const mockState = {
|
|
92
92
|
agents: [makeTestColonist()],
|
|
93
|
-
|
|
93
|
+
metrics: { morale: 0.6, population: 80, foodMonthsReserve: 6, powerKw: 300, infrastructureModules: 10, scienceOutput: 5, lifeSupportCapacity: 100, pressurizedVolumeM3: 2000, waterLitersPerDay: 500 },
|
|
94
94
|
politics: { earthDependencyPct: 50, governanceStatus: 'earth-governed', independencePressure: 0.3 },
|
|
95
95
|
statuses: {},
|
|
96
96
|
environment: {},
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { SimulationState, Agent, TurnEvent, HexacoProfile, TurnOutcome, Department } from './state.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { WorldMetrics, WorldPolitics } from './state.js';
|
|
3
3
|
import type { ScenarioPackage } from '../types.js';
|
|
4
4
|
import { type KeyPersonnel } from './agent-generator.js';
|
|
5
5
|
import type { KernelSnapshot } from './snapshot.js';
|
|
6
6
|
export interface SystemsPatch {
|
|
7
|
-
|
|
7
|
+
metrics?: Partial<WorldMetrics>;
|
|
8
8
|
politics?: Partial<WorldPolitics>;
|
|
9
9
|
agentUpdates?: Array<{
|
|
10
10
|
agentId: string;
|
|
@@ -27,7 +27,7 @@ export interface SimulationInitOverrides {
|
|
|
27
27
|
* hardcoded defaults only.
|
|
28
28
|
*/
|
|
29
29
|
scenario?: ScenarioPackage;
|
|
30
|
-
startingResources?: Partial<
|
|
30
|
+
startingResources?: Partial<WorldMetrics>;
|
|
31
31
|
startingPolitics?: Partial<WorldPolitics>;
|
|
32
32
|
startingStatuses?: Record<string, string | boolean>;
|
|
33
33
|
startingEnvironment?: Record<string, number | string | boolean>;
|
|
@@ -90,7 +90,7 @@ export declare class SimulationKernel {
|
|
|
90
90
|
/** Promote a colonist to a department head role. */
|
|
91
91
|
promoteAgent(agentId: string, dept: Department, role: string, promotedBy: string): void;
|
|
92
92
|
/** Apply additive deltas to world systems (not absolute values). */
|
|
93
|
-
applySystemDeltas(deltas: Partial<
|
|
93
|
+
applySystemDeltas(deltas: Partial<WorldMetrics>, events?: TurnEvent[]): void;
|
|
94
94
|
/** Apply additive deltas to world politics. */
|
|
95
95
|
applyPoliticsDeltas(deltas: Partial<WorldPolitics>, events?: TurnEvent[]): void;
|
|
96
96
|
/** Apply personality drift to all promoted colonists. */
|