@erosolaraijs/cure 1.0.1 → 1.0.3

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 (87) hide show
  1. package/dist/bin/cure.d.ts +2 -5
  2. package/dist/bin/cure.d.ts.map +1 -1
  3. package/dist/bin/cure.js +360 -129
  4. package/dist/bin/cure.js.map +1 -1
  5. package/dist/clinician/decisionSupport.d.ts +325 -0
  6. package/dist/clinician/decisionSupport.d.ts.map +1 -0
  7. package/dist/clinician/decisionSupport.js +604 -0
  8. package/dist/clinician/decisionSupport.js.map +1 -0
  9. package/dist/clinician/index.d.ts +5 -0
  10. package/dist/clinician/index.d.ts.map +1 -0
  11. package/dist/clinician/index.js +5 -0
  12. package/dist/clinician/index.js.map +1 -0
  13. package/dist/compliance/index.d.ts +5 -0
  14. package/dist/compliance/index.d.ts.map +1 -0
  15. package/dist/compliance/index.js +5 -0
  16. package/dist/compliance/index.js.map +1 -0
  17. package/dist/index.d.ts +65 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +102 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/integrations/clinicalTrials/index.d.ts +5 -0
  22. package/dist/integrations/clinicalTrials/index.d.ts.map +1 -0
  23. package/dist/integrations/clinicalTrials/index.js +5 -0
  24. package/dist/integrations/clinicalTrials/index.js.map +1 -0
  25. package/dist/integrations/ehr/index.d.ts +5 -0
  26. package/dist/integrations/ehr/index.d.ts.map +1 -0
  27. package/dist/integrations/ehr/index.js +5 -0
  28. package/dist/integrations/ehr/index.js.map +1 -0
  29. package/dist/integrations/genomics/index.d.ts +5 -0
  30. package/dist/integrations/genomics/index.d.ts.map +1 -0
  31. package/dist/integrations/genomics/index.js +5 -0
  32. package/dist/integrations/genomics/index.js.map +1 -0
  33. package/dist/ml/index.d.ts +5 -0
  34. package/dist/ml/index.d.ts.map +1 -0
  35. package/dist/ml/index.js +5 -0
  36. package/dist/ml/index.js.map +1 -0
  37. package/dist/ml/outcomePredictor.d.ts +297 -0
  38. package/dist/ml/outcomePredictor.d.ts.map +1 -0
  39. package/dist/ml/outcomePredictor.js +823 -0
  40. package/dist/ml/outcomePredictor.js.map +1 -0
  41. package/dist/orchestrator/index.d.ts +5 -0
  42. package/dist/orchestrator/index.d.ts.map +1 -0
  43. package/dist/orchestrator/index.js +5 -0
  44. package/dist/orchestrator/index.js.map +1 -0
  45. package/dist/orchestrator/realWorldOncology.d.ts +351 -0
  46. package/dist/orchestrator/realWorldOncology.d.ts.map +1 -0
  47. package/dist/orchestrator/realWorldOncology.js +425 -0
  48. package/dist/orchestrator/realWorldOncology.js.map +1 -0
  49. package/dist/patient/index.d.ts +5 -0
  50. package/dist/patient/index.d.ts.map +1 -0
  51. package/dist/patient/index.js +5 -0
  52. package/dist/patient/index.js.map +1 -0
  53. package/dist/patient/patientPortal.d.ts +337 -0
  54. package/dist/patient/patientPortal.d.ts.map +1 -0
  55. package/dist/patient/patientPortal.js +667 -0
  56. package/dist/patient/patientPortal.js.map +1 -0
  57. package/dist/safety/drugInteractions.d.ts +230 -0
  58. package/dist/safety/drugInteractions.d.ts.map +1 -0
  59. package/dist/safety/drugInteractions.js +697 -0
  60. package/dist/safety/drugInteractions.js.map +1 -0
  61. package/dist/safety/index.d.ts +5 -0
  62. package/dist/safety/index.d.ts.map +1 -0
  63. package/dist/safety/index.js +5 -0
  64. package/dist/safety/index.js.map +1 -0
  65. package/dist/validation/index.d.ts +5 -0
  66. package/dist/validation/index.d.ts.map +1 -0
  67. package/dist/validation/index.js +5 -0
  68. package/dist/validation/index.js.map +1 -0
  69. package/dist/validation/retrospectiveValidator.d.ts +246 -0
  70. package/dist/validation/retrospectiveValidator.d.ts.map +1 -0
  71. package/dist/validation/retrospectiveValidator.js +602 -0
  72. package/dist/validation/retrospectiveValidator.js.map +1 -0
  73. package/package.json +1 -1
  74. package/src/bin/cure.ts +412 -143
  75. package/src/clinician/decisionSupport.ts +949 -0
  76. package/src/clinician/index.ts +11 -0
  77. package/src/compliance/index.ts +19 -0
  78. package/src/integrations/clinicalTrials/index.ts +21 -0
  79. package/src/integrations/ehr/index.ts +32 -0
  80. package/src/integrations/genomics/index.ts +23 -0
  81. package/src/ml/index.ts +15 -0
  82. package/src/orchestrator/index.ts +11 -0
  83. package/src/orchestrator/realWorldOncology.ts +803 -0
  84. package/src/patient/index.ts +14 -0
  85. package/src/patient/patientPortal.ts +1039 -0
  86. package/src/safety/index.ts +14 -0
  87. package/src/validation/index.ts +10 -0
