@erosolaraijs/cure 2.2.0 → 2.3.1

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 (35) hide show
  1. package/README.md +314 -26
  2. package/dist/bin/cure.js +173 -23
  3. package/dist/bin/cure.js.map +1 -1
  4. package/dist/capabilities/cureValidationFramework.d.ts +195 -0
  5. package/dist/capabilities/cureValidationFramework.d.ts.map +1 -0
  6. package/dist/capabilities/cureValidationFramework.js +577 -0
  7. package/dist/capabilities/cureValidationFramework.js.map +1 -0
  8. package/dist/capabilities/emergingTherapeutics.d.ts +145 -0
  9. package/dist/capabilities/emergingTherapeutics.d.ts.map +1 -0
  10. package/dist/capabilities/emergingTherapeutics.js +600 -0
  11. package/dist/capabilities/emergingTherapeutics.js.map +1 -0
  12. package/dist/capabilities/globalCancerCoverage.d.ts +143 -0
  13. package/dist/capabilities/globalCancerCoverage.d.ts.map +1 -0
  14. package/dist/capabilities/globalCancerCoverage.js +1066 -0
  15. package/dist/capabilities/globalCancerCoverage.js.map +1 -0
  16. package/dist/capabilities/index.d.ts +21 -0
  17. package/dist/capabilities/index.d.ts.map +1 -1
  18. package/dist/capabilities/index.js +24 -0
  19. package/dist/capabilities/index.js.map +1 -1
  20. package/dist/capabilities/resistanceManagement.d.ts +89 -0
  21. package/dist/capabilities/resistanceManagement.d.ts.map +1 -0
  22. package/dist/capabilities/resistanceManagement.js +713 -0
  23. package/dist/capabilities/resistanceManagement.js.map +1 -0
  24. package/dist/capabilities/universalCancerCureEngine.d.ts +254 -0
  25. package/dist/capabilities/universalCancerCureEngine.d.ts.map +1 -0
  26. package/dist/capabilities/universalCancerCureEngine.js +734 -0
  27. package/dist/capabilities/universalCancerCureEngine.js.map +1 -0
  28. package/package.json +1 -1
  29. package/src/bin/cure.ts +186 -23
  30. package/src/capabilities/cureValidationFramework.ts +757 -0
  31. package/src/capabilities/emergingTherapeutics.ts +760 -0
  32. package/src/capabilities/globalCancerCoverage.ts +1256 -0
  33. package/src/capabilities/index.ts +53 -0
  34. package/src/capabilities/resistanceManagement.ts +835 -0
  35. package/src/capabilities/universalCancerCureEngine.ts +1040 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universalCancerCureEngine.js","sourceRoot":"","sources":["../../src/capabilities/universalCancerCureEngine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@erosolaraijs/cure",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "description": "AI-powered unified cancer treatment framework with multi-provider support for medical research and patient care",
5
5
  "main": "dist/bin/cure.js",
6
6
  "type": "module",
package/src/bin/cure.ts CHANGED
@@ -26,11 +26,28 @@ import {
26
26
  type RealWorldPatient
27
27
  } from '../orchestrator/realWorldOncology.js';
28
28
 
29
- const VERSION = '2.2.0';
29
+ const VERSION = '2.3.1';
30
30
  const PACKAGE_NAME = '@erosolaraijs/cure';
31
- const XAI_MODEL = 'grok-4-1-fast-reasoning';
32
31
  const UPDATE_CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
33
32
 
33
+ // AI Model Configuration
34
+ type AIProvider = 'xai' | 'openai';
35
+ let currentProvider: AIProvider = (process.env.AI_PROVIDER as AIProvider) || 'xai';
36
+ const XAI_MODEL = 'grok-4-1-fast-reasoning';
37
+ const OPENAI_MODEL = 'gpt-5.1';
38
+
39
+ function getActiveModel(): string {
40
+ return currentProvider === 'openai' ? OPENAI_MODEL : XAI_MODEL;
41
+ }
42
+
43
+ function getActiveProvider(): string {
44
+ return currentProvider === 'openai' ? 'OpenAI' : 'xAI';
45
+ }
46
+
47
+ function setProvider(provider: AIProvider): void {
48
+ currentProvider = provider;
49
+ }
50
+
34
51
  // Update check cache file
