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.
Files changed (80) hide show
  1. package/README.md +1 -1
  2. package/dist/api.d.ts +6 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +18 -0
  5. package/dist/api.js.map +1 -1
  6. package/dist/errors.d.ts +19 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +52 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/prompts.d.ts +24 -0
  11. package/dist/prompts.d.ts.map +1 -1
  12. package/dist/prompts.js +92 -3
  13. package/dist/prompts.js.map +1 -1
  14. package/dist/resources.d.ts.map +1 -1
  15. package/dist/resources.js +25 -8
  16. package/dist/resources.js.map +1 -1
  17. package/dist/server.js +84 -13
  18. package/dist/server.js.map +1 -1
  19. package/dist/simulation/personas.d.ts +41 -0
  20. package/dist/simulation/personas.d.ts.map +1 -0
  21. package/dist/simulation/personas.js +173 -0
  22. package/dist/simulation/personas.js.map +1 -0
  23. package/dist/simulation/report.d.ts +28 -0
  24. package/dist/simulation/report.d.ts.map +1 -0
  25. package/dist/simulation/report.js +105 -0
  26. package/dist/simulation/report.js.map +1 -0
  27. package/dist/simulation/runner.d.ts +63 -0
  28. package/dist/simulation/runner.d.ts.map +1 -0
  29. package/dist/simulation/runner.js +167 -0
  30. package/dist/simulation/runner.js.map +1 -0
  31. package/dist/temporal_merge.d.ts +70 -0
  32. package/dist/temporal_merge.d.ts.map +1 -0
  33. package/dist/temporal_merge.js +258 -0
  34. package/dist/temporal_merge.js.map +1 -0
  35. package/dist/tools/clairvoyance.d.ts +9 -0
  36. package/dist/tools/clairvoyance.d.ts.map +1 -0
  37. package/dist/tools/clairvoyance.js +321 -0
  38. package/dist/tools/clairvoyance.js.map +1 -0
  39. package/dist/tools/cognitive.d.ts.map +1 -1
  40. package/dist/tools/cognitive.js +163 -35
  41. package/dist/tools/cognitive.js.map +1 -1
  42. package/dist/tools/construction.d.ts +9 -0
  43. package/dist/tools/construction.d.ts.map +1 -0
  44. package/dist/tools/construction.js +350 -0
  45. package/dist/tools/construction.js.map +1 -0
  46. package/dist/tools/graph.d.ts.map +1 -1
  47. package/dist/tools/graph.js +196 -33
  48. package/dist/tools/graph.js.map +1 -1
  49. package/dist/tools/graph_sanitizer.d.ts +24 -0
  50. package/dist/tools/graph_sanitizer.d.ts.map +1 -0
  51. package/dist/tools/graph_sanitizer.js +79 -0
  52. package/dist/tools/graph_sanitizer.js.map +1 -0
  53. package/dist/tools/lifecycle.d.ts.map +1 -1
  54. package/dist/tools/lifecycle.js +215 -113
  55. package/dist/tools/lifecycle.js.map +1 -1
  56. package/dist/tools/livedata.d.ts +9 -0
  57. package/dist/tools/livedata.d.ts.map +1 -0
  58. package/dist/tools/livedata.js +222 -0
  59. package/dist/tools/livedata.js.map +1 -0
  60. package/dist/tools/memory.d.ts +1 -0
  61. package/dist/tools/memory.d.ts.map +1 -1
  62. package/dist/tools/memory.js +163 -31
  63. package/dist/tools/memory.js.map +1 -1
  64. package/dist/tools/recall.d.ts.map +1 -1
  65. package/dist/tools/recall.js +85 -31
  66. package/dist/tools/recall.js.map +1 -1
  67. package/dist/tools/retrieval.d.ts +9 -0
  68. package/dist/tools/retrieval.d.ts.map +1 -0
  69. package/dist/tools/retrieval.js +338 -0
  70. package/dist/tools/retrieval.js.map +1 -0
  71. package/dist/tools/system.d.ts +3 -0
  72. package/dist/tools/system.d.ts.map +1 -1
  73. package/dist/tools/system.js +88 -13
  74. package/dist/tools/system.js.map +1 -1
  75. package/dist/validate_retrieval.d.ts +33 -0
  76. package/dist/validate_retrieval.d.ts.map +1 -0
  77. package/dist/validate_retrieval.js +97 -0
  78. package/dist/validate_retrieval.js.map +1 -0
  79. package/package.json +1 -1
  80. 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
- // Sequential searches that should be batched
25
- if (toolName === 'velixar_search' && recent.length >= 1 && recent[recent.length - 1] === 'velixar_search') {
26
- return 'Tip: use velixar_batch_search for multiple queries in one call.';
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
- // Search right after context with no other tool in between
29
- if (toolName === 'velixar_search' && recent.length >= 1 && recent[recent.length - 1] === 'velixar_context') {
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 === 'velixar_search' || t === 'velixar_context' || t === 'velixar_batch_search')) {
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
- const server = new Server({ name: 'velixar-mcp-server', version: '1.1.0' }, { capabilities: { tools: {}, resources: {}, prompts: {} } });
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: allTools }));
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(['velixar_store', 'velixar_update', 'velixar_delete', 'velixar_distill']);
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
- // Alert-level for critical failures
176
- if (name === 'velixar_store' || name === 'velixar_batch_store' || name === 'velixar_import' || name === 'velixar_upload') {
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 {
@@ -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