@claudemax/cli 1.0.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/LICENSE +21 -0
- package/README.md +183 -0
- package/dist/commands/ask.d.ts +7 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +70 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/chat.d.ts +7 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +152 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +155 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/history.d.ts +7 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +158 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/usage.d.ts +7 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +37 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +43 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +136 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/config-manager.d.ts +45 -0
- package/dist/lib/config-manager.d.ts.map +1 -0
- package/dist/lib/config-manager.js +146 -0
- package/dist/lib/config-manager.js.map +1 -0
- package/dist/lib/formatter.d.ts +42 -0
- package/dist/lib/formatter.d.ts.map +1 -0
- package/dist/lib/formatter.js +158 -0
- package/dist/lib/formatter.js.map +1 -0
- package/dist/lib/history-manager.d.ts +45 -0
- package/dist/lib/history-manager.d.ts.map +1 -0
- package/dist/lib/history-manager.js +163 -0
- package/dist/lib/history-manager.js.map +1 -0
- package/dist/lib/model-aliases.d.ts +22 -0
- package/dist/lib/model-aliases.d.ts.map +1 -0
- package/dist/lib/model-aliases.js +53 -0
- package/dist/lib/model-aliases.js.map +1 -0
- package/dist/lib/stream-handler.d.ts +37 -0
- package/dist/lib/stream-handler.d.ts.map +1 -0
- package/dist/lib/stream-handler.js +104 -0
- package/dist/lib/stream-handler.js.map +1 -0
- package/dist/types/index.d.ts +122 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Stream handler for Server-Sent Events (SSE)
|
|
4
|
+
* Parses SSE data from ClaudeAPI.Dev streaming responses
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.parseSSEStream = parseSSEStream;
|
|
8
|
+
exports.extractTextFromStream = extractTextFromStream;
|
|
9
|
+
exports.collectUsageFromStream = collectUsageFromStream;
|
|
10
|
+
exports.processStream = processStream;
|
|
11
|
+
/**
|
|
12
|
+
* Parse SSE stream from ReadableStream
|
|
13
|
+
* @param body - Response body ReadableStream
|
|
14
|
+
* @yields Parsed stream events
|
|
15
|
+
*/
|
|
16
|
+
async function* parseSSEStream(body) {
|
|
17
|
+
const reader = body.getReader();
|
|
18
|
+
const decoder = new TextDecoder();
|
|
19
|
+
let buffer = '';
|
|
20
|
+
try {
|
|
21
|
+
while (true) {
|
|
22
|
+
const { done, value } = await reader.read();
|
|
23
|
+
if (done)
|
|
24
|
+
break;
|
|
25
|
+
buffer += decoder.decode(value, { stream: true });
|
|
26
|
+
const lines = buffer.split('\n');
|
|
27
|
+
buffer = lines.pop() || '';
|
|
28
|
+
for (const line of lines) {
|
|
29
|
+
if (line.startsWith('data: ')) {
|
|
30
|
+
const data = line.slice(6).trim();
|
|
31
|
+
if (data === '[DONE]') {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const event = JSON.parse(data);
|
|
36
|
+
yield event;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
// Ignore parse errors (malformed events)
|
|
40
|
+
console.error('Failed to parse SSE event:', data);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
reader.releaseLock();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Extract text content from stream events
|
|
52
|
+
* @param events - Async generator of stream events
|
|
53
|
+
* @yields Text delta strings
|
|
54
|
+
*/
|
|
55
|
+
async function* extractTextFromStream(events) {
|
|
56
|
+
for await (const event of events) {
|
|
57
|
+
if (event.type === 'content_block_delta' && event.delta?.text) {
|
|
58
|
+
yield event.delta.text;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Collect usage information from stream events
|
|
64
|
+
* @param events - Async generator of stream events
|
|
65
|
+
* @returns Usage stats (input/output tokens)
|
|
66
|
+
*/
|
|
67
|
+
async function collectUsageFromStream(events) {
|
|
68
|
+
let inputTokens = 0;
|
|
69
|
+
let outputTokens = 0;
|
|
70
|
+
for await (const event of events) {
|
|
71
|
+
if (event.type === 'message_start' && event.message?.usage) {
|
|
72
|
+
inputTokens = event.message.usage.input_tokens;
|
|
73
|
+
}
|
|
74
|
+
else if (event.type === 'message_delta' && event.usage) {
|
|
75
|
+
outputTokens = event.usage.output_tokens;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return { inputTokens, outputTokens };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Process stream with callbacks
|
|
82
|
+
* @param events - Async generator of stream events
|
|
83
|
+
* @param onText - Callback for text deltas
|
|
84
|
+
* @param onUsage - Callback for usage stats
|
|
85
|
+
*/
|
|
86
|
+
async function processStream(events, onText, onUsage) {
|
|
87
|
+
let inputTokens = 0;
|
|
88
|
+
let outputTokens = 0;
|
|
89
|
+
for await (const event of events) {
|
|
90
|
+
if (event.type === 'content_block_delta' && event.delta?.text) {
|
|
91
|
+
onText(event.delta.text);
|
|
92
|
+
}
|
|
93
|
+
else if (event.type === 'message_start' && event.message?.usage) {
|
|
94
|
+
inputTokens = event.message.usage.input_tokens;
|
|
95
|
+
}
|
|
96
|
+
else if (event.type === 'message_delta' && event.usage) {
|
|
97
|
+
outputTokens = event.usage.output_tokens;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (onUsage) {
|
|
101
|
+
onUsage({ inputTokens, outputTokens });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=stream-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-handler.js","sourceRoot":"","sources":["../../src/lib/stream-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript type definitions for ClaudeAPI CLI
|
|
3
|
+
*/
|
|
4
|
+
export interface Config {
|
|
5
|
+
apiKey: string;
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
defaultModel: string;
|
|
8
|
+
maxTokens: number;
|
|
9
|
+
temperature: number;
|
|
10
|
+
}
|
|
11
|
+
export interface PartialConfig {
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
baseUrl?: string;
|
|
14
|
+
defaultModel?: string;
|
|
15
|
+
maxTokens?: number;
|
|
16
|
+
temperature?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface MessageRequest {
|
|
19
|
+
model: string;
|
|
20
|
+
messages: Message[];
|
|
21
|
+
max_tokens: number;
|
|
22
|
+
system?: string;
|
|
23
|
+
temperature?: number;
|
|
24
|
+
stream?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface Message {
|
|
27
|
+
role: 'user' | 'assistant';
|
|
28
|
+
content: string;
|
|
29
|
+
}
|
|
30
|
+
export interface MessageResponse {
|
|
31
|
+
id: string;
|
|
32
|
+
type: 'message';
|
|
33
|
+
role: 'assistant';
|
|
34
|
+
content: ContentBlock[];
|
|
35
|
+
model: string;
|
|
36
|
+
stop_reason: string | null;
|
|
37
|
+
usage: Usage;
|
|
38
|
+
}
|
|
39
|
+
export interface ContentBlock {
|
|
40
|
+
type: 'text';
|
|
41
|
+
text: string;
|
|
42
|
+
}
|
|
43
|
+
export interface Usage {
|
|
44
|
+
input_tokens: number;
|
|
45
|
+
output_tokens: number;
|
|
46
|
+
}
|
|
47
|
+
export interface StreamEvent {
|
|
48
|
+
type: string;
|
|
49
|
+
[key: string]: any;
|
|
50
|
+
}
|
|
51
|
+
export interface StreamDelta {
|
|
52
|
+
type: 'content_block_delta';
|
|
53
|
+
index: number;
|
|
54
|
+
delta: {
|
|
55
|
+
type: 'text_delta';
|
|
56
|
+
text: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export interface StreamMessageStart {
|
|
60
|
+
type: 'message_start';
|
|
61
|
+
message: {
|
|
62
|
+
id: string;
|
|
63
|
+
type: 'message';
|
|
64
|
+
role: 'assistant';
|
|
65
|
+
content: [];
|
|
66
|
+
model: string;
|
|
67
|
+
stop_reason: null;
|
|
68
|
+
usage: {
|
|
69
|
+
input_tokens: number;
|
|
70
|
+
output_tokens: number;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export interface StreamMessageDelta {
|
|
75
|
+
type: 'message_delta';
|
|
76
|
+
delta: {
|
|
77
|
+
stop_reason: string;
|
|
78
|
+
stop_sequence: string | null;
|
|
79
|
+
};
|
|
80
|
+
usage: {
|
|
81
|
+
output_tokens: number;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export interface UserStats {
|
|
85
|
+
user: {
|
|
86
|
+
id: string;
|
|
87
|
+
email: string;
|
|
88
|
+
name: string | null;
|
|
89
|
+
balance: number;
|
|
90
|
+
status: string;
|
|
91
|
+
tier: string;
|
|
92
|
+
};
|
|
93
|
+
usage: {
|
|
94
|
+
requests: {
|
|
95
|
+
today: number;
|
|
96
|
+
this_month: number;
|
|
97
|
+
};
|
|
98
|
+
tokens: {
|
|
99
|
+
today: number;
|
|
100
|
+
this_month: number;
|
|
101
|
+
};
|
|
102
|
+
cost: {
|
|
103
|
+
today: number;
|
|
104
|
+
this_month: number;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
rate_limits: {
|
|
108
|
+
requests_per_minute: number;
|
|
109
|
+
requests_per_hour: number;
|
|
110
|
+
requests_per_day: number;
|
|
111
|
+
concurrent_requests: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export interface APIError {
|
|
115
|
+
error: {
|
|
116
|
+
type: string;
|
|
117
|
+
message: string;
|
|
118
|
+
details?: any;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export type ModelName = 'opus' | 'sonnet' | 'haiku' | string;
|
|
122
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@claudemax/cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Official CLI tool for ClaudeAPI.Dev - interact with Claude AI from your terminal. 80% cheaper than Anthropic's official API with Vietnamese payment support.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"claudemax": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/**/*",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"dev": "tsx src/index.ts",
|
|
18
|
+
"watch": "tsc --watch",
|
|
19
|
+
"prepublishOnly": "npm run build",
|
|
20
|
+
"test": "echo \"No tests yet\" && exit 0",
|
|
21
|
+
"postbuild": "chmod +x dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"claude",
|
|
25
|
+
"cli",
|
|
26
|
+
"ai",
|
|
27
|
+
"anthropic",
|
|
28
|
+
"chatbot",
|
|
29
|
+
"llm",
|
|
30
|
+
"terminal",
|
|
31
|
+
"claude-api",
|
|
32
|
+
"vietnamese",
|
|
33
|
+
"vietnam",
|
|
34
|
+
"vietqr",
|
|
35
|
+
"streaming",
|
|
36
|
+
"chat",
|
|
37
|
+
"gpt",
|
|
38
|
+
"openai-alternative"
|
|
39
|
+
],
|
|
40
|
+
"author": "ClaudeAPI.Dev <support@claudeapi.dev>",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/claudeapi-dev/claudeapi-cli.git"
|
|
45
|
+
},
|
|
46
|
+
"bugs": {
|
|
47
|
+
"url": "https://github.com/claudeapi-dev/claudeapi-cli/issues"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://claudeapi.dev",
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=18.0.0"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"commander": "^11.1.0",
|
|
55
|
+
"chalk": "^5.3.0",
|
|
56
|
+
"ora": "^8.0.1",
|
|
57
|
+
"prompts": "^2.4.2",
|
|
58
|
+
"zod": "^3.22.4"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "^20.10.0",
|
|
62
|
+
"@types/prompts": "^2.4.9",
|
|
63
|
+
"typescript": "^5.3.3",
|
|
64
|
+
"tsx": "^4.7.0"
|
|
65
|
+
}
|
|
66
|
+
}
|