35
52
  const UPDATE_CACHE_DIR = path.join(os.homedir(), '.cure');
36
53
  const UPDATE_CACHE_FILE = path.join(UPDATE_CACHE_DIR, 'update-check.json');
@@ -60,6 +77,19 @@ let cancerTreatment: CancerTreatmentCapabilityModule;
60
77
  let oncologyService: RealWorldOncologyService | null = null;
61
78
  let conversationHistory: Array<{role: string, content: string}> = [];
62
79
  let xaiApiKey: string | undefined = process.env.XAI_API_KEY;
80
+ let openaiApiKey: string | undefined = process.env.OPENAI_API_KEY;
81
+
82
+ function getActiveApiKey(): string | undefined {
83
+ return currentProvider === 'openai' ? openaiApiKey : xaiApiKey;
84
+ }
85
+
86
+ function setActiveApiKey(key: string): void {
87
+ if (currentProvider === 'openai') {
88
+ openaiApiKey = key;
89
+ } else {
90
+ xaiApiKey = key;
91
+ }
92
+ }
63
93
 
64
94
  // Service configuration
65
95
  let serviceConfig: Partial<RealWorldConfig> = {
@@ -339,6 +369,88 @@ async function callXAI(userMessage: string): Promise<string> {
339
369
  });
340
370
  }
341
371
 