@@ -1,10 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * 癌症治疗统一人工智能框架 - 核心医疗控制台
4
- * Unified Cancer Treatment Framework - Core Medical Console
5
- *
6
- * 全球首个人工通用智能驱动的癌症治疗统一指挥控制平台
7
- * 提供完整的癌症研究、药物发现、治疗规划、患者管理和医疗系统集成能力
3
+ * Cure - AI Cancer Treatment Framework
4
+ * Interactive CLI powered by xAI Grok for precision oncology
8
5
  */
9
6
  export {};
10
7
  //# sourceMappingURL=cure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cure.d.ts","sourceRoot":"","sources":["../../src/bin/cure.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
1
+ {"version":3,"file":"cure.d.ts","sourceRoot":"","sources":["../../src/bin/cure.ts"],"names":[],"mappings":";AACA;;;GAGG"}
package/dist/bin/cure.js CHANGED
@@ -1,169 +1,400 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * 癌症治疗统一人工智能框架 - 核心医疗控制台
4
- * Unified Cancer Treatment Framework - Core Medical Console
5
- *
6
- * 全球首个人工通用智能驱动的癌症治疗统一指挥控制平台
7
- * 提供完整的癌症研究、药物发现、治疗规划、患者管理和医疗系统集成能力
3
+ * Cure - AI Cancer Treatment Framework
4
+ * Interactive CLI powered by xAI Grok for precision oncology
8
5
  */
6
+ import * as readline from 'readline';
7
+ import * as https from 'https';
9
8
  import { CancerTreatmentCapabilityModule } from '../capabilities/cancerTreatmentCapability.js';
