@phantomind/core 0.1.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/dist/adapters/aider.d.ts +12 -0
- package/dist/adapters/aider.d.ts.map +1 -0
- package/dist/adapters/aider.js +24 -0
- package/dist/adapters/aider.js.map +1 -0
- package/dist/adapters/base.d.ts +21 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +83 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude-code.d.ts +12 -0
- package/dist/adapters/claude-code.d.ts.map +1 -0
- package/dist/adapters/claude-code.js +31 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/cline.d.ts +12 -0
- package/dist/adapters/cline.d.ts.map +1 -0
- package/dist/adapters/cline.js +32 -0
- package/dist/adapters/cline.js.map +1 -0
- package/dist/adapters/codex.d.ts +18 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +38 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/continue.d.ts +12 -0
- package/dist/adapters/continue.d.ts.map +1 -0
- package/dist/adapters/continue.js +29 -0
- package/dist/adapters/continue.js.map +1 -0
- package/dist/adapters/copilot.d.ts +12 -0
- package/dist/adapters/copilot.d.ts.map +1 -0
- package/dist/adapters/copilot.js +31 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/cursor.d.ts +12 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +34 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/index.d.ts +32 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +64 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/windsurf.d.ts +12 -0
- package/dist/adapters/windsurf.d.ts.map +1 -0
- package/dist/adapters/windsurf.js +32 -0
- package/dist/adapters/windsurf.js.map +1 -0
- package/dist/adapters/zed.d.ts +12 -0
- package/dist/adapters/zed.d.ts.map +1 -0
- package/dist/adapters/zed.js +27 -0
- package/dist/adapters/zed.js.map +1 -0
- package/dist/agent/decomposer.d.ts +55 -0
- package/dist/agent/decomposer.d.ts.map +1 -0
- package/dist/agent/decomposer.js +172 -0
- package/dist/agent/decomposer.js.map +1 -0
- package/dist/agent/executor.d.ts +33 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +260 -0
- package/dist/agent/executor.js.map +1 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/memory.d.ts +95 -0
- package/dist/agent/memory.d.ts.map +1 -0
- package/dist/agent/memory.js +211 -0
- package/dist/agent/memory.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +54 -0
- package/dist/agent/orchestrator.d.ts.map +1 -0
- package/dist/agent/orchestrator.js +190 -0
- package/dist/agent/orchestrator.js.map +1 -0
- package/dist/agent/queue.d.ts +95 -0
- package/dist/agent/queue.d.ts.map +1 -0
- package/dist/agent/queue.js +231 -0
- package/dist/agent/queue.js.map +1 -0
- package/dist/agent/retry.d.ts +61 -0
- package/dist/agent/retry.d.ts.map +1 -0
- package/dist/agent/retry.js +162 -0
- package/dist/agent/retry.js.map +1 -0
- package/dist/agent/roles.d.ts +35 -0
- package/dist/agent/roles.d.ts.map +1 -0
- package/dist/agent/roles.js +269 -0
- package/dist/agent/roles.js.map +1 -0
- package/dist/cli/agent.d.ts +12 -0
- package/dist/cli/agent.d.ts.map +1 -0
- package/dist/cli/agent.js +85 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/audit.d.ts +11 -0
- package/dist/cli/audit.d.ts.map +1 -0
- package/dist/cli/audit.js +63 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/eval.d.ts +11 -0
- package/dist/cli/eval.d.ts.map +1 -0
- package/dist/cli/eval.js +79 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +13 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +157 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/main.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +153 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/serve.d.ts +11 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +23 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/stats.d.ts +10 -0
- package/dist/cli/stats.d.ts.map +1 -0
- package/dist/cli/stats.js +68 -0
- package/dist/cli/stats.js.map +1 -0
- package/dist/cli/sync.d.ts +11 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +49 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/validate.d.ts +13 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +125 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +25 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +190 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/context/embedder.d.ts +53 -0
- package/dist/context/embedder.d.ts.map +1 -0
- package/dist/context/embedder.js +235 -0
- package/dist/context/embedder.js.map +1 -0
- package/dist/context/engine.d.ts +82 -0
- package/dist/context/engine.d.ts.map +1 -0
- package/dist/context/engine.js +343 -0
- package/dist/context/engine.js.map +1 -0
- package/dist/context/index.d.ts +5 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +5 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/learner.d.ts +44 -0
- package/dist/context/learner.d.ts.map +1 -0
- package/dist/context/learner.js +246 -0
- package/dist/context/learner.js.map +1 -0
- package/dist/context/versioning.d.ts +29 -0
- package/dist/context/versioning.d.ts.map +1 -0
- package/dist/context/versioning.js +81 -0
- package/dist/context/versioning.js.map +1 -0
- package/dist/index.d.ts +169 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +285 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +31 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +334 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/observability/audit.d.ts +61 -0
- package/dist/observability/audit.d.ts.map +1 -0
- package/dist/observability/audit.js +168 -0
- package/dist/observability/audit.js.map +1 -0
- package/dist/observability/cost-tracker.d.ts +71 -0
- package/dist/observability/cost-tracker.d.ts.map +1 -0
- package/dist/observability/cost-tracker.js +206 -0
- package/dist/observability/cost-tracker.js.map +1 -0
- package/dist/observability/dashboard.d.ts +52 -0
- package/dist/observability/dashboard.d.ts.map +1 -0
- package/dist/observability/dashboard.js +134 -0
- package/dist/observability/dashboard.js.map +1 -0
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +4 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/providers/anthropic.d.ts +14 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +99 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +52 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +68 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/deepseek.d.ts +15 -0
- package/dist/providers/deepseek.d.ts.map +1 -0
- package/dist/providers/deepseek.js +99 -0
- package/dist/providers/deepseek.js.map +1 -0
- package/dist/providers/gemini.d.ts +15 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +118 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/groq.d.ts +15 -0
- package/dist/providers/groq.d.ts.map +1 -0
- package/dist/providers/groq.js +101 -0
- package/dist/providers/groq.js.map +1 -0
- package/dist/providers/index.d.ts +11 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +11 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/mistral.d.ts +15 -0
- package/dist/providers/mistral.d.ts.map +1 -0
- package/dist/providers/mistral.js +99 -0
- package/dist/providers/mistral.js.map +1 -0
- package/dist/providers/ollama.d.ts +14 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +122 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +14 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +80 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/openrouter.d.ts +15 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +101 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/router.d.ts +51 -0
- package/dist/providers/router.d.ts.map +1 -0
- package/dist/providers/router.js +198 -0
- package/dist/providers/router.js.map +1 -0
- package/dist/quality/anomaly.d.ts +32 -0
- package/dist/quality/anomaly.d.ts.map +1 -0
- package/dist/quality/anomaly.js +126 -0
- package/dist/quality/anomaly.js.map +1 -0
- package/dist/quality/consistency.d.ts +26 -0
- package/dist/quality/consistency.d.ts.map +1 -0
- package/dist/quality/consistency.js +156 -0
- package/dist/quality/consistency.js.map +1 -0
- package/dist/quality/dual-verifier.d.ts +22 -0
- package/dist/quality/dual-verifier.d.ts.map +1 -0
- package/dist/quality/dual-verifier.js +137 -0
- package/dist/quality/dual-verifier.js.map +1 -0
- package/dist/quality/hallucination-guard.d.ts +57 -0
- package/dist/quality/hallucination-guard.d.ts.map +1 -0
- package/dist/quality/hallucination-guard.js +245 -0
- package/dist/quality/hallucination-guard.js.map +1 -0
- package/dist/quality/index.d.ts +7 -0
- package/dist/quality/index.d.ts.map +1 -0
- package/dist/quality/index.js +7 -0
- package/dist/quality/index.js.map +1 -0
- package/dist/quality/regression.d.ts +44 -0
- package/dist/quality/regression.d.ts.map +1 -0
- package/dist/quality/regression.js +181 -0
- package/dist/quality/regression.js.map +1 -0
- package/dist/quality/secret-scanner.d.ts +36 -0
- package/dist/quality/secret-scanner.d.ts.map +1 -0
- package/dist/quality/secret-scanner.js +187 -0
- package/dist/quality/secret-scanner.js.map +1 -0
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/registry.d.ts +72 -0
- package/dist/schemas/registry.d.ts.map +1 -0
- package/dist/schemas/registry.js +483 -0
- package/dist/schemas/registry.js.map +1 -0
- package/dist/templates/engine.d.ts +70 -0
- package/dist/templates/engine.d.ts.map +1 -0
- package/dist/templates/engine.js +71 -0
- package/dist/templates/engine.js.map +1 -0
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +2 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/types.d.ts +912 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +75 -0
- package/dist/types.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — Analytics Dashboard
|
|
3
|
+
* Terminal-based usage analytics and metrics visualization.
|
|
4
|
+
*/
|
|
5
|
+
export class AnalyticsDashboard {
|
|
6
|
+
costTracker;
|
|
7
|
+
auditTrail;
|
|
8
|
+
constructor(costTracker, auditTrail) {
|
|
9
|
+
this.costTracker = costTracker;
|
|
10
|
+
this.auditTrail = auditTrail;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get comprehensive metrics
|
|
14
|
+
*/
|
|
15
|
+
getMetrics() {
|
|
16
|
+
const costReport = this.costTracker.getReport('today');
|
|
17
|
+
const recentAudit = this.auditTrail.getRecent(500);
|
|
18
|
+
const providerRequests = recentAudit.filter(e => e.action === 'provider:request');
|
|
19
|
+
const qualityEvents = recentAudit.filter(e => e.action.startsWith('quality:'));
|
|
20
|
+
const agentEvents = recentAudit.filter(e => e.action.startsWith('agent:'));
|
|
21
|
+
const successfulRequests = providerRequests.filter(e => e.details?.success === true);
|
|
22
|
+
const responseTimes = providerRequests
|
|
23
|
+
.map(e => e.details?.duration)
|
|
24
|
+
.filter((d) => typeof d === 'number');
|
|
25
|
+
return {
|
|
26
|
+
overview: {
|
|
27
|
+
totalRequests: costReport.requestCount ?? 0,
|
|
28
|
+
totalCost: costReport.totalCost,
|
|
29
|
+
avgCostPerRequest: (costReport.requestCount ?? 0) > 0
|
|
30
|
+
? costReport.totalCost / costReport.requestCount
|
|
31
|
+
: 0,
|
|
32
|
+
totalTokens: costReport.totalTokens?.totalTokens ?? 0,
|
|
33
|
+
activeProviders: Object.keys(costReport.byProvider ?? {}),
|
|
34
|
+
},
|
|
35
|
+
performance: {
|
|
36
|
+
avgResponseTime: responseTimes.length > 0
|
|
37
|
+
? responseTimes.reduce((a, b) => a + b, 0) / responseTimes.length
|
|
38
|
+
: 0,
|
|
39
|
+
successRate: providerRequests.length > 0
|
|
40
|
+
? successfulRequests.length / providerRequests.length
|
|
41
|
+
: 1,
|
|
42
|
+
errorCount: providerRequests.length - successfulRequests.length,
|
|
43
|
+
},
|
|
44
|
+
quality: {
|
|
45
|
+
secretsDetected: qualityEvents.filter(e => e.action === 'quality:secret-scan').length,
|
|
46
|
+
hallucinationsDetected: qualityEvents.filter(e => e.action === 'quality:hallucination').length,
|
|
47
|
+
consistencyIssues: qualityEvents.filter(e => e.action === 'quality:consistency').length,
|
|
48
|
+
},
|
|
49
|
+
agents: {
|
|
50
|
+
tasksCompleted: agentEvents.filter(e => e.action === 'agent:complete').length,
|
|
51
|
+
tasksFailed: agentEvents.filter(e => e.action === 'agent:error').length,
|
|
52
|
+
avgStepsPerTask: 0, // Computed separately if needed
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Format metrics as terminal-friendly text
|
|
58
|
+
*/
|
|
59
|
+
formatTerminal() {
|
|
60
|
+
const m = this.getMetrics();
|
|
61
|
+
const width = 52;
|
|
62
|
+
const hr = '─'.repeat(width);
|
|
63
|
+
const lines = [
|
|
64
|
+
`┌${hr}┐`,
|
|
65
|
+
`│${' PhantomMindAI Dashboard'.padEnd(width)}│`,
|
|
66
|
+
`├${hr}┤`,
|
|
67
|
+
`│${' OVERVIEW'.padEnd(width)}│`,
|
|
68
|
+
`│ Requests: ${String(m.overview.totalRequests).padEnd(width - 14)}│`,
|
|
69
|
+
`│ Cost: $${m.overview.totalCost.toFixed(4).padEnd(width - 15)}│`,
|
|
70
|
+
`│ Tokens: ${m.overview.totalTokens.toLocaleString().padEnd(width - 14)}│`,
|
|
71
|
+
`│ Providers: ${m.overview.activeProviders.join(', ').padEnd(width - 15) || 'none'.padEnd(width - 15)}│`,
|
|
72
|
+
`├${hr}┤`,
|
|
73
|
+
`│${' PERFORMANCE'.padEnd(width)}│`,
|
|
74
|
+
`│ Avg Response: ${(m.performance.avgResponseTime / 1000).toFixed(2).padEnd(width - 18)}s│`,
|
|
75
|
+
`│ Success Rate: ${(m.performance.successRate * 100).toFixed(1).padEnd(width - 18)}%│`,
|
|
76
|
+
`│ Errors: ${String(m.performance.errorCount).padEnd(width - 18)}│`,
|
|
77
|
+
`├${hr}┤`,
|
|
78
|
+
`│${' QUALITY'.padEnd(width)}│`,
|
|
79
|
+
`│ Secrets Found: ${String(m.quality.secretsDetected).padEnd(width - 23)}│`,
|
|
80
|
+
`│ Hallucinations: ${String(m.quality.hallucinationsDetected).padEnd(width - 23)}│`,
|
|
81
|
+
`│ Consistency Issues: ${String(m.quality.consistencyIssues).padEnd(width - 24)}│`,
|
|
82
|
+
`├${hr}┤`,
|
|
83
|
+
`│${' AGENTS'.padEnd(width)}│`,
|
|
84
|
+
`│ Completed: ${String(m.agents.tasksCompleted).padEnd(width - 15)}│`,
|
|
85
|
+
`│ Failed: ${String(m.agents.tasksFailed).padEnd(width - 15)}│`,
|
|
86
|
+
`└${hr}┘`,
|
|
87
|
+
];
|
|
88
|
+
return lines.join('\n');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Format as markdown
|
|
92
|
+
*/
|
|
93
|
+
formatMarkdown() {
|
|
94
|
+
const m = this.getMetrics();
|
|
95
|
+
return `# PhantomMindAI Analytics Dashboard
|
|
96
|
+
|
|
97
|
+
## Overview
|
|
98
|
+
| Metric | Value |
|
|
99
|
+
|--------|-------|
|
|
100
|
+
| Total Requests | ${m.overview.totalRequests} |
|
|
101
|
+
| Total Cost | $${m.overview.totalCost.toFixed(4)} |
|
|
102
|
+
| Avg Cost/Request | $${m.overview.avgCostPerRequest.toFixed(6)} |
|
|
103
|
+
| Total Tokens | ${m.overview.totalTokens.toLocaleString()} |
|
|
104
|
+
| Active Providers | ${m.overview.activeProviders.join(', ') || 'none'} |
|
|
105
|
+
|
|
106
|
+
## Performance
|
|
107
|
+
| Metric | Value |
|
|
108
|
+
|--------|-------|
|
|
109
|
+
| Avg Response Time | ${(m.performance.avgResponseTime / 1000).toFixed(2)}s |
|
|
110
|
+
| Success Rate | ${(m.performance.successRate * 100).toFixed(1)}% |
|
|
111
|
+
| Errors | ${m.performance.errorCount} |
|
|
112
|
+
|
|
113
|
+
## Quality
|
|
114
|
+
| Metric | Value |
|
|
115
|
+
|--------|-------|
|
|
116
|
+
| Secrets Detected | ${m.quality.secretsDetected} |
|
|
117
|
+
| Hallucinations Detected | ${m.quality.hallucinationsDetected} |
|
|
118
|
+
| Consistency Issues | ${m.quality.consistencyIssues} |
|
|
119
|
+
|
|
120
|
+
## Agent Activity
|
|
121
|
+
| Metric | Value |
|
|
122
|
+
|--------|-------|
|
|
123
|
+
| Tasks Completed | ${m.agents.tasksCompleted} |
|
|
124
|
+
| Tasks Failed | ${m.agents.tasksFailed} |
|
|
125
|
+
`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Export as JSON
|
|
129
|
+
*/
|
|
130
|
+
toJSON() {
|
|
131
|
+
return this.getMetrics();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/observability/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAkC,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAyB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — Anthropic Provider (Claude)
|
|
3
|
+
*/
|
|
4
|
+
import { BaseProvider } from './base.js';
|
|
5
|
+
import type { CompletionRequest, CompletionResponse, StreamChunk } from '../types.js';
|
|
6
|
+
export declare class AnthropicProvider extends BaseProvider {
|
|
7
|
+
private client;
|
|
8
|
+
private getClient;
|
|
9
|
+
complete(request: CompletionRequest): Promise<CompletionResponse>;
|
|
10
|
+
stream(request: CompletionRequest): AsyncGenerator<StreamChunk>;
|
|
11
|
+
isAvailable(): Promise<boolean>;
|
|
12
|
+
listModels(): Promise<string[]>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,MAAM,CAAM;YAEN,SAAS;IAWjB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0ChE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IAuChE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAOtC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — Anthropic Provider (Claude)
|
|
3
|
+
*/
|
|
4
|
+
import { BaseProvider } from './base.js';
|
|
5
|
+
export class AnthropicProvider extends BaseProvider {
|
|
6
|
+
client;
|
|
7
|
+
async getClient() {
|
|
8
|
+
if (!this.client) {
|
|
9
|
+
const { default: Anthropic } = await import('@anthropic-ai/sdk');
|
|
10
|
+
this.client = new Anthropic({
|
|
11
|
+
apiKey: this.config.apiKey || process.env.ANTHROPIC_API_KEY,
|
|
12
|
+
...(this.config.baseUrl && { baseURL: this.config.baseUrl }),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return this.client;
|
|
16
|
+
}
|
|
17
|
+
async complete(request) {
|
|
18
|
+
const client = await this.getClient();
|
|
19
|
+
const messages = this.buildMessages(request);
|
|
20
|
+
const start = Date.now();
|
|
21
|
+
const systemMessage = messages.find(m => m.role === 'system');
|
|
22
|
+
const chatMessages = messages
|
|
23
|
+
.filter(m => m.role !== 'system')
|
|
24
|
+
.map(m => ({ role: m.role, content: m.content }));
|
|
25
|
+
const response = await client.messages.create({
|
|
26
|
+
model: this.config.model,
|
|
27
|
+
max_tokens: request.maxTokens ?? this.config.maxTokens ?? 8096,
|
|
28
|
+
temperature: request.temperature ?? this.config.temperature ?? 0.2,
|
|
29
|
+
...(systemMessage && { system: systemMessage.content }),
|
|
30
|
+
messages: chatMessages,
|
|
31
|
+
});
|
|
32
|
+
const content = response.content
|
|
33
|
+
.filter((block) => block.type === 'text')
|
|
34
|
+
.map((block) => block.text)
|
|
35
|
+
.join('');
|
|
36
|
+
const usage = {
|
|
37
|
+
inputTokens: response.usage.input_tokens,
|
|
38
|
+
outputTokens: response.usage.output_tokens,
|
|
39
|
+
totalTokens: response.usage.input_tokens + response.usage.output_tokens,
|
|
40
|
+
estimatedCost: this.estimateCost({
|
|
41
|
+
inputTokens: response.usage.input_tokens,
|
|
42
|
+
outputTokens: response.usage.output_tokens,
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
content,
|
|
47
|
+
model: this.config.model,
|
|
48
|
+
provider: 'anthropic',
|
|
49
|
+
usage,
|
|
50
|
+
duration: Date.now() - start,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async *stream(request) {
|
|
54
|
+
const client = await this.getClient();
|
|
55
|
+
const messages = this.buildMessages(request);
|
|
56
|
+
const systemMessage = messages.find(m => m.role === 'system');
|
|
57
|
+
const chatMessages = messages
|
|
58
|
+
.filter(m => m.role !== 'system')
|
|
59
|
+
.map(m => ({ role: m.role, content: m.content }));
|
|
60
|
+
const stream = await client.messages.stream({
|
|
61
|
+
model: this.config.model,
|
|
62
|
+
max_tokens: request.maxTokens ?? this.config.maxTokens ?? 8096,
|
|
63
|
+
temperature: request.temperature ?? this.config.temperature ?? 0.2,
|
|
64
|
+
...(systemMessage && { system: systemMessage.content }),
|
|
65
|
+
messages: chatMessages,
|
|
66
|
+
});
|
|
67
|
+
for await (const event of stream) {
|
|
68
|
+
if (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
|
|
69
|
+
yield { content: event.delta.text, done: false };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const finalMessage = await stream.finalMessage();
|
|
73
|
+
yield {
|
|
74
|
+
content: '',
|
|
75
|
+
done: true,
|
|
76
|
+
usage: {
|
|
77
|
+
inputTokens: finalMessage.usage.input_tokens,
|
|
78
|
+
outputTokens: finalMessage.usage.output_tokens,
|
|
79
|
+
totalTokens: finalMessage.usage.input_tokens + finalMessage.usage.output_tokens,
|
|
80
|
+
estimatedCost: this.estimateCost({
|
|
81
|
+
inputTokens: finalMessage.usage.input_tokens,
|
|
82
|
+
outputTokens: finalMessage.usage.output_tokens,
|
|
83
|
+
}),
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async isAvailable() {
|
|
88
|
+
const apiKey = this.config.apiKey || process.env.ANTHROPIC_API_KEY;
|
|
89
|
+
return !!apiKey;
|
|
90
|
+
}
|
|
91
|
+
async listModels() {
|
|
92
|
+
return [
|
|
93
|
+
'claude-opus-4-20250514',
|
|
94
|
+
'claude-sonnet-4-20250514',
|
|
95
|
+
'claude-3-5-haiku-20241022',
|
|
96
|
+
];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — Abstract Provider Base
|
|
3
|
+
*/
|
|
4
|
+
import type { ProviderName, ProviderConfig, CompletionRequest, CompletionResponse, ChatMessage, StreamChunk } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Pricing per 1M tokens for cost estimation
|
|
7
|
+
*/
|
|
8
|
+
export declare const PROVIDER_PRICING: Record<string, {
|
|
9
|
+
input: number;
|
|
10
|
+
output: number;
|
|
11
|
+
}>;
|
|
12
|
+
export declare abstract class BaseProvider {
|
|
13
|
+
readonly providerName: ProviderName;
|
|
14
|
+
protected config: ProviderConfig;
|
|
15
|
+
constructor(config: ProviderConfig);
|
|
16
|
+
/**
|
|
17
|
+
* Send a completion request to the provider
|
|
18
|
+
*/
|
|
19
|
+
abstract complete(request: CompletionRequest): Promise<CompletionResponse>;
|
|
20
|
+
/**
|
|
21
|
+
* Stream a completion from the provider
|
|
22
|
+
*/
|
|
23
|
+
abstract stream(request: CompletionRequest): AsyncGenerator<StreamChunk>;
|
|
24
|
+
/**
|
|
25
|
+
* Check if provider is available (API key set, endpoint reachable)
|
|
26
|
+
*/
|
|
27
|
+
abstract isAvailable(): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Get list of available models from this provider
|
|
30
|
+
*/
|
|
31
|
+
abstract listModels(): Promise<string[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Build chat messages from a CompletionRequest
|
|
34
|
+
*/
|
|
35
|
+
protected buildMessages(request: CompletionRequest): ChatMessage[];
|
|
36
|
+
/**
|
|
37
|
+
* Estimate cost based on token usage
|
|
38
|
+
*/
|
|
39
|
+
protected estimateCost(usage: {
|
|
40
|
+
inputTokens: number;
|
|
41
|
+
outputTokens: number;
|
|
42
|
+
}): number;
|
|
43
|
+
/**
|
|
44
|
+
* Get model configuration
|
|
45
|
+
*/
|
|
46
|
+
getModel(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Get provider configuration (redacted)
|
|
49
|
+
*/
|
|
50
|
+
getConfig(): Omit<ProviderConfig, 'apiKey'>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EAEX,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAe9E,CAAC;AAEF,8BAAsB,YAAY;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,EAAE,cAAc;IAKlC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAE1E;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IAExE;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAExC;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,EAAE;IAkBlE;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAQpF;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;CAI5C"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — Abstract Provider Base
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Pricing per 1M tokens for cost estimation
|
|
6
|
+
*/
|
|
7
|
+
export const PROVIDER_PRICING = {
|
|
8
|
+
'claude-sonnet-4-20250514': { input: 3.0, output: 15.0 },
|
|
9
|
+
'claude-3-5-haiku-20241022': { input: 0.8, output: 4.0 },
|
|
10
|
+
'claude-opus-4-20250514': { input: 15.0, output: 75.0 },
|
|
11
|
+
'gpt-4o': { input: 2.5, output: 10.0 },
|
|
12
|
+
'gpt-4o-mini': { input: 0.15, output: 0.6 },
|
|
13
|
+
'o1': { input: 15.0, output: 60.0 },
|
|
14
|
+
'o3': { input: 10.0, output: 40.0 },
|
|
15
|
+
'gemini-1.5-pro': { input: 1.25, output: 5.0 },
|
|
16
|
+
'gemini-2.0-flash': { input: 0.1, output: 0.4 },
|
|
17
|
+
'llama-3.3-70b-versatile': { input: 0.59, output: 0.79 },
|
|
18
|
+
'mixtral-8x7b-32768': { input: 0.24, output: 0.24 },
|
|
19
|
+
'mistral-large-latest': { input: 2.0, output: 6.0 },
|
|
20
|
+
'codestral-latest': { input: 0.3, output: 0.9 },
|
|
21
|
+
'deepseek-coder': { input: 0.14, output: 0.28 },
|
|
22
|
+
};
|
|
23
|
+
export class BaseProvider {
|
|
24
|
+
providerName;
|
|
25
|
+
config;
|
|
26
|
+
constructor(config) {
|
|
27
|
+
this.providerName = config.name;
|
|
28
|
+
this.config = config;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build chat messages from a CompletionRequest
|
|
32
|
+
*/
|
|
33
|
+
buildMessages(request) {
|
|
34
|
+
const messages = [];
|
|
35
|
+
if (request.systemPrompt) {
|
|
36
|
+
messages.push({ role: 'system', content: request.systemPrompt });
|
|
37
|
+
}
|
|
38
|
+
if (request.messages) {
|
|
39
|
+
messages.push(...request.messages);
|
|
40
|
+
}
|
|
41
|
+
if (request.prompt) {
|
|
42
|
+
messages.push({ role: 'user', content: request.prompt });
|
|
43
|
+
}
|
|
44
|
+
return messages;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Estimate cost based on token usage
|
|
48
|
+
*/
|
|
49
|
+
estimateCost(usage) {
|
|
50
|
+
const pricing = PROVIDER_PRICING[this.config.model] ?? { input: 1.0, output: 2.0 };
|
|
51
|
+
return ((usage.inputTokens / 1_000_000) * pricing.input +
|
|
52
|
+
(usage.outputTokens / 1_000_000) * pricing.output);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get model configuration
|
|
56
|
+
*/
|
|
57
|
+
getModel() {
|
|
58
|
+
return this.config.model;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get provider configuration (redacted)
|
|
62
|
+
*/
|
|
63
|
+
getConfig() {
|
|
64
|
+
const { apiKey: _, ...rest } = this.config;
|
|
65
|
+
return rest;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — DeepSeek Provider
|
|
3
|
+
*/
|
|
4
|
+
import { BaseProvider } from './base.js';
|
|
5
|
+
import type { CompletionRequest, CompletionResponse, StreamChunk } from '../types.js';
|
|
6
|
+
export declare class DeepSeekProvider extends BaseProvider {
|
|
7
|
+
private baseUrl;
|
|
8
|
+
private apiKey;
|
|
9
|
+
constructor(config: any);
|
|
10
|
+
complete(request: CompletionRequest): Promise<CompletionResponse>;
|
|
11
|
+
stream(request: CompletionRequest): AsyncGenerator<StreamChunk>;
|
|
12
|
+
isAvailable(): Promise<boolean>;
|
|
13
|
+
listModels(): Promise<string[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=deepseek.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.d.ts","sourceRoot":"","sources":["../../src/providers/deepseek.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtF,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,GAAG;IAMjB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyChE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IA6ChE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGtC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — DeepSeek Provider
|
|
3
|
+
*/
|
|
4
|
+
import { BaseProvider } from './base.js';
|
|
5
|
+
export class DeepSeekProvider extends BaseProvider {
|
|
6
|
+
baseUrl;
|
|
7
|
+
apiKey;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
super(config);
|
|
10
|
+
this.apiKey = config.apiKey || process.env.DEEPSEEK_API_KEY || '';
|
|
11
|
+
this.baseUrl = config.baseUrl || 'https://api.deepseek.com/v1';
|
|
12
|
+
}
|
|
13
|
+
async complete(request) {
|
|
14
|
+
const messages = this.buildMessages(request);
|
|
15
|
+
const start = Date.now();
|
|
16
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
17
|
+
method: 'POST',
|
|
18
|
+
headers: {
|
|
19
|
+
'Content-Type': 'application/json',
|
|
20
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
21
|
+
},
|
|
22
|
+
body: JSON.stringify({
|
|
23
|
+
model: this.config.model,
|
|
24
|
+
messages: messages.map(m => ({ role: m.role, content: m.content })),
|
|
25
|
+
max_tokens: request.maxTokens ?? this.config.maxTokens ?? 8096,
|
|
26
|
+
temperature: request.temperature ?? this.config.temperature ?? 0.2,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
throw new Error(`DeepSeek API error: ${response.status} ${await response.text()}`);
|
|
31
|
+
}
|
|
32
|
+
const data = await response.json();
|
|
33
|
+
const content = data.choices?.[0]?.message?.content ?? '';
|
|
34
|
+
const inputTokens = data.usage?.prompt_tokens ?? 0;
|
|
35
|
+
const outputTokens = data.usage?.completion_tokens ?? 0;
|
|
36
|
+
return {
|
|
37
|
+
content,
|
|
38
|
+
model: this.config.model,
|
|
39
|
+
provider: 'deepseek',
|
|
40
|
+
usage: {
|
|
41
|
+
inputTokens,
|
|
42
|
+
outputTokens,
|
|
43
|
+
totalTokens: inputTokens + outputTokens,
|
|
44
|
+
estimatedCost: this.estimateCost({ inputTokens, outputTokens }),
|
|
45
|
+
},
|
|
46
|
+
duration: Date.now() - start,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async *stream(request) {
|
|
50
|
+
const messages = this.buildMessages(request);
|
|
51
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
52
|
+
method: 'POST',
|
|
53
|
+
headers: {
|
|
54
|
+
'Content-Type': 'application/json',
|
|
55
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
56
|
+
},
|
|
57
|
+
body: JSON.stringify({
|
|
58
|
+
model: this.config.model,
|
|
59
|
+
messages: messages.map(m => ({ role: m.role, content: m.content })),
|
|
60
|
+
max_tokens: request.maxTokens ?? this.config.maxTokens ?? 8096,
|
|
61
|
+
temperature: request.temperature ?? this.config.temperature ?? 0.2,
|
|
62
|
+
stream: true,
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
if (!response.ok || !response.body) {
|
|
66
|
+
throw new Error(`DeepSeek stream error: ${response.status}`);
|
|
67
|
+
}
|
|
68
|
+
const reader = response.body.getReader();
|
|
69
|
+
const decoder = new TextDecoder();
|
|
70
|
+
let buffer = '';
|
|
71
|
+
while (true) {
|
|
72
|
+
const { done, value } = await reader.read();
|
|
73
|
+
if (done)
|
|
74
|
+
break;
|
|
75
|
+
buffer += decoder.decode(value, { stream: true });
|
|
76
|
+
const lines = buffer.split('\n');
|
|
77
|
+
buffer = lines.pop() ?? '';
|
|
78
|
+
for (const line of lines) {
|
|
79
|
+
if (line.startsWith('data: ') && line !== 'data: [DONE]') {
|
|
80
|
+
try {
|
|
81
|
+
const data = JSON.parse(line.slice(6));
|
|
82
|
+
const text = data.choices?.[0]?.delta?.content ?? '';
|
|
83
|
+
if (text)
|
|
84
|
+
yield { content: text, done: false };
|
|
85
|
+
}
|
|
86
|
+
catch { /* skip */ }
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
yield { content: '', done: true };
|
|
91
|
+
}
|
|
92
|
+
async isAvailable() {
|
|
93
|
+
return !!(this.config.apiKey || process.env.DEEPSEEK_API_KEY);
|
|
94
|
+
}
|
|
95
|
+
async listModels() {
|
|
96
|
+
return ['deepseek-coder', 'deepseek-chat'];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=deepseek.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.js","sourceRoot":"","sources":["../../src/providers/deepseek.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhantomMindAI — Gemini Provider (Google)
|
|
3
|
+
*/
|
|
4
|
+
import { BaseProvider } from './base.js';
|
|
5
|
+
import type { CompletionRequest, CompletionResponse, StreamChunk } from '../types.js';
|
|
6
|
+
export declare class GeminiProvider extends BaseProvider {
|
|
7
|
+
private baseUrl;
|
|
8
|
+
private apiKey;
|
|
9
|
+
constructor(config: any);
|
|
10
|
+
complete(request: CompletionRequest): Promise<CompletionResponse>;
|
|
11
|
+
stream(request: CompletionRequest): AsyncGenerator<StreamChunk>;
|
|
12
|
+
isAvailable(): Promise<boolean>;
|
|
13
|
+
listModels(): Promise<string[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,GAAG;IAMjB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmDhE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IA2DhE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGtC"}
|