372
+ async function callOpenAI(userMessage: string): Promise<string> {
373
+ if (!openaiApiKey) {
374
+ return `${colors.yellow}API key not set.${colors.reset} Use ${colors.cyan}/key YOUR_API_KEY${colors.reset} to set your OpenAI API key.\n\nGet your key at: https://platform.openai.com/api-keys`;
375
+ }
376
+
377
+ const apiKey = openaiApiKey;
378
+
379
+ conversationHistory.push({ role: 'user', content: userMessage });
380
+
381
+ const messages = [
382
+ { role: 'system', content: SYSTEM_PROMPT },
383
+ ...conversationHistory
384
+ ];
385
+
386
+ const requestBody = JSON.stringify({
387
+ model: OPENAI_MODEL,
388
+ messages: messages,
389
+ temperature: 0.7,
390
+ max_tokens: 2048
391
+ });
392
+
393
+ return new Promise((resolve, reject) => {
394
+ const options = {
395
+ hostname: 'api.openai.com',
396
+ port: 443,
397
+ path: '/v1/chat/completions',
398
+ method: 'POST',
399
+ headers: {
400
+ 'Content-Type': 'application/json',
401
+ 'Authorization': `Bearer ${apiKey}`,
402
+ 'Content-Length': Buffer.byteLength(requestBody)
403
+ }
404
+ };
405
+
406
+ const req = https.request(options, (res) => {
407
+ let data = '';
408
+ res.on('data', (chunk) => { data += chunk; });
409
+ res.on('end', () => {
410
+ try {
411
+ const response = JSON.parse(data);
412
+ if (response.choices && response.choices[0]?.message?.content) {
413
+ const assistantMessage = response.choices[0].message.content;
414
+ conversationHistory.push({ role: 'assistant', content: assistantMessage });
415
+
416
+ // Keep conversation history manageable
417
+ if (conversationHistory.length > 20) {
418
+ conversationHistory = conversationHistory.slice(-16);
419
+ }
420
+
421
+ resolve(assistantMessage);
422
+ } else if (response.error) {
423
+ resolve(`${colors.red}API Error: ${response.error.message}${colors.reset}`);
424
+ } else {
425
+ resolve(`${colors.red}Unexpected response format${colors.reset}`);
426
+ }
427
+ } catch (e) {
428
+ resolve(`${colors.red}Failed to parse response${colors.reset}`);
429
+ }
430
+ });
431
+ });
432
+
433
+ req.on('error', (e) => {
434
+ resolve(`${colors.red}Connection error: ${e.message}${colors.reset}`);
435
+ });
436
+
437
+ req.setTimeout(30000, () => {
438
+ req.destroy();
439
+ resolve(`${colors.yellow}Request timed out. Try again.${colors.reset}`);
440
+ });
441
+
442
+ req.write(requestBody);
443
+ req.end();
444
+ });
445
+ }
446
+
447
+ async function callAI(userMessage: string): Promise<string> {
448
+ if (currentProvider === 'openai') {
449
+ return callOpenAI(userMessage);
450
+ }
451
+ return callXAI(userMessage);
452
+ }
453
+
342
454
  async function initializeServices(): Promise<void> {
343
455
  console.log(`${colors.dim}Initializing oncology services...${colors.reset}`);
344
456
  cancerTreatment = new CancerTreatmentCapabilityModule();
@@ -385,9 +497,9 @@ async function launchInteractiveMode(): Promise<void> {
385
497
  process.stdout.write(`\n${colors.cyan}cure${colors.reset} ${colors.dim}>${colors.reset} `);
386
498
  };
387
499
 
388
- const modelInfo = xaiApiKey
389
- ? `${colors.green}Connected to xAI ${XAI_MODEL}${colors.reset}`
390
- : `${colors.yellow}Use /key YOUR_API_KEY to enable AI${colors.reset}`;
500
+ const modelInfo = getActiveApiKey()
501
+ ? `${colors.green}Connected to ${getActiveProvider()} ${getActiveModel()}${colors.reset}`
502
+ : `${colors.yellow}Use /key YOUR_API_KEY to enable AI (${getActiveProvider()})${colors.reset}`;
391
503
 
392
504
  console.log(`${colors.dim}${modelInfo}${colors.reset}`);
393
505
  console.log(`${colors.dim}Real-world oncology platform ready. Type your question or /help for commands.${colors.reset}\n`);
@@ -473,24 +585,69 @@ async function processInput(input: string): Promise<void> {
473
585
  await runDemo();
474
586
  return;
475
587
  case 'version':
476
- console.log(`\n${colors.cyan}cure${colors.reset} v${VERSION} (${XAI_MODEL})`);
588
+ console.log(`\n${colors.cyan}cure${colors.reset} v${VERSION} (${getActiveProvider()} ${getActiveModel()})`);
477
589
  return;
478
590
  case 'update':
479
591
  await checkForUpdate();
480
592
  return;
481
593
  case 'model':
482
- console.log(`\n${colors.cyan}Model:${colors.reset} ${XAI_MODEL}`);
483
- console.log(`${colors.cyan}API:${colors.reset} ${xaiApiKey ? 'Connected' : 'Not configured'}`);
594
+ if (args[0]) {
595
+ const provider = args[0].toLowerCase();
596
+ if (provider === 'xai' || provider === 'openai') {
597
+ setProvider(provider as AIProvider);
598
+ console.log(`\n${colors.green}✓ Switched to ${getActiveProvider()} ${getActiveModel()}${colors.reset}`);
599
+ if (!getActiveApiKey()) {
600
+ const keyUrl = currentProvider === 'openai'
601
+ ? 'https://platform.openai.com/api-keys'
602
+ : 'https://console.x.ai';
603
+ console.log(`${colors.yellow}Note: API key not set for ${getActiveProvider()}${colors.reset}`);
604
+ console.log(`${colors.dim}Use /key YOUR_API_KEY or get one at: ${keyUrl}${colors.reset}`);
605
+ }
606
+ } else {
607
+ console.log(`\n${colors.red}Unknown provider: ${provider}${colors.reset}`);
608
+ console.log(`${colors.dim}Available: xai, openai${colors.reset}`);
609
+ }
610
+ } else {
611
+ console.log(`\n${colors.cyan}Provider:${colors.reset} ${getActiveProvider()}`);
612
+ console.log(`${colors.cyan}Model:${colors.reset} ${getActiveModel()}`);
613
+ console.log(`${colors.cyan}API:${colors.reset} ${getActiveApiKey() ? 'Connected' : 'Not configured'}`);
614
+ console.log(`\n${colors.dim}Available providers:${colors.reset}`);
615
+ console.log(` ${currentProvider === 'xai' ? colors.green + '●' : colors.dim + '○'} xai${colors.reset} - ${XAI_MODEL}`);
616
+ console.log(` ${currentProvider === 'openai' ? colors.green + '●' : colors.dim + '○'} openai${colors.reset} - ${OPENAI_MODEL}`);
617
+ console.log(`\n${colors.dim}Usage: /model <xai|openai> to switch providers${colors.reset}`);
618
+ }
484
619
  return;
485
620
  case 'key':
486
621
  if (args[0]) {
487
- xaiApiKey = args[0];
488
- console.log(`\n${colors.green}✓ API key set successfully${colors.reset}`);
622
+ // Check if first arg is a provider name
623
+ const providerArg = args[0].toLowerCase();
624
+ if ((providerArg === 'xai' || providerArg === 'openai') && args[1]) {
625
+ // Set key for specific provider: /key openai sk-xxx
626
+ if (providerArg === 'openai') {
627
+ openaiApiKey = args[1];
628
+ console.log(`\n${colors.green}✓ OpenAI API key set successfully${colors.reset}`);
629
+ } else {
630
+ xaiApiKey = args[1];
631
+ console.log(`\n${colors.green}✓ xAI API key set successfully${colors.reset}`);
632
+ }
633
+ } else {
634
+ // Set key for current provider: /key sk-xxx
635
+ setActiveApiKey(args[0]);
636
+ console.log(`\n${colors.green}✓ ${getActiveProvider()} API key set successfully${colors.reset}`);
637
+ }
489
638
  console.log(`${colors.dim}You can now chat with the AI oncologist.${colors.reset}`);
490
639
  } else {
491
- console.log(`\n${colors.cyan}API Status:${colors.reset} ${xaiApiKey ? 'Connected' : 'Not set'}`);
492
- console.log(`\n${colors.dim}Usage: /key YOUR_XAI_API_KEY${colors.reset}`);
493
- console.log(`${colors.dim}Get your key at: https://console.x.ai${colors.reset}`);
640
+ console.log(`\n${colors.bold}API Keys Status${colors.reset}`);
641
+ console.log(`${colors.dim}─────────────────────────────────────${colors.reset}`);
642
+ console.log(` ${currentProvider === 'xai' ? colors.green + '●' : colors.dim + '○'} xai${colors.reset} ${xaiApiKey ? colors.green + 'Set' : colors.yellow + 'Not set'}${colors.reset}`);
643
+ console.log(` ${currentProvider === 'openai' ? colors.green + '●' : colors.dim + '○'} openai${colors.reset} ${openaiApiKey ? colors.green + 'Set' : colors.yellow + 'Not set'}${colors.reset}`);
644
+ console.log(`\n${colors.dim}Usage:${colors.reset}`);
645
+ console.log(` /key YOUR_API_KEY Set key for current provider (${getActiveProvider()})`);
646
+ console.log(` /key xai YOUR_API_KEY Set xAI key`);
647
+ console.log(` /key openai YOUR_API_KEY Set OpenAI key`);
648
+ console.log(`\n${colors.dim}Get your keys at:${colors.reset}`);
649
+ console.log(` xAI: https://console.x.ai`);
650
+ console.log(` OpenAI: https://platform.openai.com/api-keys`);
494
651
  }
495
652
  return;
496
653
  default:
@@ -502,7 +659,7 @@ async function processInput(input: string): Promise<void> {
502
659
 
503
660
  // AI-powered response for natural language
504
661
  console.log(`\n${colors.dim}Thinking...${colors.reset}`);
505
- const response = await callXAI(input);
662
+ const response = await callAI(input);
506
663
  console.log(`\n${response}`);
507
664
  }
508
665
 
@@ -857,8 +1014,9 @@ async function showSystemStatus(): Promise<void> {
857
1014
  console.log(` HIPAA Compliance:${serviceConfig.compliance?.enabled ? colors.green + 'Enabled' : colors.dim + 'Disabled'}${colors.reset}`);
858
1015
 
859
1016
  console.log(`\n${colors.bold}API${colors.reset}`);
860
- console.log(` xAI API: ${xaiApiKey ? colors.green + 'Connected' : colors.yellow + 'Not configured'}${colors.reset}`);
861
- console.log(` Model: ${XAI_MODEL}`);
1017
+ console.log(` Provider: ${getActiveProvider()}`);
1018
+ console.log(` API Status: ${getActiveApiKey() ? colors.green + 'Connected' : colors.yellow + 'Not configured'}${colors.reset}`);
1019
+ console.log(` Model: ${getActiveModel()}`);
862
1020
 
863
1021
  console.log(`\n${colors.green}✓ Status check complete${colors.reset}`);
864
1022
  } catch (error) {
@@ -1009,7 +1167,7 @@ ${colors.cyan}${colors.bold} ╔═══════════════
1009
1167
  ║ ║
1010
1168
  ╚═══════════════════════════════════════════════════════════╝${colors.reset}
1011
1169
 
1012
- ${colors.dim}v${VERSION} | xAI ${XAI_MODEL}${colors.reset}
1170
+ ${colors.dim}v${VERSION} | ${getActiveProvider()} ${getActiveModel()}${colors.reset}
1013
1171
  `);
1014
1172
  }
1015
1173
 
@@ -1017,7 +1175,7 @@ function printInteractiveHelp(): void {
1017
1175
  console.log(`
1018
1176
  ${colors.bold}Commands${colors.reset}
1019
1177
  ${colors.dim}─────────────────────────────────────${colors.reset}
1020
- ${colors.cyan}/key${colors.reset} [api_key] Set xAI API key
1178
+ ${colors.cyan}/key${colors.reset} [provider] [key] Set API key (for xai or openai)
1021
1179
  ${colors.cyan}/analyze${colors.reset} [patient] Analyze patient data
1022
1180
  ${colors.cyan}/plan${colors.reset} [patient] Design treatment plan
1023
1181
  ${colors.cyan}/cure${colors.reset} [cancer] [stage] Generate cure protocol
@@ -1035,7 +1193,7 @@ ${colors.dim}──────────────────────
1035
1193
  ${colors.bold}Other${colors.reset}
1036
1194
  ${colors.dim}─────────────────────────────────────${colors.reset}
1037
1195
  ${colors.cyan}/demo${colors.reset} Run framework demo
1038
- ${colors.cyan}/model${colors.reset} Show AI model info
1196
+ ${colors.cyan}/model${colors.reset} [xai|openai] Show/switch AI provider
1039
1197
  ${colors.cyan}/update${colors.reset} Check for updates
1040
1198
  ${colors.cyan}/clear${colors.reset} Clear conversation
1041
1199
  ${colors.cyan}/help${colors.reset} Show this help
@@ -1060,8 +1218,11 @@ ${colors.dim}──────────────────────
1060
1218
 
1061
1219
  ${colors.bold}Setup${colors.reset}
1062
1220
  ${colors.dim}─────────────────────────────────────${colors.reset}
1063
- 1. Get API key at https://console.x.ai
1064
- 2. Run: /key YOUR_API_KEY
1221
+ 1. Get API key:
1222
+ - xAI: https://console.x.ai
1223
+ - OpenAI: https://platform.openai.com/api-keys
1224
+ 2. Set provider: AI_PROVIDER=openai (or xai)
1225
+ 3. Run: /key YOUR_API_KEY
1065
1226
  `);
1066
1227
  }
1067
1228
 
@@ -1069,7 +1230,7 @@ function printHelp(): void {
1069
1230
  console.log(`
1070
1231
  ${colors.bold}Cure - AI Cancer Treatment Framework${colors.reset}
1071
1232
  Real-World Precision Oncology Platform
1072
- Powered by xAI ${XAI_MODEL}
1233
+ Powered by ${getActiveProvider()} ${getActiveModel()}
1073
1234
 
1074
1235
  ${colors.bold}Usage:${colors.reset}
1075
1236
  cure Launch interactive AI chat
@@ -1100,7 +1261,9 @@ ${colors.bold}Options:${colors.reset}
1100
1261
  --drugs=<list> Comma-separated drug names
1101
1262
 
1102
1263
  ${colors.bold}Environment:${colors.reset}
1103
- XAI_API_KEY xAI API key for AI-powered responses
1264
+ AI_PROVIDER AI provider: 'xai' or 'openai' (default: xai)
1265
+ XAI_API_KEY xAI API key (for xAI provider)
1266
+ OPENAI_API_KEY OpenAI API key (for OpenAI provider)
1104
1267
  FHIR_BASE_URL FHIR server URL for EHR integration
1105
1268
  FHIR_CLIENT_ID FHIR OAuth client ID
1106
1269
  FHIR_CLIENT_SECRET FHIR OAuth client secret