9
+ const VERSION = '1.0.3';
10
+ const XAI_MODEL = 'grok-4-1-fast-reasoning';
11
+ // ANSI color codes
12
+ const colors = {
13
+ reset: '\x1b[0m',
14
+ bold: '\x1b[1m',
15
+ dim: '\x1b[2m',
16
+ cyan: '\x1b[36m',
17
+ green: '\x1b[32m',
18
+ yellow: '\x1b[33m',
19
+ blue: '\x1b[34m',
20
+ magenta: '\x1b[35m',
21
+ red: '\x1b[31m',
22
+ white: '\x1b[37m',
23
+ };
24
+ let cancerTreatment;
25
+ let conversationHistory = [];
26
+ const SYSTEM_PROMPT = `You are Cure, an advanced AI oncologist assistant powered by the Cure Cancer Treatment Framework. You help doctors, researchers, and patients with:
27
+
28
+ 1. Cancer diagnosis and staging analysis
29
+ 2. Personalized treatment planning (chemotherapy, immunotherapy, targeted therapy, CAR-T)
30
+ 3. Drug target discovery and mechanism analysis
31
+ 4. Clinical trial matching and eligibility
32
+ 5. Genomic biomarker interpretation (EGFR, KRAS, BRAF, HER2, PD-L1, etc.)
33
+ 6. Treatment response prediction and survival analysis
34
+ 7. Drug interaction and safety checks
35
+ 8. HIPAA-compliant patient data handling
36
+
37
+ You have deep knowledge of:
38
+ - NCCN, ESMO, ASCO treatment guidelines
39
+ - FDA-approved cancer therapies and their mechanisms
40
+ - Precision medicine and molecular oncology
41
+ - Immunotherapy (checkpoint inhibitors, CAR-T, TILs)
42
+ - Targeted therapies for driver mutations
43
+ - Clinical trial design and interpretation
44
+
45
+ Be concise, scientifically accurate, and clinically relevant. When discussing specific treatments, cite evidence levels and relevant trials. Always recommend consulting with treating oncologists for actual patient care decisions.
46
+
47
+ Available commands the user can run:
48
+ - /analyze [patient_id] - Analyze patient data
49
+ - /plan [patient_id] - Design treatment plan
50
+ - /discover [gene] [cancer] - Drug target discovery
51
+ - /demo - Run framework demonstration
52
+ - /help - Show available commands`;
53
+ async function callXAI(userMessage) {
54
+ const apiKey = process.env.XAI_API_KEY;
55
+ if (!apiKey) {
56
+ return `${colors.yellow}Note: Set XAI_API_KEY environment variable for AI-powered responses.${colors.reset}\n\nI can help you with cancer treatment analysis. Try:\n /analyze P001 - Analyze patient\n /plan P001 - Design treatment plan\n /discover EGFR Lung - Find drug targets\n /demo - Run demonstration`;
57
+ }
58
+ conversationHistory.push({ role: 'user', content: userMessage });
59
+ const messages = [
60
+ { role: 'system', content: SYSTEM_PROMPT },
61
+ ...conversationHistory
62
+ ];
63
+ const requestBody = JSON.stringify({
64
+ model: XAI_MODEL,
65
+ messages: messages,
66
+ temperature: 0.7,
67
+ max_tokens: 2048
68
+ });
69
+ return new Promise((resolve, reject) => {
70
+ const options = {
71
+ hostname: 'api.x.ai',
72
+ port: 443,
73
+ path: '/v1/chat/completions',
74
+ method: 'POST',
75
+ headers: {
76
+ 'Content-Type': 'application/json',
77
+ 'Authorization': `Bearer ${apiKey}`,
78
+ 'Content-Length': Buffer.byteLength(requestBody)
79
+ }
80
+ };
81
+ const req = https.request(options, (res) => {
82
+ let data = '';
83
+ res.on('data', (chunk) => { data += chunk; });
84
+ res.on('end', () => {
85
+ try {
86
+ const response = JSON.parse(data);
87
+ if (response.choices && response.choices[0]?.message?.content) {
88
+ const assistantMessage = response.choices[0].message.content;
89
+ conversationHistory.push({ role: 'assistant', content: assistantMessage });
90
+ // Keep conversation history manageable
91
+ if (conversationHistory.length > 20) {
92
+ conversationHistory = conversationHistory.slice(-16);
93
+ }
94
+ resolve(assistantMessage);
95
+ }
96
+ else if (response.error) {
97
+ resolve(`${colors.red}API Error: ${response.error.message}${colors.reset}`);
98
+ }
99
+ else {
100
+ resolve(`${colors.red}Unexpected response format${colors.reset}`);
101
+ }
102
+ }
103
+ catch (e) {
104
+ resolve(`${colors.red}Failed to parse response${colors.reset}`);
105
+ }
106
+ });
107
+ });
108
+ req.on('error', (e) => {
109
+ resolve(`${colors.red}Connection error: ${e.message}${colors.reset}`);
110
+ });
111
+ req.setTimeout(30000, () => {
112
+ req.destroy();
113
+ resolve(`${colors.yellow}Request timed out. Try again.${colors.reset}`);
114
+ });
115
+ req.write(requestBody);
116
+ req.end();
117
+ });
118
+ }
10
119
  async function main() {
11
120
  const args = process.argv.slice(2);
12
- // Check for version flag
13
121
  if (args.includes('--version') || args.includes('-v')) {
14
- const pkg = JSON.parse(await import('fs').then(fs => fs.readFileSync(new URL('../../package.json', import.meta.url), 'utf-8')));
15
- console.log(`agi-core-cancer-treatment v${pkg.version}`);
122
+ console.log(`cure v${VERSION}`);
16
123
  process.exit(0);
17
124
  }
18
- // Check for help flag
19
125
  if (args.includes('--help') || args.includes('-h')) {
20
126
  printHelp();
21
127
  process.exit(0);
22
128
  }
23
- // Initialize module
24
- const cancerTreatment = new CancerTreatmentCapabilityModule();
25
- // Handle commands
26
- if (args.includes('--cancer-treatment') || args.includes('--medical')) {
27
- console.log('\n🏥 癌症治疗人工智能框架激活\n');
28
- console.log('💊 最大能力癌症治疗框架 - 全面医疗与AI能力\n');
29
- console.log('📊 框架提供以下核心能力:');
30
- console.log(' • 个性化癌症治疗协议分析与规划');
31
- console.log(' • AI驱动的药物靶点发现与设计');
32
- console.log(' • 精准医疗与基因组分析管道');
33
- console.log(' • 临床试验管理与优化');
34
- console.log(' • 患者多维度评估与监测');
35
- console.log(' • 医疗系统集成与数据协调');
36
- console.log(' • 统一医疗指挥与协调系统');
37
- console.log(' • 人工智能治疗决策支持\n');
38
- console.log('✅ 癌症治疗能力框架初始化完成');
39
- console.log('🚀 使用 --help 查看可用命令');
40
- }
41
- else if (args.includes('--analyze-patient')) {
42
- const patientId = args.find(arg => arg.startsWith('--patient='))?.split('=')[1] || 'P001';
43
- const includeGenomics = args.includes('--genomics');
44
- console.log(`\n🔍 分析患者: ${patientId}`);
45
- console.log('───────────────────────────');
46
- try {
47
- const result = await cancerTreatment.analyzePatient(patientId, includeGenomics);
48
- console.log('📊 分析结果:');
49
- console.log(` • 癌症类型: ${result.analysis.cancerType}`);
50
- console.log(` • 分期: ${result.analysis.stage}`);
51
- console.log(` • 生物标志物: ${result.analysis.biomarkers.join(', ')}`);
52
- console.log(` • 生存概率: ${(result.analysis.riskAssessment.survivalProbability * 100).toFixed(1)}%`);
53
- console.log('✅ 分析完成');
54
- }
55
- catch (error) {
56
- console.error('❌ 分析失败:', error);
57
- }
129
+ cancerTreatment = new CancerTreatmentCapabilityModule();
130
+ if (args.length > 0) {
131
+ await handleCommand(args);
58
132
  }
59
- else if (args.includes('--treatment-plan')) {
60
- const patientId = args.find(arg => arg.startsWith('--patient='))?.split('=')[1] || 'P001';
61
- const protocolId = args.find(arg => arg.startsWith('--protocol='))?.split('=')[1];
62
- console.log(`\n💊 设计治疗计划: ${patientId}`);
63
- console.log('─────────────────────────────');
64
- try {
65
- const result = await cancerTreatment.designTreatmentPlan(patientId, protocolId);
66
- console.log('📋 治疗计划:');
67
- console.log(` • 协议: ${result.plan.protocol.name}`);
68
- console.log(` • 治疗方式: ${result.plan.protocol.treatmentModalities.join(', ')}`);
69
- console.log(` • 预计疗效: ${(result.estimatedEfficacy * 100).toFixed(1)}%`);
70
- console.log(` • 时间线: ${result.plan.treatmentTimeline.length} 周`);
71
- console.log('✅ 治疗计划设计完成');
133
+ else {
134
+ await launchInteractiveMode();
135
+ }
136
+ }
137
+ async function launchInteractiveMode() {
138
+ console.clear();
139
+ printBanner();
140
+ const rl = readline.createInterface({
141
+ input: process.stdin,
142
+ output: process.stdout,
143
+ });
144
+ const prompt = () => {
145
+ process.stdout.write(`\n${colors.cyan}cure${colors.reset} ${colors.dim}>${colors.reset} `);
146
+ };
147
+ const modelInfo = process.env.XAI_API_KEY
148
+ ? `${colors.green}Connected to xAI ${XAI_MODEL}${colors.reset}`
149
+ : `${colors.yellow}Set XAI_API_KEY for AI responses${colors.reset}`;
150
+ console.log(`${colors.dim}${modelInfo}${colors.reset}`);
151
+ console.log(`${colors.dim}Type your question or /help for commands.${colors.reset}\n`);
152
+ prompt();
153
+ rl.on('line', async (input) => {
154
+ const trimmed = input.trim();
155
+ if (!trimmed) {
156
+ prompt();
157
+ return;
72
158
  }
73
- catch (error) {
74
- console.error('❌ 治疗计划设计失败:', error);
159
+ if (trimmed === '/exit' || trimmed === '/quit' || trimmed === 'exit' || trimmed === 'quit') {
160
+ console.log(`\n${colors.dim}Goodbye.${colors.reset}\n`);
161
+ rl.close();
162
+ process.exit(0);
75
163
  }
76
- }
77
- else if (args.includes('--drug-discovery')) {
78
- const targetGene = args.find(arg => arg.startsWith('--target='))?.split('=')[1] || 'EGFR';
79
- const cancerType = args.find(arg => arg.startsWith('--cancer='))?.split('=')[1] || 'Lung';
80
- console.log(`\n🧬 药物靶点发现: ${targetGene} (${cancerType} 癌症)`);
81
- console.log('──────────────────────────────');
82
- try {
83
- const result = await cancerTreatment.discoverDrugTargets(cancerType, targetGene);
84
- console.log('🔬 发现结果:');
85
- console.log(` • 癌症类型: ${result.cancerType}`);
86
- console.log(` • 目标基因: ${result.targetGene || '所有'}`);
87
- console.log(` • 发现靶点: ${result.discoveredTargets.length} 个`);
88
- result.discoveredTargets.slice(0, 3).forEach((target, index) => {
89
- console.log(` ${index + 1}. ${target.gene} - ${target.evidenceLevel} 证据等级`);
90
- console.log(` 相关癌症: ${target.cancerTypes.join(', ')}`);
91
- });
92
- console.log('✅ 药物靶点发现完成');
164
+ if (trimmed === '/help' || trimmed === 'help') {
165
+ printInteractiveHelp();
166
+ prompt();
167
+ return;
168
+ }
169
+ if (trimmed === '/clear') {
170
+ console.clear();
171
+ printBanner();
172
+ conversationHistory = [];
173
+ console.log(`${colors.dim}Conversation cleared.${colors.reset}`);
174
+ prompt();
175
+ return;
93
176
  }
94
- catch (error) {
95
- console.error('❌ 药物发现失败:', error);
177
+ await processInput(trimmed);
178
+ prompt();
179
+ });
180
+ rl.on('close', () => {
181
+ process.exit(0);
182
+ });
183
+ }
184
+ async function processInput(input) {
185
+ // Slash commands
186
+ if (input.startsWith('/')) {
187
+ const parts = input.slice(1).split(' ');
188
+ const cmd = parts[0];
189
+ const args = parts.slice(1);
190
+ switch (cmd) {
191
+ case 'analyze':
192
+ await analyzePatient(args[0] || 'P001', args.includes('--genomics'));
193
+ return;
194
+ case 'plan':
195
+ await designTreatmentPlan(args[0] || 'P001', args[1]);
196
+ return;
197
+ case 'discover':
198
+ await discoverTargets(args[0] || 'EGFR', args[1] || 'Lung');
199
+ return;
200
+ case 'demo':
201
+ await runDemo();
202
+ return;
203
+ case 'version':
204
+ console.log(`\n${colors.cyan}cure${colors.reset} v${VERSION} (${XAI_MODEL})`);
205
+ return;
206
+ case 'model':
207
+ console.log(`\n${colors.cyan}Model:${colors.reset} ${XAI_MODEL}`);
208
+ console.log(`${colors.cyan}API:${colors.reset} ${process.env.XAI_API_KEY ? 'Connected' : 'Not configured'}`);
209
+ return;
210
+ default:
211
+ console.log(`\n${colors.red}Unknown command: /${cmd}${colors.reset}`);
212
+ console.log(`${colors.dim}Type /help for available commands.${colors.reset}`);
213
+ return;
96
214
  }
97
215
  }
98
- else if (args.includes('--demo')) {
99
- console.log('\n🏥 癌症治疗框架演示');
100
- console.log('────────────────────');
101
- try {
102
- const { demonstrateCancerTreatmentFramework } = await import('../examples/cancerTreatmentDemo.js');
103
- await demonstrateCancerTreatmentFramework();
216
+ // AI-powered response for natural language
217
+ console.log(`\n${colors.dim}Thinking...${colors.reset}`);
218
+ const response = await callXAI(input);
219
+ console.log(`\n${response}`);
220
+ }
221
+ async function analyzePatient(patientId, includeGenomics = false) {
222
+ console.log(`\n${colors.cyan}Analyzing patient ${patientId}...${colors.reset}\n`);
223
+ try {
224
+ const result = await cancerTreatment.analyzePatient(patientId, includeGenomics);
225
+ console.log(`${colors.bold}Patient Analysis${colors.reset}`);
226
+ console.log(`${colors.dim}─────────────────────────────${colors.reset}`);
227
+ console.log(` Cancer Type: ${colors.yellow}${result.analysis.cancerType}${colors.reset}`);
228
+ console.log(` Stage: ${colors.yellow}${result.analysis.stage}${colors.reset}`);
229
+ console.log(` Biomarkers: ${result.analysis.biomarkers.join(', ')}`);
230
+ console.log(` Survival Prob: ${colors.green}${(result.analysis.riskAssessment.survivalProbability * 100).toFixed(1)}%${colors.reset}`);
231
+ console.log(` Recurrence: ${colors.yellow}${(result.analysis.riskAssessment.recurrenceRisk * 100).toFixed(1)}%${colors.reset}`);
232
+ if (result.analysis.genomicProfile) {
233
+ console.log(`\n${colors.bold}Genomic Profile${colors.reset}`);
234
+ console.log(` Mutations: ${result.analysis.genomicProfile.mutations?.length || 0} detected`);
104
235
  }
105
- catch (error) {
106
- console.error('❌ 演示失败:', error);
236
+ console.log(`\n${colors.green}✓ Analysis complete${colors.reset}`);
237
+ }
238
+ catch (error) {
239
+ console.error(`${colors.red}✗ Analysis failed:${colors.reset}`, error);
240
+ }
241
+ }
242
+ async function designTreatmentPlan(patientId, protocolId) {
243
+ console.log(`\n${colors.cyan}Designing treatment plan for ${patientId}...${colors.reset}\n`);
244
+ try {
245
+ const result = await cancerTreatment.designTreatmentPlan(patientId, protocolId);
246
+ console.log(`${colors.bold}Treatment Plan${colors.reset}`);
247
+ console.log(`${colors.dim}─────────────────────────────${colors.reset}`);
248
+ console.log(` Protocol: ${colors.yellow}${result.plan.protocol.name}${colors.reset}`);
249
+ console.log(` Modalities: ${result.plan.protocol.treatmentModalities.join(', ')}`);
250
+ console.log(` Est. Efficacy: ${colors.green}${(result.estimatedEfficacy * 100).toFixed(1)}%${colors.reset}`);
251
+ console.log(` Duration: ${result.plan.treatmentTimeline.length} weeks`);
252
+ console.log(`\n${colors.bold}Timeline${colors.reset}`);
253
+ result.plan.treatmentTimeline.slice(0, 4).forEach((week, i) => {
254
+ console.log(` Week ${i + 1}: ${week.phase} - ${week.activities.join(', ')}`);
255
+ });
256
+ if (result.plan.treatmentTimeline.length > 4) {
257
+ console.log(` ${colors.dim}... and ${result.plan.treatmentTimeline.length - 4} more weeks${colors.reset}`);
107
258
  }
259
+ console.log(`\n${colors.green}✓ Plan generated${colors.reset}`);
108
260
  }
109
- else if (args.length === 0) {
110
- // Interactive mode
111
- console.log('\n🏥 AGI 癌症治疗框架');
112
- console.log('══════════════════════════════════════');
113
- console.log('\n🔧 可用命令:');
114
- console.log(' agi --cancer-treatment 激活癌症治疗框架');
115
- console.log(' agi --analyze-patient --patient=P001 分析患者数据');
116
- console.log(' agi --treatment-plan --patient=P001 设计治疗计划');
117
- console.log(' agi --drug-discovery --target=EGFR 药物靶点发现');
118
- console.log(' agi --clinical-trial 临床试验演示');
119
- console.log(' agi --demo 完整框架演示');
120
- console.log(' agi --help 显示帮助信息');
121
- console.log(' agi --version 显示版本信息');
122
- console.log('\n📚 了解更多:');
123
- console.log(' 查看 README.md 获取完整文档和使用指南');
261
+ catch (error) {
262
+ console.error(`${colors.red}✗ Plan generation failed:${colors.reset}`, error);
263
+ }
264
+ }
265
+ async function discoverTargets(gene, cancerType) {
266
+ console.log(`\n${colors.cyan}Discovering drug targets for ${gene} in ${cancerType} cancer...${colors.reset}\n`);
267
+ try {
268
+ const result = await cancerTreatment.discoverDrugTargets(cancerType, gene);
269
+ console.log(`${colors.bold}Drug Target Discovery${colors.reset}`);
270
+ console.log(`${colors.dim}─────────────────────────────${colors.reset}`);
271
+ console.log(` Cancer Type: ${colors.yellow}${result.cancerType}${colors.reset}`);
272
+ console.log(` Target Gene: ${colors.yellow}${result.targetGene || 'All'}${colors.reset}`);
273
+ console.log(` Targets Found: ${result.discoveredTargets.length}`);
274
+ console.log(`\n${colors.bold}Top Targets${colors.reset}`);
275
+ result.discoveredTargets.slice(0, 5).forEach((target, i) => {
276
+ console.log(` ${i + 1}. ${colors.cyan}${target.gene}${colors.reset} - ${target.evidenceLevel} evidence`);
277
+ console.log(` ${colors.dim}Cancers: ${target.cancerTypes.slice(0, 3).join(', ')}${colors.reset}`);
278
+ });
279
+ console.log(`\n${colors.green}✓ Discovery complete${colors.reset}`);
280
+ }
281
+ catch (error) {
282
+ console.error(`${colors.red}✗ Discovery failed:${colors.reset}`, error);
283
+ }
284
+ }
285
+ async function runDemo() {
286
+ console.log(`\n${colors.cyan}Running framework demo...${colors.reset}\n`);
287
+ try {
288
+ const { demonstrateCancerTreatmentFramework } = await import('../examples/cancerTreatmentDemo.js');
289
+ await demonstrateCancerTreatmentFramework();
290
+ }
291
+ catch (error) {
292
+ console.error(`${colors.red}✗ Demo failed:${colors.reset}`, error);
293
+ }
294
+ }
295
+ async function handleCommand(args) {
296
+ cancerTreatment = new CancerTreatmentCapabilityModule();
297
+ if (args.includes('--analyze-patient')) {
298
+ const patientId = args.find(a => a.startsWith('--patient='))?.split('=')[1] || 'P001';
299
+ await analyzePatient(patientId, args.includes('--genomics'));
300
+ }
301
+ else if (args.includes('--treatment-plan')) {
302
+ const patientId = args.find(a => a.startsWith('--patient='))?.split('=')[1] || 'P001';
303
+ const protocolId = args.find(a => a.startsWith('--protocol='))?.split('=')[1];
304
+ await designTreatmentPlan(patientId, protocolId);
305
+ }
306
+ else if (args.includes('--drug-discovery')) {
307
+ const gene = args.find(a => a.startsWith('--target='))?.split('=')[1] || 'EGFR';
308
+ const cancer = args.find(a => a.startsWith('--cancer='))?.split('=')[1] || 'Lung';
309
+ await discoverTargets(gene, cancer);
310
+ }
311
+ else if (args.includes('--demo')) {
312
+ await runDemo();
124
313
  }
125
314
  else {
126
- console.log('❌ 未知命令。使用 agi --help 查看可用命令。');
315
+ console.log(`${colors.red}Unknown command.${colors.reset} Use cure --help for usage.`);
127
316
  process.exit(1);
128
317
  }
129
318
  }
319
+ function printBanner() {
320
+ console.log(`
321
+ ${colors.cyan}${colors.bold} ╔═══════════════════════════════════════════════════════════╗
322
+ ║ ║
323
+ ║ ██████╗██╗ ██╗██████╗ ███████╗ ║
324
+ ║ ██╔════╝██║ ██║██╔══██╗██╔════╝ ║
325
+ ║ ██║ ██║ ██║██████╔╝█████╗ ║
326
+ ║ ██║ ██║ ██║██╔══██╗██╔══╝ ║
327
+ ║ ╚██████╗╚██████╔╝██║ ██║███████╗ ║
328
+ ║ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ║
329
+ ║ ║
330
+ ║ AI Cancer Treatment Framework ║
331
+ ║ Powered by xAI Grok ${XAI_MODEL} ║
332
+ ║ ║
333
+ ╚═══════════════════════════════════════════════════════════╝${colors.reset}
334
+
335
+ ${colors.dim}v${VERSION}${colors.reset}
336
+ `);
337
+ }
338
+ function printInteractiveHelp() {
339
+ console.log(`
340
+ ${colors.bold}Commands${colors.reset}
341
+ ${colors.dim}─────────────────────────────${colors.reset}
342
+ ${colors.cyan}/analyze${colors.reset} [patient] Analyze patient data
343
+ ${colors.cyan}/plan${colors.reset} [patient] Design treatment plan
344
+ ${colors.cyan}/discover${colors.reset} [gene] Drug target discovery
345
+ ${colors.cyan}/demo${colors.reset} Run framework demo
346
+ ${colors.cyan}/model${colors.reset} Show AI model info
347
+ ${colors.cyan}/clear${colors.reset} Clear conversation
348
+ ${colors.cyan}/help${colors.reset} Show this help
349
+ ${colors.cyan}/exit${colors.reset} Exit
350
+
351
+ ${colors.bold}AI Chat${colors.reset}
352
+ ${colors.dim}─────────────────────────────${colors.reset}
353
+ Just type naturally to chat with the AI oncologist:
354
+
355
+ "What are the treatment options for EGFR+ lung cancer?"
356
+ "Explain pembrolizumab mechanism of action"
357
+ "What biomarkers predict response to immunotherapy?"
358
+ "Compare osimertinib vs erlotinib for EGFR mutations"
359
+ `);
360
+ }
130
361
  function printHelp() {
131
362
  console.log(`
132
- 🏥 AGI 癌症治疗框架 - 命令行工具
363
+ ${colors.bold}Cure - AI Cancer Treatment Framework${colors.reset}
364
+ Powered by xAI ${XAI_MODEL}
365
+
366
+ ${colors.bold}Usage:${colors.reset}
367
+ cure Launch interactive AI chat
368
+ cure [command] Run a specific command
133
369
 
134
- 使用方法:
135
- agi [命令] [选项]
370
+ ${colors.bold}Commands:${colors.reset}
371
+ --analyze-patient Analyze patient data
372
+ --treatment-plan Design treatment plan
373
+ --drug-discovery Drug target discovery
374
+ --demo Run framework demo
375
+ --help, -h Show this help
376
+ --version, -v Show version
136
377
 
137
- 命令:
138
- --cancer-treatment, --medical 激活癌症治疗框架
139
- --analyze-patient 分析患者数据
140
- --treatment-plan 设计个性化治疗计划
141
- --drug-discovery AI驱动的药物靶点发现
142
- --demo 完整框架演示
143
- --help, -h 显示此帮助信息
144
- --version, -v 显示版本信息
378
+ ${colors.bold}Options:${colors.reset}
379
+ --patient=<id> Patient ID (default: P001)
380
+ --protocol=<id> Treatment protocol
381
+ --genomics Include genomic analysis
382
+ --target=<gene> Target gene (default: EGFR)
383
+ --cancer=<type> Cancer type (default: Lung)
145
384
 
146
- 选项:
147
- --patient=<id> 患者ID (默认: P001)
148
- --protocol=<id> 治疗协议ID
149
- --genomics 包含基因组数据分析
150
- --target=<gene> 目标基因 (默认: EGFR)
151
- --cancer=<type> 癌症类型 (默认: Lung)
385
+ ${colors.bold}Environment:${colors.reset}
386
+ XAI_API_KEY xAI API key for AI-powered responses
152
387
 
153
- 示例:
154
- agi --cancer-treatment
155
- agi --analyze-patient --patient=P001 --genomics
156
- agi --treatment-plan --patient=P001 --protocol=nccn-breast-early
157
- agi --drug-discovery --target=EGFR --cancer=Lung
158
- agi --demo
388
+ ${colors.bold}Examples:${colors.reset}
389
+ cure
390
+ cure --analyze-patient --patient=P001 --genomics
391
+ cure --drug-discovery --target=BRAF --cancer=Melanoma
159
392
 
160
- 📞 技术支持: medical-support@agi-cancer-treatment.org
161
- 📚 文档: 查看项目目录中的 README.md
393
+ ${colors.dim}https://npmjs.com/package/@erosolaraijs/cure${colors.reset}
162
394
  `);
163
395
  }
164
- // Run main function
165
396
  main().catch((error) => {
166
- console.error('应用程序错误:', error);
397
+ console.error(`${colors.red}Error:${colors.reset}`, error);
167
398
  process.exit(1);
168
399
  });
169
400
  //# sourceMappingURL=cure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cure.js","sourceRoot":"","sources":["../../src/bin/cure.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAE/F,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,yBAAyB;IACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAChI,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,oBAAoB;IACpB,MAAM,eAAe,GAAG,IAAI,+BAA+B,EAAE,CAAC;IAE9D,kBAAkB;IAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;SACI,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAC1F,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEpD,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;SACI,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAElF,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SACI,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAE1F,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,KAAK,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,CAAC;YAE/D,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE;gBAC1E,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,aAAa,OAAO,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;SACI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,EAAE,mCAAmC,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;YACnG,MAAM,mCAAmC,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;SACI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;SACI,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bb,CAAC,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cure.js","sourceRoot":"","sources":["../../src/bin/cure.ts"],"names":[],"mappings":"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"}