velixar-mcp-server 1.1.0 → 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 +1 -1
- package/dist/api.d.ts +6 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +18 -0
- package/dist/api.js.map +1 -1
- 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/prompts.d.ts +24 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +92 -3
- package/dist/prompts.js.map +1 -1
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +25 -8
- package/dist/resources.js.map +1 -1
- package/dist/server.js +84 -13
- package/dist/server.js.map +1 -1
- 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.map +1 -1
- package/dist/tools/cognitive.js +163 -35
- package/dist/tools/cognitive.js.map +1 -1
- 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.map +1 -1
- package/dist/tools/graph.js +196 -33
- package/dist/tools/graph.js.map +1 -1
- 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.map +1 -1
- package/dist/tools/lifecycle.js +215 -113
- package/dist/tools/lifecycle.js.map +1 -1
- 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 +1 -0
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +163 -31
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/recall.d.ts.map +1 -1
- package/dist/tools/recall.js +85 -31
- package/dist/tools/recall.js.map +1 -1
- 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 +3 -0
- package/dist/tools/system.d.ts.map +1 -1
- package/dist/tools/system.js +88 -13
- package/dist/tools/system.js.map +1 -1
- 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 +1 -1
- package/server.json +2 -2
package/dist/server.js
CHANGED
|
@@ -7,11 +7,16 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
7
7
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
8
8
|
import { loadConfig, ApiClient, log, setClientRoots, validateWorkspace } from './api.js';
|
|
9
9
|
import { memoryTools, handleMemoryTool } from './tools/memory.js';
|
|
10
|
-
import { systemTools, handleSystemTool } from './tools/system.js';
|
|
10
|
+
import { systemTools, handleSystemTool, recordAudit } from './tools/system.js';
|
|
11
|
+
import { setCapabilitiesVerified } from './tools/system.js';
|
|
11
12
|
import { recallTools, handleRecallTool } from './tools/recall.js';
|
|
12
13
|
import { graphTools, handleGraphTool } from './tools/graph.js';
|
|
13
14
|
import { cognitiveTools, handleCognitiveTool, trackToolCallForIdentity } from './tools/cognitive.js';
|
|
14
15
|
import { lifecycleTools, handleLifecycleTool } from './tools/lifecycle.js';
|
|
16
|
+
import { liveDataTools, handleLiveDataTool } from './tools/livedata.js';
|
|
17
|
+
import { retrievalTools, handleRetrievalTool } from './tools/retrieval.js';
|
|
18
|
+
import { constructionTools, handleConstructionTool } from './tools/construction.js';
|
|
19
|
+
import { clairvoyanceTools, handleClairvoyanceTool } from './tools/clairvoyance.js';
|
|
15
20
|
import { fetchRecall, getResourceList, readResource, getResourceUris, refreshRelevantMemories, markToolCall, isRelevantStale, getConstitutionFallback } from './resources.js';
|
|
16
21
|
import { getPromptList, getPrompt, allPrompts } from './prompts.js';
|
|
17
22
|
// ── AH-5: Anti-pattern detection ──
|
|
@@ -19,18 +24,24 @@ const REINFORCE_INTERVAL = parseInt(process.env.VELIXAR_CONSTITUTION_REINFORCE_I
|
|
|
19
24
|
let _toolCallCount = 0;
|
|
20
25
|
let _recentToolCalls = []; // last 5 tool names for pattern detection
|
|
21
26
|
let _promptReadCount = 0;
|
|
27
|
+
// Search-like tools — any of these count as "did a search" for anti-pattern purposes
|
|
28
|
+
const SEARCH_TOOLS = new Set([
|
|
29
|
+
'velixar_search', 'velixar_batch_search', 'velixar_multi_search',
|
|
30
|
+
'velixar_context', 'velixar_prepare_context', 'velixar_coverage_check',
|
|
31
|
+
]);
|
|
22
32
|
function detectAntiPattern(toolName) {
|
|
23
33
|
const recent = _recentToolCalls;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
34
|
+
const last = recent.length >= 1 ? recent[recent.length - 1] : null;
|
|
35
|
+
// Sequential single searches that should be batched or use multi_search
|
|
36
|
+
if (toolName === 'velixar_search' && last === 'velixar_search') {
|
|
37
|
+
return 'Tip: use velixar_multi_search for merged results with deduplication, or merge:false for per-query results.';
|
|
27
38
|
}
|
|
28
|
-
//
|
|
29
|
-
if (toolName === 'velixar_search' &&
|
|
39
|
+
// Single search right after context — context already searched
|
|
40
|
+
if (toolName === 'velixar_search' && last === 'velixar_context') {
|
|
30
41
|
return 'Note: velixar_context already includes KG-boosted search results. Only use velixar_search if you need a different query.';
|
|
31
42
|
}
|
|
32
43
|
// Store without prior search (check last 3 calls)
|
|
33
|
-
if (toolName === 'velixar_store' && !recent.slice(-3).some(t => t
|
|
44
|
+
if (toolName === 'velixar_store' && !recent.slice(-3).some(t => SEARCH_TOOLS.has(t))) {
|
|
34
45
|
return 'Warning: search before storing to avoid duplicates.';
|
|
35
46
|
}
|
|
36
47
|
return null;
|
|
@@ -53,20 +64,69 @@ const detectedHost = process.env.CURSOR_SESSION_ID ? 'cursor'
|
|
|
53
64
|
: 'unknown';
|
|
54
65
|
if (detectedHost !== 'unknown')
|
|
55
66
|
log('info', 'host_detected', { host: detectedHost });
|
|
56
|
-
const allTools = [...memoryTools, ...recallTools, ...graphTools, ...cognitiveTools, ...lifecycleTools, ...systemTools];
|
|
67
|
+
const allTools = [...memoryTools, ...recallTools, ...graphTools, ...cognitiveTools, ...lifecycleTools, ...liveDataTools, ...retrievalTools, ...constructionTools, ...systemTools, ...clairvoyanceTools];
|
|
57
68
|
const allToolNames = allTools.map(t => t.name);
|
|
69
|
+
// ── Build 7.2: Tool Tier System ──
|
|
70
|
+
// H5.1: Tier 2 is default. H5.2: capabilities always included. H5.3: Tier 1 = 9 core tools.
|
|
71
|
+
// Static at startup only (dynamic tiers deferred per 7 Whys Round 2 Chain 13).
|
|
72
|
+
const TOOL_TIERS = {
|
|
73
|
+
1: new Set([
|
|
74
|
+
'velixar_context', 'velixar_search', 'velixar_store', 'velixar_list',
|
|
75
|
+
'velixar_update', 'velixar_delete', 'velixar_session_resume', 'velixar_health', 'velixar_capabilities',
|
|
76
|
+
]),
|
|
77
|
+
2: new Set([
|
|
78
|
+
// Tier 1 + these
|
|
79
|
+
'velixar_context', 'velixar_search', 'velixar_store', 'velixar_list',
|
|
80
|
+
'velixar_update', 'velixar_delete', 'velixar_session_resume', 'velixar_health', 'velixar_capabilities',
|
|
81
|
+
'velixar_multi_search', 'velixar_prepare_context', 'velixar_distill', 'velixar_timeline',
|
|
82
|
+
'velixar_contradictions', 'velixar_patterns', 'velixar_graph_traverse', 'velixar_session_save',
|
|
83
|
+
'velixar_session_recall', 'velixar_coverage_check', 'velixar_export', 'velixar_import', 'velixar_identity',
|
|
84
|
+
]),
|
|
85
|
+
// Tier 3 = all tools (no filtering)
|
|
86
|
+
};
|
|
87
|
+
const toolTier = parseInt(process.env.VELIXAR_TOOL_TIER || '3', 10);
|
|
88
|
+
const tierFilter = TOOL_TIERS[toolTier];
|
|
89
|
+
const exposedTools = tierFilter ? allTools.filter(t => tierFilter.has(t.name)) : allTools;
|
|
90
|
+
if (tierFilter)
|
|
91
|
+
log('info', 'tool_tier_active', { tier: toolTier, exposed: exposedTools.length, total: allTools.length });
|
|
58
92
|
const toolHandlers = [
|
|
59
93
|
{ names: new Set(memoryTools.map(t => t.name)), handler: handleMemoryTool },
|
|
60
94
|
{ names: new Set(recallTools.map(t => t.name)), handler: handleRecallTool },
|
|
61
95
|
{ names: new Set(graphTools.map(t => t.name)), handler: handleGraphTool },
|
|
62
96
|
{ names: new Set(cognitiveTools.map(t => t.name)), handler: handleCognitiveTool },
|
|
63
97
|
{ names: new Set(lifecycleTools.map(t => t.name)), handler: handleLifecycleTool },
|
|
98
|
+
{ names: new Set(liveDataTools.map(t => t.name)), handler: handleLiveDataTool },
|
|
99
|
+
{ names: new Set(retrievalTools.map(t => t.name).concat('velixar_batch_search')), handler: handleRetrievalTool },
|
|
100
|
+
{ names: new Set(constructionTools.map(t => t.name)), handler: handleConstructionTool },
|
|
101
|
+
{ names: new Set(clairvoyanceTools.map(t => t.name)), handler: handleClairvoyanceTool },
|
|
64
102
|
];
|
|
65
103
|
const systemToolNames = new Set(systemTools.map(t => t.name));
|
|
66
104
|
// ── Server ──
|
|
67
|
-
|
|
105
|
+
// H7.5: Server name configurable for white-label partners
|
|
106
|
+
const serverName = process.env.VELIXAR_MCP_SERVER_NAME || 'velixar-mcp-server';
|
|
107
|
+
const server = new Server({ name: serverName, version: '1.1.0' }, { capabilities: { tools: {}, resources: {}, prompts: {} } });
|
|
68
108
|
// ── Resources ──
|
|
69
109
|
fetchRecall(api, config); // non-blocking startup
|
|
110
|
+
// H1.4/Chain 8: Startup capability check — verify backend supports filter params
|
|
111
|
+
// 3s timeout, optimistic fallback (per Round 2)
|
|
112
|
+
(async () => {
|
|
113
|
+
try {
|
|
114
|
+
const health = await Promise.race([
|
|
115
|
+
api.get('/health'),
|
|
116
|
+
new Promise(resolve => setTimeout(() => resolve(null), 3000)),
|
|
117
|
+
]);
|
|
118
|
+
if (health) {
|
|
119
|
+
setCapabilitiesVerified(true);
|
|
120
|
+
log('info', 'capabilities_verified', { status: 'ok' });
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
log('warn', 'capabilities_check_timeout', { hint: 'Backend slow — assuming params supported (optimistic)' });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
log('warn', 'capabilities_check_failed', { hint: 'Backend unreachable at startup — filter params unverified' });
|
|
128
|
+
}
|
|
129
|
+
})();
|
|
70
130
|
// Capture client roots for workspace cross-validation
|
|
71
131
|
server.oninitialized = async () => {
|
|
72
132
|
try {
|
|
@@ -91,7 +151,7 @@ server.setRequestHandler(GetPromptRequestSchema, async (req) => {
|
|
|
91
151
|
return getPrompt(req.params.name, (req.params.arguments || {}));
|
|
92
152
|
});
|
|
93
153
|
// ── Tools ──
|
|
94
|
-
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools:
|
|
154
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: exposedTools }));
|
|
95
155
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
96
156
|
const { name, arguments: args = {} } = request.params;
|
|
97
157
|
const start = Date.now();
|
|
@@ -114,6 +174,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
114
174
|
result = await entry.handler(name, args, api, config);
|
|
115
175
|
}
|
|
116
176
|
log('info', 'tool_call', { tool: name, duration_ms: Date.now() - start, error: false });
|
|
177
|
+
// Build 7.1: Record audit entry
|
|
178
|
+
recordAudit(name, Date.now() - start, args, !result.isError);
|
|
117
179
|
// AH-5: Track tool call sequence for anti-pattern detection
|
|
118
180
|
trackToolCall(name);
|
|
119
181
|
// Workspace cross-validation warning
|
|
@@ -160,7 +222,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
160
222
|
// Track tool calls for resource staleness; refresh after mutations
|
|
161
223
|
markToolCall();
|
|
162
224
|
trackToolCallForIdentity();
|
|
163
|
-
const mutationTools = new Set([
|
|
225
|
+
const mutationTools = new Set([
|
|
226
|
+
'velixar_store', 'velixar_update', 'velixar_delete', 'velixar_distill',
|
|
227
|
+
'velixar_batch_store', 'velixar_import', 'velixar_consolidate', 'velixar_retag',
|
|
228
|
+
]);
|
|
164
229
|
if (mutationTools.has(name) || isRelevantStale()) {
|
|
165
230
|
refreshRelevantMemories(api, config); // non-blocking
|
|
166
231
|
}
|
|
@@ -172,8 +237,14 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
172
237
|
catch (error) {
|
|
173
238
|
const msg = error instanceof Error ? error.message : String(error);
|
|
174
239
|
log('error', 'tool_error', { tool: name, duration_ms: Date.now() - start, error: msg });
|
|
175
|
-
//
|
|
176
|
-
|
|
240
|
+
// Build 7.1: Record failed audit
|
|
241
|
+
recordAudit(name, Date.now() - start, args, false);
|
|
242
|
+
// Alert-level for critical failures — any tool that writes memory state
|
|
243
|
+
const criticalWriteTools = new Set([
|
|
244
|
+
'velixar_store', 'velixar_batch_store', 'velixar_import', 'velixar_upload',
|
|
245
|
+
'velixar_consolidate', 'velixar_distill', 'velixar_update', 'velixar_delete',
|
|
246
|
+
]);
|
|
247
|
+
if (criticalWriteTools.has(name)) {
|
|
177
248
|
log('error', 'alert:memory_store_failure', { tool: name, error: msg });
|
|
178
249
|
}
|
|
179
250
|
return {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ApiClient } from '../api.js';
|
|
2
|
+
import type { ApiConfig } from '../types.js';
|
|
3
|
+
export interface Persona {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
role: string;
|
|
7
|
+
type: 'data_grounded' | 'archetype' | 'devils_advocate';
|
|
8
|
+
bio: string;
|
|
9
|
+
goals: string;
|
|
10
|
+
behavior: string;
|
|
11
|
+
sensitivity: 'high' | 'medium' | 'low';
|
|
12
|
+
personality: {
|
|
13
|
+
traits: string[];
|
|
14
|
+
decisionStyle: string;
|
|
15
|
+
riskTolerance: string;
|
|
16
|
+
};
|
|
17
|
+
knowledge: string[];
|
|
18
|
+
relationships: string[];
|
|
19
|
+
activityLevel: number;
|
|
20
|
+
systemPrompt: string;
|
|
21
|
+
memoryCount: number;
|
|
22
|
+
}
|
|
23
|
+
export interface PersonaGenerationResult {
|
|
24
|
+
personas: Persona[];
|
|
25
|
+
dataFoundation: {
|
|
26
|
+
totalMemories: number;
|
|
27
|
+
kgEntities: number;
|
|
28
|
+
groundedCount: number;
|
|
29
|
+
archetypeCount: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
type LLMCall = (system: string, user: string) => Promise<string>;
|
|
33
|
+
export declare function generatePersonas(question: string, variables: Record<string, string>, api: ApiClient, config: ApiConfig, llmCall: LLMCall, opts: {
|
|
34
|
+
agentCount?: number;
|
|
35
|
+
personaTypes?: string[];
|
|
36
|
+
fresh?: boolean;
|
|
37
|
+
simulationId: string;
|
|
38
|
+
}): Promise<PersonaGenerationResult>;
|
|
39
|
+
export declare function generateDevilsAdvocates(consensus: string, simId: string): Persona[];
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=personas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/simulation/personas.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,iBAAiB,CAAC;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,WAAW,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9G;AAaD,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEjE,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC5F,OAAO,CAAC,uBAAuB,CAAC,CAyClC;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAUnF"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// ── Persona Generator v2 ──
|
|
2
|
+
// Upgraded based on MiroFish comparison: richer profiles, behavioral depth,
|
|
3
|
+
// activity patterns, LLM-generated personas instead of templates.
|
|
4
|
+
import { validateSearchResponse } from '../validate.js';
|
|
5
|
+
const ROLE_DEFAULTS = {
|
|
6
|
+
customer: { goals: 'Maximize value, minimize cost, evaluate alternatives', traits: ['price-aware', 'comparison-driven', 'loyalty-conditional'], riskTolerance: 'medium' },
|
|
7
|
+
competitor: { goals: 'Capture market share, exploit weaknesses', traits: ['aggressive', 'opportunistic', 'fast-moving'], riskTolerance: 'high' },
|
|
8
|
+
regulator: { goals: 'Ensure fairness, protect consumers, enforce rules', traits: ['rule-based', 'slow-moving', 'precedent-driven'], riskTolerance: 'low' },
|
|
9
|
+
internal_team: { goals: 'Hit targets while retaining customers', traits: ['revenue-focused', 'risk-averse', 'data-driven'], riskTolerance: 'low' },
|
|
10
|
+
market_force: { goals: 'Reflect macro trends and industry dynamics', traits: ['impersonal', 'trend-driven', 'cyclical'], riskTolerance: 'neutral' },
|
|
11
|
+
investor: { goals: 'Maximize returns, evaluate growth vs profitability', traits: ['metrics-driven', 'benchmark-comparing', 'impatient'], riskTolerance: 'high' },
|
|
12
|
+
media: { goals: 'Amplify narratives, drive engagement', traits: ['attention-seeking', 'narrative-driven', 'reactive'], riskTolerance: 'high' },
|
|
13
|
+
partner: { goals: 'Protect joint value, maintain relationship', traits: ['collaborative', 'contract-aware', 'long-term-oriented'], riskTolerance: 'low' },
|
|
14
|
+
};
|
|
15
|
+
export async function generatePersonas(question, variables, api, config, llmCall, opts) {
|
|
16
|
+
const count = Math.min(opts.agentCount || 12, 30);
|
|
17
|
+
const types = opts.personaTypes?.length ? opts.personaTypes : inferTypes(question);
|
|
18
|
+
// Gather workspace context in parallel
|
|
19
|
+
const [memories, kgEntities] = await Promise.all([
|
|
20
|
+
searchWorkspace(question, variables, api, config, opts.fresh),
|
|
21
|
+
traverseKG(question, api),
|
|
22
|
+
]);
|
|
23
|
+
const personas = [];
|
|
24
|
+
const perType = Math.max(1, Math.floor(count / types.length));
|
|
25
|
+
const sensitivities = ['high', 'medium', 'low'];
|
|
26
|
+
for (const role of types) {
|
|
27
|
+
for (let i = 0; i < perType && personas.length < count; i++) {
|
|
28
|
+
const sensitivity = sensitivities[i % 3];
|
|
29
|
+
const roleMemories = memories.filter(m => m.content.toLowerCase().includes(role) || m.relevance > 0.6).slice(0, 8);
|
|
30
|
+
const roleKG = kgEntities.filter(e => e.toLowerCase().includes(role) || role.includes(e.split(' ')[0].toLowerCase())).slice(0, 3);
|
|
31
|
+
const persona = await buildPersonaWithLLM(role, i, sensitivity, question, variables, roleMemories, roleKG, llmCall, opts.simulationId);
|
|
32
|
+
personas.push(persona);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
personas,
|
|
37
|
+
dataFoundation: {
|
|
38
|
+
totalMemories: memories.length,
|
|
39
|
+
kgEntities: kgEntities.length,
|
|
40
|
+
groundedCount: personas.filter(p => p.type === 'data_grounded').length,
|
|
41
|
+
archetypeCount: personas.filter(p => p.type === 'archetype').length,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function generateDevilsAdvocates(consensus, simId) {
|
|
46
|
+
const base = { type: 'devils_advocate', goals: '', behavior: '', sensitivity: 'high', knowledge: [], relationships: [], activityLevel: 1.0, memoryCount: 0 };
|
|
47
|
+
return [
|
|
48
|
+
{ ...base, id: `${simId}-da-1`, name: 'The Skeptic', role: 'devils_advocate', bio: 'Challenges consensus by finding unstated assumptions.',
|
|
49
|
+
personality: { traits: ['contrarian', 'analytical', 'thorough'], decisionStyle: 'evidence-demanding', riskTolerance: 'seeks-risk-in-consensus' },
|
|
50
|
+
systemPrompt: `You are "The Skeptic." The emerging consensus is: "${consensus}". Find the strongest argument AGAINST it. Focus on unstated assumptions, historical precedents where similar consensus was wrong, and hidden risks. Be specific — name what could go wrong and why. 2-4 sentences.` },
|
|
51
|
+
{ ...base, id: `${simId}-da-2`, name: 'The Edge Case', role: 'devils_advocate', bio: 'Identifies tail risks and black swan scenarios.',
|
|
52
|
+
personality: { traits: ['creative', 'paranoid', 'scenario-oriented'], decisionStyle: 'worst-case-first', riskTolerance: 'assumes-tail-risk' },
|
|
53
|
+
systemPrompt: `You are "The Edge Case." The emerging consensus is: "${consensus}". Identify the scenario where this completely breaks down. Think: what external shock, competitor move, or customer behavior would make this prediction catastrophically wrong? Be specific. 2-4 sentences.` },
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
// ── Internal ──
|
|
57
|
+
async function searchWorkspace(question, variables, api, config, fresh) {
|
|
58
|
+
const queries = [
|
|
59
|
+
question.slice(0, 100),
|
|
60
|
+
Object.values(variables).join(' ').slice(0, 100),
|
|
61
|
+
...(fresh ? [] : ['simulation insight']),
|
|
62
|
+
].filter(Boolean);
|
|
63
|
+
const results = [];
|
|
64
|
+
const seen = new Set();
|
|
65
|
+
const fetches = await Promise.allSettled(queries.map(q => {
|
|
66
|
+
const params = new URLSearchParams({ q, user_id: config.userId, limit: '10' });
|
|
67
|
+
return api.get(`/memory/search?${params}`, true);
|
|
68
|
+
}));
|
|
69
|
+
for (const r of fetches) {
|
|
70
|
+
if (r.status !== 'fulfilled')
|
|
71
|
+
continue;
|
|
72
|
+
try {
|
|
73
|
+
const v = validateSearchResponse(r.value, '/memory/search');
|
|
74
|
+
for (const m of v.memories) {
|
|
75
|
+
if (seen.has(m.id) || (m.score ?? 0) < 0.3)
|
|
76
|
+
continue;
|
|
77
|
+
seen.add(m.id);
|
|
78
|
+
results.push({ content: m.content.slice(0, 400), relevance: m.score ?? 0, id: m.id });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch { /* skip */ }
|
|
82
|
+
}
|
|
83
|
+
return results.sort((a, b) => b.relevance - a.relevance).slice(0, 30);
|
|
84
|
+
}
|
|
85
|
+
async function traverseKG(question, api) {
|
|
86
|
+
try {
|
|
87
|
+
const data = await api.post('/graph/traverse', {
|
|
88
|
+
entity: question.split(' ').slice(0, 3).join(' '), max_hops: 2,
|
|
89
|
+
});
|
|
90
|
+
const nodes = Array.isArray(data?.nodes) ? data.nodes : [];
|
|
91
|
+
return nodes.map(n => String(n.label || n.content || '')).filter(Boolean).slice(0, 10);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function inferTypes(question) {
|
|
98
|
+
const q = question.toLowerCase();
|
|
99
|
+
const types = [];
|
|
100
|
+
if (/pric|cost|fee|rate|revenue|churn/.test(q))
|
|
101
|
+
types.push('customer', 'competitor', 'internal_team');
|
|
102
|
+
if (/regulat|compliance|law|policy|government/.test(q))
|
|
103
|
+
types.push('regulator');
|
|
104
|
+
if (/market|industry|trend|economy|macro/.test(q))
|
|
105
|
+
types.push('market_force');
|
|
106
|
+
if (/invest|fund|valuation|growth|ipo/.test(q))
|
|
107
|
+
types.push('investor');
|
|
108
|
+
if (/press|media|public|reputation|brand/.test(q))
|
|
109
|
+
types.push('media');
|
|
110
|
+
if (/partner|channel|integration|alliance/.test(q))
|
|
111
|
+
types.push('partner');
|
|
112
|
+
if (types.length === 0)
|
|
113
|
+
types.push('customer', 'competitor', 'internal_team');
|
|
114
|
+
if (!types.includes('customer') && types.length < 4)
|
|
115
|
+
types.unshift('customer');
|
|
116
|
+
return [...new Set(types)];
|
|
117
|
+
}
|
|
118
|
+
async function buildPersonaWithLLM(role, index, sensitivity, question, variables, memories, kgEntities, llmCall, simId) {
|
|
119
|
+
const defaults = ROLE_DEFAULTS[role] || ROLE_DEFAULTS.customer;
|
|
120
|
+
const id = `${simId}-${role}-${index}`;
|
|
121
|
+
const grounded = memories.length >= 3;
|
|
122
|
+
const variableStr = Object.entries(variables).map(([k, v]) => `${k}: ${v}`).join(', ');
|
|
123
|
+
// Use LLM to generate a rich persona (like MiroFish's profile generator)
|
|
124
|
+
let bio, behavior, name;
|
|
125
|
+
try {
|
|
126
|
+
const raw = await llmCall('You generate concise character profiles for business simulations. Respond in JSON only.', `Create a ${role.replace(/_/g, ' ')} persona for this scenario: "${question}" (variables: ${variableStr}).
|
|
127
|
+
Sensitivity to the scenario: ${sensitivity}.
|
|
128
|
+
${memories.length > 0 ? `Context from real data:\n${memories.slice(0, 5).map(m => `- ${m.content.slice(0, 150)}`).join('\n')}` : 'No specific data available — use general knowledge.'}
|
|
129
|
+
${kgEntities.length > 0 ? `Related entities: ${kgEntities.join(', ')}` : ''}
|
|
130
|
+
|
|
131
|
+
Return JSON: {"name":"<realistic name>","bio":"<1 sentence>","behavior":"<2 sentences: how they react to this scenario specifically>","traits":["<3 traits>"],"decision_style":"<one phrase>"}`);
|
|
132
|
+
const parsed = JSON.parse(raw.replace(/```json?\n?/g, '').replace(/```/g, '').trim());
|
|
133
|
+
name = parsed.name || `${role} ${index + 1}`;
|
|
134
|
+
bio = parsed.bio || `A ${role} stakeholder.`;
|
|
135
|
+
behavior = parsed.behavior || defaults.goals;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
name = `${role.replace(/_/g, ' ')} ${index + 1}`.replace(/\b\w/g, c => c.toUpperCase());
|
|
139
|
+
bio = `A ${role.replace(/_/g, ' ')} stakeholder in this scenario.`;
|
|
140
|
+
behavior = defaults.goals;
|
|
141
|
+
}
|
|
142
|
+
const knowledgeLines = memories.map(m => m.content.slice(0, 300));
|
|
143
|
+
const relationshipLines = kgEntities.map(e => `Connected to: ${e}`);
|
|
144
|
+
const systemPrompt = [
|
|
145
|
+
`You are "${name}" — ${bio}`,
|
|
146
|
+
`Role: ${role.replace(/_/g, ' ')}. Sensitivity to scenario variables: ${sensitivity}.`,
|
|
147
|
+
`Behavior: ${behavior}`,
|
|
148
|
+
'',
|
|
149
|
+
`SCENARIO: ${question}`,
|
|
150
|
+
`VARIABLES: ${variableStr || 'None specified.'}`,
|
|
151
|
+
'',
|
|
152
|
+
knowledgeLines.length > 0
|
|
153
|
+
? `YOUR KNOWLEDGE (from real data):\n${knowledgeLines.slice(0, 8).map((k, i) => `${i + 1}. ${k}`).join('\n')}`
|
|
154
|
+
: 'You have no specific data — reason from general knowledge about your role.',
|
|
155
|
+
relationshipLines.length > 0 ? `\nRELATIONSHIPS:\n${relationshipLines.join('\n')}` : '',
|
|
156
|
+
'',
|
|
157
|
+
'Respond with a specific action or reaction (2-4 sentences). State what you DO and WHY. Reference specific facts from your knowledge when possible.',
|
|
158
|
+
].filter(Boolean).join('\n');
|
|
159
|
+
return {
|
|
160
|
+
id, name, role, bio,
|
|
161
|
+
type: grounded ? 'data_grounded' : 'archetype',
|
|
162
|
+
goals: defaults.goals,
|
|
163
|
+
behavior,
|
|
164
|
+
sensitivity,
|
|
165
|
+
personality: { traits: defaults.traits, decisionStyle: 'contextual', riskTolerance: defaults.riskTolerance },
|
|
166
|
+
knowledge: knowledgeLines,
|
|
167
|
+
relationships: relationshipLines,
|
|
168
|
+
activityLevel: sensitivity === 'high' ? 0.9 : sensitivity === 'medium' ? 0.7 : 0.5,
|
|
169
|
+
systemPrompt,
|
|
170
|
+
memoryCount: memories.length,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=personas.js.map
|
|
@@ -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
|