paracosm 0.9.1022 → 0.9.1026
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 +35 -22
- package/assets/landing.css +0 -67
- package/dist/dashboard/dist/assets/{index-Da6eIzNW.js → index-DozeSllQ.js} +7 -5
- package/dist/dashboard/dist/assets/{pdf-CdfMQ2jQ.js → pdf-CZ47W0ov.js} +1 -1
- package/dist/dashboard/dist/index.html +24 -22
- package/dist/dashboard/dist/llms-full.txt +1 -1
- package/dist/dashboard/dist/sitemap.xml +23 -27
- package/dist/dashboard/landing.html +21 -32
- package/dist/server/rate-limiter.d.ts +9 -0
- package/dist/server/rate-limiter.d.ts.map +1 -1
- package/dist/server/rate-limiter.js +17 -0
- package/dist/server/rate-limiter.js.map +1 -1
- package/dist/server/server-app.d.ts +1 -1
- package/dist/server/server-app.d.ts.map +1 -1
- package/dist/server/server-app.js +33 -20
- package/dist/server/server-app.js.map +1 -1
- package/dist/server/site-analytics.d.ts +39 -0
- package/dist/server/site-analytics.d.ts.map +1 -0
- package/dist/server/site-analytics.js +51 -0
- package/dist/server/site-analytics.js.map +1 -0
- package/dist/server/stores/session.d.ts +6 -4
- package/dist/server/stores/session.d.ts.map +1 -1
- package/dist/server/stores/session.js +5 -3
- package/dist/server/stores/session.js.map +1 -1
- package/dist/server/stores/sqlite-run-history.d.ts +8 -12
- package/dist/server/stores/sqlite-run-history.d.ts.map +1 -1
- package/dist/server/stores/sqlite-run-history.js +6 -6
- package/dist/server/stores/sqlite-run-history.js.map +1 -1
- package/dist/server/stores/waitlist.d.ts +9 -6
- package/dist/server/stores/waitlist.d.ts.map +1 -1
- package/dist/server/stores/waitlist.js +8 -5
- package/dist/server/stores/waitlist.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -459,7 +459,7 @@ Programmatic surfaces: `paracosm` root (`run`, `runMany`, `WorldModel`, `compile
|
|
|
459
459
|
|
|
460
460
|
For non-SSE consumers there's `POST /simulate` (gated on `PARACOSM_ENABLE_SIMULATE_ENDPOINT=true`) and nine read-and-replay routes under `/api/v1/*`. Wire-level details: [`docs/HTTP_API.md`](docs/HTTP_API.md).
|
|
461
461
|
|
|
462
|
-
Storage: SQLite
|
|
462
|
+
Storage: SQLite through `@framers/sql-storage-adapter` (better-sqlite3, or sql.js when the native module cannot load). Run history (Library) lives in `data/runs.db` under `APP_DIR`, the working directory when unset (`PARACOSM_RUN_HISTORY_DB_PATH` moves it), and saved sessions (Load menu) in `data/sessions.db`; `STORAGE_ADAPTER` and `DATABASE_URL` have no effect on either. Admin write routes (`/admin/sessions/save`, `/admin/data/wipe`) require both `ADMIN_WRITE=true` and an `ADMIN_TOKEN` bearer; off by default.
|
|
463
463
|
|
|
464
464
|
---
|
|
465
465
|
|
|
@@ -467,28 +467,41 @@ Storage: SQLite by default, Postgres / sql.js / IndexedDB via `STORAGE_ADAPTER=`
|
|
|
467
467
|
|
|
468
468
|
```
|
|
469
469
|
src/
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
470
|
+
index.ts the package root: run, runMany, WorldModel, compileScenario,
|
|
471
|
+
the built-in scenarios, trait models, presets and types
|
|
472
|
+
api/ run() and runMany()
|
|
473
|
+
engine/ scenario contract, compiler and deterministic kernel
|
|
474
|
+
core/ kernel: seeded RNG, state, snapshots, progression (paracosm/core)
|
|
475
|
+
compiler/ scenario draft + source grounding to ScenarioPackage (paracosm/compiler)
|
|
476
|
+
schema/ RunArtifact types and Zod schemas (paracosm/schema)
|
|
477
|
+
digital-twin/ WorldModel as DigitalTwin (paracosm/digital-twin)
|
|
478
|
+
scenarios/ loads Mars Genesis and Lunar Outpost from scenarios/*.json
|
|
479
|
+
data-driven-hooks/ turns a scenario's JSON hooks into runtime hooks
|
|
480
|
+
physics/ per-agent progression physics a scenario names in its JSON
|
|
481
|
+
traits/ trait models: HEXACO and the AI-agent model
|
|
482
|
+
registries/ effects, events and metrics
|
|
483
|
+
presets/ actor presets
|
|
484
|
+
provider/ provider key resolution
|
|
485
|
+
|
|
486
|
+
runtime/ simulation execution
|
|
487
|
+
orchestrator/ turn pipeline: event director, departments, commander, reactions
|
|
488
|
+
agents/ agent reactions, memory and post-run chat
|
|
489
|
+
world-model/ the WorldModel facade: simulate, replay, fork, intervene, batch
|
|
490
|
+
swarm/ views over a run's agent swarm (paracosm/swarm)
|
|
491
|
+
research/ citation and research memory
|
|
492
|
+
validators/ Zod validators for LLM responses
|
|
493
|
+
economics/ cost tracking and pricing
|
|
494
|
+
io/ output writer, artifact assembly, SSE envelopes
|
|
495
|
+
util/ parsers and shared helpers
|
|
496
|
+
|
|
497
|
+
llm/ validated LLM calls shared by the runtime and the compiler
|
|
498
|
+
cli/ the paracosm command
|
|
499
|
+
server/ the dashboard's HTTP and SSE server
|
|
500
|
+
dashboard/ the React + Vite dashboard at /sim, and the landing page
|
|
490
501
|
```
|
|
491
502
|
|
|
503
|
+
[docs/architecture/INTERNAL_LAYOUT.md](https://github.com/framerslab/paracosm/blob/master/docs/architecture/INTERNAL_LAYOUT.md) describes each folder.
|
|
504
|
+
|
|
492
505
|
The engine owns the chassis. The scenario owns the domain. The kernel handles state, time, randomness, and invariants. The scenario handles event categories, department instructions, progression hooks, and research citations. The orchestrator connects them.
|
|
493
506
|
|
|
494
507
|
---
|
|
@@ -518,7 +531,7 @@ Paracosm uses [AgentOS](https://agentos.sh/en) for agent orchestration, LLM disp
|
|
|
518
531
|
|---|---|---|
|
|
519
532
|
| Where | [paracosm.agentos.sh/sim](https://paracosm.agentos.sh/sim), in the browser, without an account. | Your machine or server: `npm install paracosm` for the SDK and the CLI, `paracosm dashboard` for the same dashboard at `http://localhost:3456`. |
|
|
520
533
|
| Model keys | The host's keys, or your own OpenAI or Anthropic key entered in Settings. | Your own keys, from the environment or a `.env` file. |
|
|
521
|
-
| Limits | Runs on the host's keys are capped in turns, population and departments, and each IP address has a daily run limit. Your own key lifts both. |
|
|
534
|
+
| Limits | Runs on the host's keys are capped in turns, population and departments, and each IP address has a daily run limit. Your own key lifts both. | No hosted quotas: the SDK and `paracosm run` cap no turns, population, departments or daily runs. The API has its own bounds: `runMany()` and `WorldModel.quickstart()` take 2 to 6 actors and throw outside that range, `run()` runs two and returns the first, and a dashboard run takes 2 to 300 actors (a fork takes 1). The dashboard server limits runs on its own keys to `RATE_LIMIT` per IP address per day (1 when unset); `RATE_LIMIT=0` turns the limit off. |
|
|
522
535
|
| Cost | Free to try. | Free. You pay your model provider for the runs you make. |
|
|
523
536
|
| Support | Community via Discord and GitHub. | Community via Discord and GitHub. |
|
|
524
537
|
|
package/assets/landing.css
CHANGED
|
@@ -780,50 +780,6 @@ a:hover { text-decoration: underline; }
|
|
|
780
780
|
.feat p { font-size: var(--font-md); color: var(--t2); line-height: 1.7; }
|
|
781
781
|
.feat-ref { font-size: var(--font-2xs); color: var(--t4); margin-top: 10px; font-family: var(--mono); border-top: 1px solid var(--border); padding-top: 8px; }
|
|
782
782
|
|
|
783
|
-
/* ── Flow Diagram ─────────────────────────────────────────────────────────── */
|
|
784
|
-
|
|
785
|
-
.flow-wrap { position: relative; margin: 48px 0; padding: 40px 0; }
|
|
786
|
-
|
|
787
|
-
/* Pin the connector to the vertical center of the icon-ring row.
|
|
788
|
-
padding-top (40px) + half the ring height (64 / 2 = 32px) = 72px.
|
|
789
|
-
Was `top: 50%`, which scaled with the tallest node's paragraph and
|
|
790
|
-
started cutting through the title/description text as soon as the
|
|
791
|
-
copy got long enough. */
|
|
792
|
-
.flow-line { position: absolute; top: 72px; left: 60px; right: 60px; height: 2px; background: var(--border); z-index: 0; }
|
|
793
|
-
.flow-line-fill { height: 100%; width: 0; background: var(--grad); transition: width 1.5s ease; }
|
|
794
|
-
.flow-line-fill.active { width: 100%; }
|
|
795
|
-
|
|
796
|
-
.flow { display: flex; justify-content: space-between; position: relative; z-index: 1; }
|
|
797
|
-
|
|
798
|
-
.flow-node { display: flex; flex-direction: column; align-items: center; text-align: center; width: 22%; position: relative; }
|
|
799
|
-
|
|
800
|
-
.flow-ring {
|
|
801
|
-
width: 64px; height: 64px;
|
|
802
|
-
border-radius: 50%;
|
|
803
|
-
border: 2px solid var(--border);
|
|
804
|
-
display: flex; align-items: center; justify-content: center;
|
|
805
|
-
background: var(--bg);
|
|
806
|
-
transition: all .5s;
|
|
807
|
-
margin-bottom: 14px;
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
.flow-ring svg { width: 28px; height: 28px; opacity: .7; transition: opacity .3s; }
|
|
811
|
-
.flow-ring.active { border-color: var(--amber); }
|
|
812
|
-
.flow-ring.active svg { opacity: 1; }
|
|
813
|
-
|
|
814
|
-
.flow-num { font-family: var(--mono); font-size: var(--font-2xs); font-weight: 700; color: var(--t4); letter-spacing: 1px; margin-bottom: 4px; }
|
|
815
|
-
.flow-node h3 { font-family: var(--mono); font-size: var(--font-md); font-weight: 700; color: var(--t1); margin-bottom: 4px; }
|
|
816
|
-
.flow-node p { font-size: var(--font-xs); color: var(--t3); line-height: 1.5; max-width: 180px; }
|
|
817
|
-
|
|
818
|
-
/* ── Divergence Visualization ─────────────────────────────────────────────── */
|
|
819
|
-
|
|
820
|
-
.diverge { display: flex; gap: 20px; margin-top: 48px; }
|
|
821
|
-
.diverge-side { flex: 1; border-radius: 8px; padding: 24px; border: 1px solid var(--border); background: var(--bg3); transition: all .3s; }
|
|
822
|
-
.diverge-side:hover { border-color: var(--border-hl); }
|
|
823
|
-
.diverge-side h3 { font-family: var(--mono); font-size: var(--font-lg); font-weight: 700; margin-bottom: 8px; }
|
|
824
|
-
.diverge-bar { height: 6px; border-radius: 3px; margin: 6px 0; overflow: hidden; background: var(--border); }
|
|
825
|
-
.diverge-fill { height: 100%; border-radius: 3px; transition: width 1s ease; }
|
|
826
|
-
|
|
827
783
|
/* ── Scenarios ────────────────────────────────────────────────────────────── */
|
|
828
784
|
|
|
829
785
|
.scenarios { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
|
|
@@ -902,14 +858,6 @@ a:hover { text-decoration: underline; }
|
|
|
902
858
|
width: 100%;
|
|
903
859
|
}
|
|
904
860
|
|
|
905
|
-
/* ── Pricing ──────────────────────────────────────────────────────────────── */
|
|
906
|
-
|
|
907
|
-
.pricing-banner { background: var(--bg3); border: 1px solid var(--border); border-radius: 12px; padding: 40px; text-align: center; max-width: 700px; margin: 0 auto; backdrop-filter: blur(12px); }
|
|
908
|
-
.pricing-banner h3 { font-family: var(--mono); font-size: var(--font-2xl); font-weight: 700; color: var(--t1); margin-bottom: 8px; }
|
|
909
|
-
.pricing-banner p { font-size: var(--font-lg); color: var(--t2); line-height: 1.8; margin-bottom: 8px; }
|
|
910
|
-
.pricing-tiers { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin: 20px 0; }
|
|
911
|
-
.pricing-tier { font-family: var(--mono); font-size: var(--font-sm); font-weight: 700; padding: 6px 16px; border-radius: 6px; background: var(--bg4); color: var(--t2); border: 1px solid var(--border); }
|
|
912
|
-
|
|
913
861
|
/* ── Code Blocks ──────────────────────────────────────────────────────────── */
|
|
914
862
|
|
|
915
863
|
.code-sec { margin-top: 56px; width: 100%; max-width: 720px; }
|
|
@@ -1263,19 +1211,8 @@ html:not(.js) .rv {
|
|
|
1263
1211
|
* step instead of staggering across a 20px window (.arch used to
|
|
1264
1212
|
* collapse at 880, .scenarios at 900 — visible double reflow). */
|
|
1265
1213
|
.arch { grid-template-columns: 1fr; }
|
|
1266
|
-
.flow { flex-direction: column; align-items: stretch; gap: 28px; }
|
|
1267
|
-
.flow-line { display: none; }
|
|
1268
|
-
/* Desktop keeps each node at width:22% so four fit across the row. On
|
|
1269
|
-
mobile the flex direction flips to column, but without widening the
|
|
1270
|
-
node the 22% cap turns every stacked block into a narrow centered
|
|
1271
|
-
strip with huge empty gutters. Let each node take the full column
|
|
1272
|
-
width and the description paragraph read at a natural line length. */
|
|
1273
|
-
.flow-node { width: 100%; max-width: 520px; margin: 0 auto; }
|
|
1274
|
-
.flow-node p { max-width: none; font-size: var(--font-md); line-height: 1.6; }
|
|
1275
|
-
.diverge { flex-direction: column; }
|
|
1276
1214
|
.contact-grid { grid-template-columns: 1fr; }
|
|
1277
1215
|
.hero-chips { gap: 6px; }
|
|
1278
|
-
.pricing-tiers { flex-direction: column; align-items: center; }
|
|
1279
1216
|
}
|
|
1280
1217
|
|
|
1281
1218
|
|
|
@@ -1317,9 +1254,6 @@ html:not(.js) .rv {
|
|
|
1317
1254
|
}
|
|
1318
1255
|
|
|
1319
1256
|
.light .arch-row { background: rgba(248, 242, 228, .7); border-color: var(--border); box-shadow: 0 2px 8px rgba(60, 40, 10, .06); }
|
|
1320
|
-
.light .flow-ring { background: var(--bg); border-color: var(--border); }
|
|
1321
|
-
.light .diverge-side { background: var(--bg3); border-color: var(--border); }
|
|
1322
|
-
.light .pricing-banner { background: var(--bg3); border-color: var(--border); }
|
|
1323
1257
|
.light .contact-card { background: var(--bg3); border-color: var(--border); }
|
|
1324
1258
|
.light .faq-item { border-bottom-color: var(--border); }
|
|
1325
1259
|
|
|
@@ -1355,7 +1289,6 @@ html:not(.js) .rv {
|
|
|
1355
1289
|
.light footer { background: var(--bg2); border-top-color: var(--border); }
|
|
1356
1290
|
.light .banner::before { opacity: .15; }
|
|
1357
1291
|
.light .pc-badge { background: var(--bg4); color: var(--amber); border-color: var(--border); }
|
|
1358
|
-
.light .pricing-tier { background: var(--bg); color: var(--t2); border-color: var(--border); }
|
|
1359
1292
|
.light .theme-toggle { color: var(--t3); border-color: var(--border); }
|
|
1360
1293
|
.light .theme-toggle:hover { color: var(--t1); border-color: var(--border-hl); }
|
|
1361
1294
|
|