velixar-mcp-server 0.2.4 → 1.2.0
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 +120 -64
- package/dist/api.d.ts +64 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +405 -0
- package/dist/api.js.map +1 -0
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +52 -0
- package/dist/errors.js.map +1 -0
- package/dist/justify.d.ts +9 -0
- package/dist/justify.d.ts.map +1 -0
- package/dist/justify.js +114 -0
- package/dist/justify.js.map +1 -0
- package/dist/prompts.d.ts +88 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +693 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +25 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +278 -0
- package/dist/resources.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +392 -0
- package/dist/server.js.map +1 -0
- package/dist/simulation/personas.d.ts +41 -0
- package/dist/simulation/personas.d.ts.map +1 -0
- package/dist/simulation/personas.js +173 -0
- package/dist/simulation/personas.js.map +1 -0
- package/dist/simulation/report.d.ts +28 -0
- package/dist/simulation/report.d.ts.map +1 -0
- package/dist/simulation/report.js +105 -0
- package/dist/simulation/report.js.map +1 -0
- package/dist/simulation/runner.d.ts +63 -0
- package/dist/simulation/runner.d.ts.map +1 -0
- package/dist/simulation/runner.js +167 -0
- package/dist/simulation/runner.js.map +1 -0
- package/dist/temporal_merge.d.ts +70 -0
- package/dist/temporal_merge.d.ts.map +1 -0
- package/dist/temporal_merge.js +258 -0
- package/dist/temporal_merge.js.map +1 -0
- package/dist/tools/clairvoyance.d.ts +9 -0
- package/dist/tools/clairvoyance.d.ts.map +1 -0
- package/dist/tools/clairvoyance.js +321 -0
- package/dist/tools/clairvoyance.js.map +1 -0
- package/dist/tools/cognitive.d.ts +10 -0
- package/dist/tools/cognitive.d.ts.map +1 -0
- package/dist/tools/cognitive.js +462 -0
- package/dist/tools/cognitive.js.map +1 -0
- package/dist/tools/construction.d.ts +9 -0
- package/dist/tools/construction.d.ts.map +1 -0
- package/dist/tools/construction.js +350 -0
- package/dist/tools/construction.js.map +1 -0
- package/dist/tools/graph.d.ts +14 -0
- package/dist/tools/graph.d.ts.map +1 -0
- package/dist/tools/graph.js +263 -0
- package/dist/tools/graph.js.map +1 -0
- package/dist/tools/graph_sanitizer.d.ts +24 -0
- package/dist/tools/graph_sanitizer.d.ts.map +1 -0
- package/dist/tools/graph_sanitizer.js +79 -0
- package/dist/tools/graph_sanitizer.js.map +1 -0
- package/dist/tools/lifecycle.d.ts +9 -0
- package/dist/tools/lifecycle.d.ts.map +1 -0
- package/dist/tools/lifecycle.js +1091 -0
- package/dist/tools/lifecycle.js.map +1 -0
- package/dist/tools/livedata.d.ts +9 -0
- package/dist/tools/livedata.d.ts.map +1 -0
- package/dist/tools/livedata.js +222 -0
- package/dist/tools/livedata.js.map +1 -0
- package/dist/tools/memory.d.ts +10 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +275 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/recall.d.ts +9 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +206 -0
- package/dist/tools/recall.js.map +1 -0
- package/dist/tools/retrieval.d.ts +9 -0
- package/dist/tools/retrieval.d.ts.map +1 -0
- package/dist/tools/retrieval.js +338 -0
- package/dist/tools/retrieval.js.map +1 -0
- package/dist/tools/system.d.ts +12 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +228 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/types.d.ts +234 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +79 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +174 -0
- package/dist/validate.js.map +1 -0
- package/dist/validate_retrieval.d.ts +33 -0
- package/dist/validate_retrieval.d.ts.map +1 -0
- package/dist/validate_retrieval.js +97 -0
- package/dist/validate_retrieval.js.map +1 -0
- package/package.json +22 -6
- package/server.json +2 -2
- package/.github/workflows/ci.yml +0 -18
- package/.mcpregistry_github_token +0 -1
- package/.mcpregistry_registry_token +0 -1
- package/src/index.js +0 -262
- package/tests/server.test.js +0 -193
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/simulation/personas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { SimulationResult } from './runner.js';
|
|
2
|
+
import type { Persona } from './personas.js';
|
|
3
|
+
export interface PredictionReport {
|
|
4
|
+
badge: '🔬 THOUGHT EXPERIMENT' | '📊 DATA-INFORMED';
|
|
5
|
+
prediction: string;
|
|
6
|
+
confidenceRange: {
|
|
7
|
+
low: number;
|
|
8
|
+
high: number;
|
|
9
|
+
label: string;
|
|
10
|
+
};
|
|
11
|
+
keyFactors: string[];
|
|
12
|
+
risks: string[];
|
|
13
|
+
assumptions: string[];
|
|
14
|
+
timeline: string;
|
|
15
|
+
dissentingViews: string[];
|
|
16
|
+
dataFoundation: {
|
|
17
|
+
totalMemoriesUsed: number;
|
|
18
|
+
groundedPersonas: number;
|
|
19
|
+
archetypePersonas: number;
|
|
20
|
+
devilsAdvocates: number;
|
|
21
|
+
dataSufficiency: number;
|
|
22
|
+
classification: string;
|
|
23
|
+
};
|
|
24
|
+
disclaimer: string;
|
|
25
|
+
trackPrompt: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function generateReport(sim: SimulationResult, personas: Persona[], coverageRatio: number, seedMemoryCount: number, minDataThreshold: number): PredictionReport;
|
|
28
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/simulation/report.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE;QACd,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,OAAO,EAAE,EACnB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,gBAAgB,CA+FlB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// ── Prediction Report Generator ──
|
|
2
|
+
// Build 1.3: Structured report from simulation results.
|
|
3
|
+
// H1.3: Confidence = consensus * min(1.0, coverage / 0.7)
|
|
4
|
+
// H1.5: Data Foundation section. H1.6: Model limitation disclaimer.
|
|
5
|
+
// H7.1: Ranges not points. H7.2: "What could go wrong" prominent.
|
|
6
|
+
// Chain 8: Post-hoc fact-check (async annotation).
|
|
7
|
+
// Chain 9: Badge system 🔬 vs 📊.
|
|
8
|
+
export function generateReport(sim, personas, coverageRatio, seedMemoryCount, minDataThreshold) {
|
|
9
|
+
// Chain 9: Badge system
|
|
10
|
+
const dataInformed = coverageRatio >= 0.4 && seedMemoryCount >= minDataThreshold;
|
|
11
|
+
const badge = dataInformed ? '📊 DATA-INFORMED' : '🔬 THOUGHT EXPERIMENT';
|
|
12
|
+
// H1.3: Confidence includes data sufficiency
|
|
13
|
+
const consensusStrength = sim.convergenceRound
|
|
14
|
+
? Math.min(1.0, 0.5 + (sim.rounds.length - sim.convergenceRound) * 0.1)
|
|
15
|
+
: 0.4;
|
|
16
|
+
const dataSufficiency = Math.min(1.0, coverageRatio / 0.7);
|
|
17
|
+
const rawConfidence = consensusStrength * dataSufficiency;
|
|
18
|
+
// H7.1: Ranges not points
|
|
19
|
+
const confidenceRange = {
|
|
20
|
+
low: Math.max(0, Math.round((rawConfidence - 0.15) * 100) / 100),
|
|
21
|
+
high: Math.min(1, Math.round((rawConfidence + 0.15) * 100) / 100),
|
|
22
|
+
label: rawConfidence >= 0.7 ? 'moderate-high' : rawConfidence >= 0.4 ? 'moderate' : 'low',
|
|
23
|
+
};
|
|
24
|
+
// Extract key factors from state bullets
|
|
25
|
+
const keyFactors = sim.finalState
|
|
26
|
+
.filter(b => /\b(because|due to|driven by|caused by|result of|key factor)\b/i.test(b))
|
|
27
|
+
.slice(0, 5);
|
|
28
|
+
if (keyFactors.length === 0) {
|
|
29
|
+
// Fallback: use last 3 state bullets
|
|
30
|
+
keyFactors.push(...sim.finalState.slice(-3));
|
|
31
|
+
}
|
|
32
|
+
// H7.2: Risks from devil's advocate actions (prominent, not buried)
|
|
33
|
+
const devilActions = sim.rounds
|
|
34
|
+
.flatMap(r => r.actions.filter(a => a.personaType === 'devils_advocate' && a.active))
|
|
35
|
+
.map(a => a.action)
|
|
36
|
+
.filter(Boolean);
|
|
37
|
+
const risks = devilActions.length > 0
|
|
38
|
+
? devilActions.slice(0, 3)
|
|
39
|
+
: ['No devil\'s advocate perspectives were generated — risks may be underexplored.'];
|
|
40
|
+
// H7.3: Assumptions
|
|
41
|
+
const assumptions = extractAssumptions(sim);
|
|
42
|
+
// Dissenting views
|
|
43
|
+
const dissentingViews = sim.rounds
|
|
44
|
+
.flatMap(r => r.actions.filter(a => a.active && a.personaType !== 'devils_advocate'))
|
|
45
|
+
.filter(a => {
|
|
46
|
+
const consensus = sim.emergentConsensus.toLowerCase();
|
|
47
|
+
const action = a.action.toLowerCase();
|
|
48
|
+
return consensus.includes('leave') ? action.includes('stay') :
|
|
49
|
+
consensus.includes('stay') ? action.includes('leave') :
|
|
50
|
+
false;
|
|
51
|
+
})
|
|
52
|
+
.map(a => `${a.personaName}: ${a.action.slice(0, 150)}`)
|
|
53
|
+
.slice(0, 3);
|
|
54
|
+
// Data foundation
|
|
55
|
+
const groundedCount = personas.filter(p => p.type === 'data_grounded').length;
|
|
56
|
+
const archetypeCount = personas.filter(p => p.type === 'archetype').length;
|
|
57
|
+
const devilCount = personas.filter(p => p.type === 'devils_advocate').length;
|
|
58
|
+
const dataFoundation = {
|
|
59
|
+
totalMemoriesUsed: seedMemoryCount,
|
|
60
|
+
groundedPersonas: groundedCount,
|
|
61
|
+
archetypePersonas: archetypeCount,
|
|
62
|
+
devilsAdvocates: devilCount,
|
|
63
|
+
dataSufficiency: Math.round(dataSufficiency * 100) / 100,
|
|
64
|
+
classification: dataInformed
|
|
65
|
+
? `Data-informed: ${seedMemoryCount} relevant memories found, ${groundedCount} personas grounded in real data.`
|
|
66
|
+
: `Thought experiment: only ${seedMemoryCount} relevant memories found (threshold: ${minDataThreshold}). Simulation relies primarily on general patterns.`,
|
|
67
|
+
};
|
|
68
|
+
// Timeline estimate
|
|
69
|
+
const timeline = sim.convergenceRound
|
|
70
|
+
? `Outcomes likely to materialize within ${Math.ceil(sim.convergenceRound / 5)} decision cycles of the triggering event.`
|
|
71
|
+
: 'Timeline uncertain — simulation did not converge on a clear trajectory.';
|
|
72
|
+
// Prediction text — H7.1: ranges, not points
|
|
73
|
+
const prediction = [
|
|
74
|
+
`[PREDICTION — simulated, not factual]`,
|
|
75
|
+
`Based on a ${sim.rounds.length}-round simulation with ${personas.length} personas (${groundedCount} data-grounded, ${archetypeCount} archetype, ${devilCount} devil's advocate):`,
|
|
76
|
+
'',
|
|
77
|
+
sim.emergentConsensus,
|
|
78
|
+
'',
|
|
79
|
+
`Confidence range: ${confidenceRange.low}-${confidenceRange.high} (${confidenceRange.label}).`,
|
|
80
|
+
sim.aborted ? '⚠️ Simulation was time-limited — results based on partial run.' : '',
|
|
81
|
+
].filter(Boolean).join('\n');
|
|
82
|
+
// H1.6: Disclaimer
|
|
83
|
+
const disclaimer = 'This is a simulation-based estimate, not a forecast. It reflects patterns in your data as of today. Use as one input to decision-making alongside human judgment, market research, and domain expertise. The simulation is bounded by the AI model\'s training data and may not capture truly novel scenarios.';
|
|
84
|
+
// H1.7: Track prompt
|
|
85
|
+
const trackPrompt = `To track this prediction, note the simulation ID and check back when outcomes are known. Velixar will automatically flag when new data relates to this prediction.`;
|
|
86
|
+
return {
|
|
87
|
+
badge, prediction, confidenceRange, keyFactors, risks, assumptions,
|
|
88
|
+
timeline, dissentingViews, dataFoundation, disclaimer, trackPrompt,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function extractAssumptions(sim) {
|
|
92
|
+
const assumptions = [];
|
|
93
|
+
// Variable-based assumptions
|
|
94
|
+
for (const [k, v] of Object.entries(sim.variables)) {
|
|
95
|
+
assumptions.push(`Assumes ${k.replace(/_/g, ' ')} is ${v} (as specified).`);
|
|
96
|
+
}
|
|
97
|
+
// Behavioral assumptions
|
|
98
|
+
if (sim.personas.some(p => p.type === 'archetype')) {
|
|
99
|
+
assumptions.push('Some personas are based on general archetypes, not your specific data.');
|
|
100
|
+
}
|
|
101
|
+
assumptions.push('Assumes competitors do not make simultaneous changes (unless specified).');
|
|
102
|
+
assumptions.push('Assumes no major external shocks (regulatory changes, economic events) during the prediction window.');
|
|
103
|
+
return assumptions;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/simulation/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Persona } from './personas.js';
|
|
2
|
+
export interface SimulationEvent {
|
|
3
|
+
round: number;
|
|
4
|
+
description: string;
|
|
5
|
+
impact: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RoundAction {
|
|
8
|
+
personaId: string;
|
|
9
|
+
personaName: string;
|
|
10
|
+
personaType: string;
|
|
11
|
+
action: string;
|
|
12
|
+
active: boolean;
|
|
13
|
+
grounded: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface RoundResult {
|
|
16
|
+
round: number;
|
|
17
|
+
actions: RoundAction[];
|
|
18
|
+
summary: string;
|
|
19
|
+
stateBullets: string[];
|
|
20
|
+
consensus: string | null;
|
|
21
|
+
eventInjected: string | null;
|
|
22
|
+
activeCount: number;
|
|
23
|
+
totalCount: number;
|
|
24
|
+
}
|
|
25
|
+
export interface SimulationResult {
|
|
26
|
+
simulationId: string;
|
|
27
|
+
question: string;
|
|
28
|
+
variables: Record<string, string>;
|
|
29
|
+
events: SimulationEvent[];
|
|
30
|
+
rounds: RoundResult[];
|
|
31
|
+
finalState: string[];
|
|
32
|
+
emergentConsensus: string;
|
|
33
|
+
convergenceRound: number | null;
|
|
34
|
+
trendHistory: string[];
|
|
35
|
+
personas: Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
type: string;
|
|
39
|
+
role: string;
|
|
40
|
+
memoryCount: number;
|
|
41
|
+
}>;
|
|
42
|
+
tokensUsed: number;
|
|
43
|
+
roundsCompleted: number;
|
|
44
|
+
roundsPlanned: number;
|
|
45
|
+
aborted: boolean;
|
|
46
|
+
durationMs: number;
|
|
47
|
+
}
|
|
48
|
+
type LLMCall = (system: string, user: string) => Promise<string>;
|
|
49
|
+
export declare function runSimulation(opts: {
|
|
50
|
+
simulationId: string;
|
|
51
|
+
question: string;
|
|
52
|
+
variables: Record<string, string>;
|
|
53
|
+
events?: SimulationEvent[];
|
|
54
|
+
personas: Persona[];
|
|
55
|
+
roundCount: number;
|
|
56
|
+
llmCall: LLMCall;
|
|
57
|
+
seed?: number;
|
|
58
|
+
concurrency?: number;
|
|
59
|
+
timeoutMs?: number;
|
|
60
|
+
onRound?: (round: number, total: number) => void;
|
|
61
|
+
}): Promise<SimulationResult>;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/simulation/runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEjE,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoI5B"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// ── Simulation Runner v2 ──
|
|
2
|
+
// Upgraded: event injection mid-simulation, per-persona activity levels,
|
|
3
|
+
// richer round tracking, convergence detection with trend analysis.
|
|
4
|
+
import { generateDevilsAdvocates } from './personas.js';
|
|
5
|
+
export async function runSimulation(opts) {
|
|
6
|
+
const { simulationId, question, variables, roundCount, llmCall, seed, concurrency = 10, timeoutMs = 60000, } = opts;
|
|
7
|
+
const events = (opts.events || []).sort((a, b) => a.round - b.round);
|
|
8
|
+
let personas = [...opts.personas];
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
const rounds = [];
|
|
11
|
+
const stateBullets = [];
|
|
12
|
+
const trendHistory = [];
|
|
13
|
+
const maxBullets = roundCount * 3;
|
|
14
|
+
let tokensUsed = 0;
|
|
15
|
+
let convergenceRound = null;
|
|
16
|
+
let lastConsensus = '';
|
|
17
|
+
let consensusStreak = 0;
|
|
18
|
+
let aborted = false;
|
|
19
|
+
const rng = seed !== undefined ? seededRandom(seed) : Math.random;
|
|
20
|
+
for (let round = 1; round <= roundCount; round++) {
|
|
21
|
+
if (Date.now() - startTime > timeoutMs) {
|
|
22
|
+
aborted = true;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
opts.onRound?.(round, roundCount);
|
|
26
|
+
// Event injection — check if any events fire this round
|
|
27
|
+
let eventInjected = null;
|
|
28
|
+
const roundEvents = events.filter(e => e.round === round);
|
|
29
|
+
if (roundEvents.length > 0) {
|
|
30
|
+
eventInjected = roundEvents.map(e => `⚡ EVENT: ${e.description} (impact: ${e.impact})`).join('\n');
|
|
31
|
+
stateBullets.push(...roundEvents.map(e => `[EVENT R${round}] ${e.description}`));
|
|
32
|
+
}
|
|
33
|
+
// Devil's advocates at 25% mark
|
|
34
|
+
if (round === Math.ceil(roundCount * 0.25) && rounds.length >= 3) {
|
|
35
|
+
const consensus = extractRecentConsensus(rounds);
|
|
36
|
+
if (consensus) {
|
|
37
|
+
const devils = generateDevilsAdvocates(consensus, simulationId);
|
|
38
|
+
personas = [...personas, ...devils];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Build round context
|
|
42
|
+
const recentRounds = rounds.slice(-3).map(r => `Round ${r.round}${r.eventInjected ? ' [EVENT]' : ''}: ${r.summary}`).join('\n');
|
|
43
|
+
const variableStr = Object.entries(variables).map(([k, v]) => `${k}: ${v}`).join(', ');
|
|
44
|
+
const roundContext = [
|
|
45
|
+
`SCENARIO VARIABLES: ${variableStr}`,
|
|
46
|
+
`Round ${round} of ${roundCount}.`,
|
|
47
|
+
eventInjected ? `\n${eventInjected}\nHow does this change your behavior?` : '',
|
|
48
|
+
stateBullets.length > 0 ? `\nKEY DEVELOPMENTS:\n${stateBullets.slice(-12).map(b => `• ${b}`).join('\n')}` : '',
|
|
49
|
+
recentRounds ? `\nRECENT:\n${recentRounds}` : '',
|
|
50
|
+
'\nWhat do you do? Be specific — state your action and reasoning. 2-4 sentences.',
|
|
51
|
+
].filter(Boolean).join('\n');
|
|
52
|
+
// Determine active personas (per-persona activity level + randomness)
|
|
53
|
+
const activePersonas = personas.filter(p => {
|
|
54
|
+
const prob = p.activityLevel ?? 0.7;
|
|
55
|
+
// Events boost activity — everyone pays attention
|
|
56
|
+
const boost = eventInjected ? 0.3 : 0;
|
|
57
|
+
return rng() < Math.min(1.0, prob + boost);
|
|
58
|
+
});
|
|
59
|
+
if (activePersonas.length === 0)
|
|
60
|
+
activePersonas.push(personas[0]);
|
|
61
|
+
// Run in parallel batches
|
|
62
|
+
const actions = [];
|
|
63
|
+
for (let i = 0; i < activePersonas.length; i += concurrency) {
|
|
64
|
+
const batch = activePersonas.slice(i, i + concurrency);
|
|
65
|
+
const results = await Promise.allSettled(batch.map(async (p) => {
|
|
66
|
+
const response = await llmCall(p.systemPrompt, roundContext);
|
|
67
|
+
const inputTokens = estimateTokens(p.systemPrompt) + estimateTokens(roundContext);
|
|
68
|
+
const outputTokens = estimateTokens(response);
|
|
69
|
+
tokensUsed += inputTokens + outputTokens;
|
|
70
|
+
// Check if response references known data (simple heuristic)
|
|
71
|
+
const grounded = p.knowledge.some(k => {
|
|
72
|
+
const words = k.split(' ').filter(w => w.length > 5).slice(0, 3);
|
|
73
|
+
return words.some(w => response.toLowerCase().includes(w.toLowerCase()));
|
|
74
|
+
});
|
|
75
|
+
return { personaId: p.id, personaName: p.name, personaType: p.type, action: response, active: true, grounded };
|
|
76
|
+
}));
|
|
77
|
+
for (const r of results) {
|
|
78
|
+
if (r.status === 'fulfilled')
|
|
79
|
+
actions.push(r.value);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Inactive personas
|
|
83
|
+
for (const p of personas) {
|
|
84
|
+
if (!actions.some(a => a.personaId === p.id)) {
|
|
85
|
+
actions.push({ personaId: p.id, personaName: p.name, personaType: p.type, action: '', active: false, grounded: false });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Extract state bullets
|
|
89
|
+
const newBullets = extractBullets(actions.filter(a => a.active));
|
|
90
|
+
stateBullets.push(...newBullets);
|
|
91
|
+
while (stateBullets.length > maxBullets)
|
|
92
|
+
stateBullets.shift();
|
|
93
|
+
// Summary
|
|
94
|
+
const active = actions.filter(a => a.active);
|
|
95
|
+
const summary = active.length <= 3
|
|
96
|
+
? active.map(a => `${a.personaName}: ${a.action.slice(0, 100)}`).join('. ')
|
|
97
|
+
: `${active.length} acted. ${active.slice(0, 2).map(a => `${a.personaName}: ${a.action.slice(0, 80)}`).join('; ')}`;
|
|
98
|
+
// Consensus
|
|
99
|
+
const roundConsensus = detectConsensus(active.map(a => a.action));
|
|
100
|
+
trendHistory.push(roundConsensus || 'mixed');
|
|
101
|
+
if (roundConsensus && roundConsensus === lastConsensus) {
|
|
102
|
+
consensusStreak++;
|
|
103
|
+
if (consensusStreak >= 3 && round >= roundCount * 0.5)
|
|
104
|
+
convergenceRound = round;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
consensusStreak = Math.max(0, consensusStreak - 1); // decay, don't reset
|
|
108
|
+
}
|
|
109
|
+
lastConsensus = roundConsensus || lastConsensus;
|
|
110
|
+
rounds.push({ round, actions, summary, stateBullets: [...stateBullets], consensus: roundConsensus, eventInjected, activeCount: active.length, totalCount: personas.length });
|
|
111
|
+
// Early stop: converged AND no more events pending
|
|
112
|
+
if (convergenceRound && round >= convergenceRound + 2 && !events.some(e => e.round > round))
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
simulationId, question, variables, events, rounds, finalState: stateBullets,
|
|
117
|
+
emergentConsensus: lastConsensus || 'No clear consensus emerged.',
|
|
118
|
+
convergenceRound, trendHistory,
|
|
119
|
+
personas: personas.map(p => ({ id: p.id, name: p.name, type: p.type, role: p.role, memoryCount: p.memoryCount })),
|
|
120
|
+
tokensUsed, roundsCompleted: rounds.length, roundsPlanned: roundCount,
|
|
121
|
+
aborted, durationMs: Date.now() - startTime,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
// ── Helpers ──
|
|
125
|
+
function estimateTokens(text) { return Math.ceil(text.length / 3); }
|
|
126
|
+
function extractBullets(actions) {
|
|
127
|
+
const bullets = [];
|
|
128
|
+
for (const a of actions) {
|
|
129
|
+
const sentences = a.action.split(/[.!]\s+/).filter(s => s.length > 20 && s.length < 200);
|
|
130
|
+
for (const s of sentences) {
|
|
131
|
+
if (/\b(would|will|decide|switch|leave|stay|increase|decrease|launch|cancel|respond|react|announce|invest|cut|raise|delay)\b/i.test(s)) {
|
|
132
|
+
const prefix = a.grounded ? '' : '[est] ';
|
|
133
|
+
bullets.push(`${prefix}${a.personaName}: ${s.trim().replace(/\n/g, ' ')}`);
|
|
134
|
+
if (bullets.length >= 3)
|
|
135
|
+
return bullets;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (bullets.length === 0 && actions.length > 0) {
|
|
140
|
+
const first = actions[0];
|
|
141
|
+
const s = first.action.split(/[.!]\s+/)[0] || first.action.slice(0, 150);
|
|
142
|
+
bullets.push(`${first.personaName}: ${s.trim()}`);
|
|
143
|
+
}
|
|
144
|
+
return bullets.slice(0, 3);
|
|
145
|
+
}
|
|
146
|
+
function detectConsensus(actions) {
|
|
147
|
+
if (actions.length < 3)
|
|
148
|
+
return null;
|
|
149
|
+
const keywords = new Map();
|
|
150
|
+
for (const a of actions) {
|
|
151
|
+
const words = a.toLowerCase().match(/\b(leave|stay|switch|increase|decrease|positive|negative|risk|opportunity|churn|retain|grow|decline|wait|accelerate|cancel|delay|invest|cut)\b/g) || [];
|
|
152
|
+
for (const w of words)
|
|
153
|
+
keywords.set(w, (keywords.get(w) || 0) + 1);
|
|
154
|
+
}
|
|
155
|
+
const threshold = actions.length * 0.5;
|
|
156
|
+
const dominant = [...keywords.entries()].filter(([, c]) => c >= threshold).sort((a, b) => b[1] - a[1]);
|
|
157
|
+
return dominant.length > 0 ? `Majority trend: ${dominant.map(([w]) => w).join(', ')}` : null;
|
|
158
|
+
}
|
|
159
|
+
function extractRecentConsensus(rounds) {
|
|
160
|
+
const recent = rounds.slice(-3).map(r => r.consensus).filter(Boolean);
|
|
161
|
+
return recent[recent.length - 1] || 'mixed signals';
|
|
162
|
+
}
|
|
163
|
+
function seededRandom(seed) {
|
|
164
|
+
let s = seed;
|
|
165
|
+
return () => { s = (s * 1664525 + 1013904223) & 0xffffffff; return (s >>> 0) / 0xffffffff; };
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/simulation/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { MemoryItem } from './types.js';
|
|
2
|
+
export interface TemporalMemory extends MemoryItem {
|
|
3
|
+
_superseded: boolean;
|
|
4
|
+
_superseded_by?: string;
|
|
5
|
+
_supersession_confidence: 'explicit' | 'inferred' | 'none';
|
|
6
|
+
_chain_head: boolean;
|
|
7
|
+
_chain_broken: boolean;
|
|
8
|
+
_chain_fork: boolean;
|
|
9
|
+
_hit_count?: number;
|
|
10
|
+
_matched_queries?: number;
|
|
11
|
+
_original_relevance?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface TemporalGrouping {
|
|
14
|
+
current: TemporalMemory[];
|
|
15
|
+
superseded: TemporalMemory[];
|
|
16
|
+
temporal_context: {
|
|
17
|
+
newest_memory: string;
|
|
18
|
+
oldest_memory: string;
|
|
19
|
+
chain_count: number;
|
|
20
|
+
fork_count: number;
|
|
21
|
+
broken_chain_count: number;
|
|
22
|
+
warning: string | null;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Detect supersession relationships from chain links (previous_memory_id / derived_from).
|
|
27
|
+
* Returns a map of superseded_id → superseding_id.
|
|
28
|
+
*/
|
|
29
|
+
export declare function detectChains(memories: MemoryItem[]): {
|
|
30
|
+
supersededBy: Map<string, string>;
|
|
31
|
+
chainHeads: Set<string>;
|
|
32
|
+
forks: Set<string>;
|
|
33
|
+
brokenChains: Set<string>;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* For memories without chain links, detect possible supersession by timestamp gap.
|
|
37
|
+
* Groups by content similarity — only memories about the same topic can supersede each other.
|
|
38
|
+
* Returns low-confidence supersession pairs.
|
|
39
|
+
*/
|
|
40
|
+
export declare function detectHeuristicSupersession(memories: MemoryItem[], alreadySuperseded: Set<string>): Map<string, {
|
|
41
|
+
supersededBy: string;
|
|
42
|
+
confidence: 'inferred';
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Apply temporal decay to relevance scores.
|
|
46
|
+
* Semantic (tier 2) and pinned (tier 0) memories are exempt — they represent durable knowledge.
|
|
47
|
+
* Only episodic memories (tier 1) decay.
|
|
48
|
+
*/
|
|
49
|
+
export declare function applyTemporalDecay(mem: TemporalMemory): number;
|
|
50
|
+
/**
|
|
51
|
+
* Takes a flat list of memories, applies chain detection, supersession marking,
|
|
52
|
+
* temporal decay, and returns grouped results.
|
|
53
|
+
*/
|
|
54
|
+
export declare function temporalMerge(memories: MemoryItem[]): TemporalGrouping;
|
|
55
|
+
/**
|
|
56
|
+
* Deduplicate and merge memories from multiple search queries.
|
|
57
|
+
* Memories appearing in multiple queries get boosted scores.
|
|
58
|
+
* H3.4: Returns matched_query_indices per memory (not full strings).
|
|
59
|
+
* H3.5: Never reorders input queries — indices are stable.
|
|
60
|
+
*/
|
|
61
|
+
export declare function mergeMultiQueryResults(perQueryResults: Array<{
|
|
62
|
+
query: string;
|
|
63
|
+
memories: MemoryItem[];
|
|
64
|
+
}>, strategy?: 'union' | 'intersection' | 'weighted', limit?: number, queryWeights?: number[], threshold?: number): {
|
|
65
|
+
merged: MemoryItem[];
|
|
66
|
+
diversity_score: number;
|
|
67
|
+
per_query_counts: number[];
|
|
68
|
+
matched_query_indices: Record<string, number[]>;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=temporal_merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal_merge.d.ts","sourceRoot":"","sources":["../src/temporal_merge.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,gBAAgB,EAAE;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;CACH;AAUD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG;IACpD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B,CAkDA;AAID;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,UAAU,EAAE,EACtB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,GAAG,CAAC,MAAM,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC,CAiC/D;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAU9D;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,gBAAgB,CA+FtE;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,EACjE,QAAQ,GAAE,OAAO,GAAG,cAAc,GAAG,UAAuB,EAC5D,KAAK,GAAE,MAAW,EAClB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,SAAS,GAAE,MAAU,GACpB;IAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAiDhI"}
|