paracosm 0.7.455 → 0.7.458
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/cli/run-dashboard.d.ts +8 -5
- package/dist/cli/run-dashboard.d.ts.map +1 -1
- package/dist/cli/run-dashboard.js +8 -5
- package/dist/cli/run-dashboard.js.map +1 -1
- package/dist/cli/run.js +8 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/engine/index.d.ts +8 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +11 -1
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/schema/artifact.d.ts +4 -4
- package/dist/engine/schema/primitives.d.ts +7 -7
- package/dist/engine/trait-models/ai-agent.d.ts +24 -0
- package/dist/engine/trait-models/ai-agent.d.ts.map +1 -0
- package/dist/engine/trait-models/ai-agent.js +160 -0
- package/dist/engine/trait-models/ai-agent.js.map +1 -0
- package/dist/engine/trait-models/builtins.d.ts +17 -0
- package/dist/engine/trait-models/builtins.d.ts.map +1 -0
- package/dist/engine/trait-models/builtins.js +32 -0
- package/dist/engine/trait-models/builtins.js.map +1 -0
- package/dist/engine/trait-models/cue-translator.d.ts +58 -0
- package/dist/engine/trait-models/cue-translator.d.ts.map +1 -0
- package/dist/engine/trait-models/cue-translator.js +73 -0
- package/dist/engine/trait-models/cue-translator.js.map +1 -0
- package/dist/engine/trait-models/drift.d.ts +53 -0
- package/dist/engine/trait-models/drift.d.ts.map +1 -0
- package/dist/engine/trait-models/drift.js +88 -0
- package/dist/engine/trait-models/drift.js.map +1 -0
- package/dist/engine/trait-models/hexaco.d.ts +22 -0
- package/dist/engine/trait-models/hexaco.d.ts.map +1 -0
- package/dist/engine/trait-models/hexaco.js +168 -0
- package/dist/engine/trait-models/hexaco.js.map +1 -0
- package/dist/engine/trait-models/index.d.ts +162 -0
- package/dist/engine/trait-models/index.d.ts.map +1 -0
- package/dist/engine/trait-models/index.js +156 -0
- package/dist/engine/trait-models/index.js.map +1 -0
- package/dist/runtime/schemas/department.d.ts +6 -6
- package/package.json +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trait Model Registry. Pluggable interface for leader / agent
|
|
3
|
+
* personality (or, for non-human leaders, decision-tendency) models.
|
|
4
|
+
*
|
|
5
|
+
* Today paracosm ships two built-in models:
|
|
6
|
+
* - 'hexaco' six-axis Ashton-Lee personality (the historical default)
|
|
7
|
+
* - 'ai-agent' six-axis AI-system tendency model
|
|
8
|
+
*
|
|
9
|
+
* Adding a third model post-hoc is a single `traitModelRegistry.register(...)`
|
|
10
|
+
* call. See `docs/superpowers/specs/2026-04-26-trait-model-generalization-design.md`.
|
|
11
|
+
*
|
|
12
|
+
* @module paracosm/engine/trait-models
|
|
13
|
+
*/
|
|
14
|
+
/* ─────────────────────────── registry ─────────────────────────── */
|
|
15
|
+
/**
|
|
16
|
+
* Thrown when a TraitProfile references an unregistered modelId.
|
|
17
|
+
*/
|
|
18
|
+
export class UnknownTraitModelError extends Error {
|
|
19
|
+
modelId;
|
|
20
|
+
registered;
|
|
21
|
+
constructor(modelId, registered) {
|
|
22
|
+
const list = registered.length > 0 ? registered.join(', ') : '(none)';
|
|
23
|
+
super(`Unknown trait model id: '${modelId}'. ` +
|
|
24
|
+
`Registered models: ${list}. ` +
|
|
25
|
+
`If this artifact was created by a newer paracosm version, upgrade. ` +
|
|
26
|
+
`If you registered a custom model, ensure paracosm/engine/trait-models loads first.`);
|
|
27
|
+
this.modelId = modelId;
|
|
28
|
+
this.registered = registered;
|
|
29
|
+
this.name = 'UnknownTraitModelError';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* In-memory map of TraitModel by id. The runtime singleton lives at
|
|
34
|
+
* `traitModelRegistry`; tests and isolated callers can construct
|
|
35
|
+
* their own via `new TraitModelRegistry()`.
|
|
36
|
+
*/
|
|
37
|
+
export class TraitModelRegistry {
|
|
38
|
+
models = new Map();
|
|
39
|
+
/**
|
|
40
|
+
* Register a model. Throws if a model with the same id is already
|
|
41
|
+
* registered (registration-time-only; no live re-binding).
|
|
42
|
+
*/
|
|
43
|
+
register(model) {
|
|
44
|
+
if (this.models.has(model.id)) {
|
|
45
|
+
throw new Error(`TraitModelRegistry.register: id '${model.id}' is already registered. ` +
|
|
46
|
+
`Re-registration is not supported; use a unique id.`);
|
|
47
|
+
}
|
|
48
|
+
this.assertValid(model);
|
|
49
|
+
this.models.set(model.id, model);
|
|
50
|
+
}
|
|
51
|
+
/** Return the model or `undefined` if not registered. */
|
|
52
|
+
get(modelId) {
|
|
53
|
+
return this.models.get(modelId);
|
|
54
|
+
}
|
|
55
|
+
/** Return the model or throw `UnknownTraitModelError`. */
|
|
56
|
+
require(modelId) {
|
|
57
|
+
const model = this.models.get(modelId);
|
|
58
|
+
if (!model)
|
|
59
|
+
throw new UnknownTraitModelError(modelId, this.list().map(m => m.id));
|
|
60
|
+
return model;
|
|
61
|
+
}
|
|
62
|
+
/** All registered models in registration order. */
|
|
63
|
+
list() {
|
|
64
|
+
return Array.from(this.models.values());
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Validate model shape: axes match defaults + drift + cues, ids are
|
|
68
|
+
* kebab-case, defaults are in [0, 1].
|
|
69
|
+
*/
|
|
70
|
+
assertValid(model) {
|
|
71
|
+
if (!/^[a-z0-9-]+$/.test(model.id)) {
|
|
72
|
+
throw new Error(`TraitModel.id must be kebab-case: '${model.id}'`);
|
|
73
|
+
}
|
|
74
|
+
if (model.axes.length < 2 || model.axes.length > 12) {
|
|
75
|
+
throw new Error(`TraitModel.axes count must be 2..12, got ${model.axes.length}`);
|
|
76
|
+
}
|
|
77
|
+
const axisIds = new Set();
|
|
78
|
+
for (const axis of model.axes) {
|
|
79
|
+
// Axis ids accept kebab-case OR camelCase identifier-safe strings.
|
|
80
|
+
// The hexaco model's `honestyHumility` axis is camelCase to match
|
|
81
|
+
// the legacy LeaderConfig.hexaco.honestyHumility field name so the
|
|
82
|
+
// back-compat resolver can synthesize TraitProfile.traits from
|
|
83
|
+
// the legacy field without renaming. New models should still
|
|
84
|
+
// prefer kebab-case for new axes.
|
|
85
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(axis.id)) {
|
|
86
|
+
throw new Error(`TraitAxis.id must be identifier-safe: '${axis.id}' (model: ${model.id})`);
|
|
87
|
+
}
|
|
88
|
+
if (axisIds.has(axis.id)) {
|
|
89
|
+
throw new Error(`Duplicate axis id '${axis.id}' in model '${model.id}'`);
|
|
90
|
+
}
|
|
91
|
+
axisIds.add(axis.id);
|
|
92
|
+
const def = model.defaults[axis.id];
|
|
93
|
+
if (typeof def !== 'number' || def < 0 || def > 1 || Number.isNaN(def)) {
|
|
94
|
+
throw new Error(`TraitModel '${model.id}' axis '${axis.id}': defaults must be a number in [0, 1], got ${def}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Sanity check drift / cues only reference declared axes; missing
|
|
98
|
+
// axes are tolerated (treated as zero / no cue).
|
|
99
|
+
for (const axisId of Object.keys(model.drift.outcomes)) {
|
|
100
|
+
if (!axisIds.has(axisId)) {
|
|
101
|
+
throw new Error(`TraitModel '${model.id}' drift.outcomes references unknown axis '${axisId}'`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
for (const axisId of Object.keys(model.cues)) {
|
|
105
|
+
if (!axisIds.has(axisId)) {
|
|
106
|
+
throw new Error(`TraitModel '${model.id}' cues references unknown axis '${axisId}'`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Process-wide singleton registry. The hexaco + ai-agent built-ins
|
|
113
|
+
* register on import via `engine/trait-models/builtins.ts` (which is
|
|
114
|
+
* imported by `engine/index.ts`). External consumers should `import
|
|
115
|
+
* { traitModelRegistry } from 'paracosm/engine/trait-models'`.
|
|
116
|
+
*/
|
|
117
|
+
export const traitModelRegistry = new TraitModelRegistry();
|
|
118
|
+
/* ─────────────────────────── helpers ─────────────────────────── */
|
|
119
|
+
/**
|
|
120
|
+
* Clamp a numeric trait value to [0, 1]. Used by the drift dispatcher
|
|
121
|
+
* after applying outcome / leader-pull / role-activation deltas.
|
|
122
|
+
*/
|
|
123
|
+
export function clampTrait(value) {
|
|
124
|
+
if (Number.isNaN(value))
|
|
125
|
+
return 0.5;
|
|
126
|
+
if (value < 0)
|
|
127
|
+
return 0;
|
|
128
|
+
if (value > 1)
|
|
129
|
+
return 1;
|
|
130
|
+
return value;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Compute the zone for a trait value: 'low' when <= 0.35, 'high' when
|
|
134
|
+
* >= 0.65, 'mid' otherwise. Used by the cue translator.
|
|
135
|
+
*/
|
|
136
|
+
export function traitZone(value) {
|
|
137
|
+
if (value <= 0.35)
|
|
138
|
+
return 'low';
|
|
139
|
+
if (value >= 0.65)
|
|
140
|
+
return 'high';
|
|
141
|
+
return 'mid';
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Fill a partial trait map with model defaults so every axis has a
|
|
145
|
+
* value. Idempotent: existing keys are preserved.
|
|
146
|
+
*/
|
|
147
|
+
export function withDefaults(partial, model) {
|
|
148
|
+
const out = { ...model.defaults };
|
|
149
|
+
for (const axis of model.axes) {
|
|
150
|
+
if (axis.id in partial) {
|
|
151
|
+
out[axis.id] = clampTrait(partial[axis.id]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/trait-models/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,18 +17,18 @@ export declare const CitationSchema: z.ZodObject<{
|
|
|
17
17
|
}, z.core.$strip>;
|
|
18
18
|
export declare const RiskSchema: z.ZodObject<{
|
|
19
19
|
severity: z.ZodEnum<{
|
|
20
|
-
critical: "critical";
|
|
21
20
|
low: "low";
|
|
22
|
-
medium: "medium";
|
|
23
21
|
high: "high";
|
|
22
|
+
critical: "critical";
|
|
23
|
+
medium: "medium";
|
|
24
24
|
}>;
|
|
25
25
|
description: z.ZodString;
|
|
26
26
|
}, z.core.$strip>;
|
|
27
27
|
export declare const OpportunitySchema: z.ZodObject<{
|
|
28
28
|
impact: z.ZodEnum<{
|
|
29
29
|
low: "low";
|
|
30
|
-
medium: "medium";
|
|
31
30
|
high: "high";
|
|
31
|
+
medium: "medium";
|
|
32
32
|
}>;
|
|
33
33
|
description: z.ZodString;
|
|
34
34
|
}, z.core.$strip>;
|
|
@@ -82,18 +82,18 @@ export declare const DepartmentReportSchema: z.ZodObject<{
|
|
|
82
82
|
}, z.core.$strip>>>;
|
|
83
83
|
risks: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
84
84
|
severity: z.ZodEnum<{
|
|
85
|
-
critical: "critical";
|
|
86
85
|
low: "low";
|
|
87
|
-
medium: "medium";
|
|
88
86
|
high: "high";
|
|
87
|
+
critical: "critical";
|
|
88
|
+
medium: "medium";
|
|
89
89
|
}>;
|
|
90
90
|
description: z.ZodString;
|
|
91
91
|
}, z.core.$strip>>>;
|
|
92
92
|
opportunities: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
93
93
|
impact: z.ZodEnum<{
|
|
94
94
|
low: "low";
|
|
95
|
-
medium: "medium";
|
|
96
95
|
high: "high";
|
|
96
|
+
medium: "medium";
|
|
97
97
|
}>;
|
|
98
98
|
description: z.ZodString;
|
|
99
99
|
}, z.core.$strip>>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "paracosm",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.458",
|
|
4
4
|
"description": "Prompt/document/URL-grounded structured world model for AI agents: typed ScenarioPackages, deterministic kernels, HEXACO leaders, LLM events, runtime tool forging, and reproducible counterfactual RunArtifacts. Built on AgentOS.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/engine/index.js",
|