@sowonai/crewx-sdk 0.1.0-dev.40 → 0.1.0-dev.42
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/core/providers/claude.provider.d.ts +5 -0
- package/dist/core/providers/claude.provider.js +54 -0
- package/dist/core/providers/claude.provider.js.map +1 -1
- package/dist/core/providers/codex.provider.d.ts +5 -2
- package/dist/core/providers/codex.provider.js +36 -7
- package/dist/core/providers/codex.provider.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseAIProvider } from './base-ai.provider';
|
|
2
2
|
import type { BaseAIProviderOptions } from './base-ai.types';
|
|
3
|
+
import { type AIQueryOptions, type AIResponse } from './ai-provider.interface';
|
|
3
4
|
export declare class ClaudeProvider extends BaseAIProvider {
|
|
4
5
|
readonly name: "cli/claude";
|
|
5
6
|
constructor(options?: BaseAIProviderOptions);
|
|
@@ -7,6 +8,10 @@ export declare class ClaudeProvider extends BaseAIProvider {
|
|
|
7
8
|
protected getDefaultArgs(): string[];
|
|
8
9
|
protected getExecuteArgs(): string[];
|
|
9
10
|
protected getNotInstalledMessage(): string;
|
|
11
|
+
private parseJsonlResponse;
|
|
12
|
+
private isStreamJsonEnabled;
|
|
13
|
+
query(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
|
|
14
|
+
execute(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
|
|
10
15
|
parseProviderError(stderr: string, stdout: string): {
|
|
11
16
|
error: boolean;
|
|
12
17
|
message: string;
|
|
@@ -20,6 +20,60 @@ class ClaudeProvider extends base_ai_provider_1.BaseAIProvider {
|
|
|
20
20
|
getNotInstalledMessage() {
|
|
21
21
|
return 'Claude CLI is not installed. Please install it from https://claude.ai/download.';
|
|
22
22
|
}
|
|
23
|
+
parseJsonlResponse(content) {
|
|
24
|
+
const lines = content.split('\n').filter(line => line.trim());
|
|
25
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
26
|
+
try {
|
|
27
|
+
const line = lines[i];
|
|
28
|
+
if (!line)
|
|
29
|
+
continue;
|
|
30
|
+
const parsed = JSON.parse(line);
|
|
31
|
+
if (parsed.type === 'result' && parsed.result) {
|
|
32
|
+
this.logger.log('✅ Extracted final result from JSONL stream');
|
|
33
|
+
return parsed.result;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.logger.warn('⚠️ Could not parse JSONL, returning original content');
|
|
40
|
+
return content;
|
|
41
|
+
}
|
|
42
|
+
isStreamJsonEnabled(options = {}) {
|
|
43
|
+
const args = options.additionalArgs || [];
|
|
44
|
+
const hasOutputFormat = args.some((arg, idx) => {
|
|
45
|
+
if (arg === '--output-format' && args[idx + 1] === 'stream-json') {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (arg === '--output-format=stream-json') {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
});
|
|
53
|
+
return hasOutputFormat;
|
|
54
|
+
}
|
|
55
|
+
async query(prompt, options = {}) {
|
|
56
|
+
const response = await super.query(prompt, options);
|
|
57
|
+
if (response.success && response.content && this.isStreamJsonEnabled(options)) {
|
|
58
|
+
const parsedContent = this.parseJsonlResponse(response.content);
|
|
59
|
+
return {
|
|
60
|
+
...response,
|
|
61
|
+
content: parsedContent,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return response;
|
|
65
|
+
}
|
|
66
|
+
async execute(prompt, options = {}) {
|
|
67
|
+
const response = await super.execute(prompt, options);
|
|
68
|
+
if (response.success && response.content && this.isStreamJsonEnabled(options)) {
|
|
69
|
+
const parsedContent = this.parseJsonlResponse(response.content);
|
|
70
|
+
return {
|
|
71
|
+
...response,
|
|
72
|
+
content: parsedContent,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return response;
|
|
76
|
+
}
|
|
23
77
|
parseProviderError(stderr, stdout) {
|
|
24
78
|
const combinedOutput = stderr || stdout;
|
|
25
79
|
if (combinedOutput.includes('Session limit reached')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.provider.js","sourceRoot":"","sources":["../../../src/core/providers/claude.provider.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AAEpD,
|
|
1
|
+
{"version":3,"file":"claude.provider.js","sourceRoot":"","sources":["../../../src/core/providers/claude.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseAIProvider } from './base-ai.provider';
|
|
2
2
|
import type { BaseAIProviderOptions } from './base-ai.types';
|
|
3
|
+
import type { AIQueryOptions, AIResponse } from './ai-provider.interface';
|
|
3
4
|
export declare class CodexProvider extends BaseAIProvider {
|
|
4
5
|
readonly name = "cli/codex";
|
|
5
6
|
constructor(options?: BaseAIProviderOptions);
|
|
@@ -9,10 +10,12 @@ export declare class CodexProvider extends BaseAIProvider {
|
|
|
9
10
|
protected getNotInstalledMessage(): string;
|
|
10
11
|
protected getPromptInArgs(): boolean;
|
|
11
12
|
protected shouldPipeContext(): boolean;
|
|
13
|
+
private isExperimentalJsonEnabled;
|
|
12
14
|
parseProviderError(stderr: string, stdout: string): {
|
|
13
15
|
error: boolean;
|
|
14
16
|
message: string;
|
|
15
17
|
};
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
+
private parseJsonlResponse;
|
|
19
|
+
query(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
|
|
20
|
+
execute(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
|
|
18
21
|
}
|
|
@@ -25,6 +25,10 @@ class CodexProvider extends base_ai_provider_1.BaseAIProvider {
|
|
|
25
25
|
shouldPipeContext() {
|
|
26
26
|
return false;
|
|
27
27
|
}
|
|
28
|
+
isExperimentalJsonEnabled(options = {}) {
|
|
29
|
+
const args = options.additionalArgs || [];
|
|
30
|
+
return args.includes('--experimental-json');
|
|
31
|
+
}
|
|
28
32
|
parseProviderError(stderr, stdout) {
|
|
29
33
|
if (stderr && (stderr.includes('not logged in') || stderr.includes('authentication required'))) {
|
|
30
34
|
return {
|
|
@@ -46,13 +50,18 @@ class CodexProvider extends base_ai_provider_1.BaseAIProvider {
|
|
|
46
50
|
}
|
|
47
51
|
return super.parseProviderError(stderr, stdout);
|
|
48
52
|
}
|
|
49
|
-
|
|
53
|
+
parseJsonlResponse(content) {
|
|
50
54
|
const lines = content.split('\n').map(line => line.trim()).filter(Boolean);
|
|
51
55
|
let assistantMessage = null;
|
|
52
56
|
for (const line of lines) {
|
|
53
57
|
try {
|
|
54
58
|
const parsed = JSON.parse(line);
|
|
55
|
-
if (parsed?.
|
|
59
|
+
if (parsed?.type === 'item.completed' &&
|
|
60
|
+
parsed?.item?.item_type === 'assistant_message' &&
|
|
61
|
+
typeof parsed.item.text === 'string') {
|
|
62
|
+
assistantMessage = parsed.item.text.trim();
|
|
63
|
+
}
|
|
64
|
+
else if (parsed?.item?.item_type === 'assistant_message' &&
|
|
56
65
|
typeof parsed.item.text === 'string') {
|
|
57
66
|
assistantMessage = parsed.item.text.trim();
|
|
58
67
|
}
|
|
@@ -71,14 +80,34 @@ class CodexProvider extends base_ai_provider_1.BaseAIProvider {
|
|
|
71
80
|
continue;
|
|
72
81
|
}
|
|
73
82
|
}
|
|
74
|
-
return assistantMessage;
|
|
75
|
-
}
|
|
76
|
-
filterToolUseFromResponse(content) {
|
|
77
|
-
const assistantMessage = this.extractAssistantMessage(content);
|
|
78
83
|
if (assistantMessage) {
|
|
84
|
+
this.logger.log('✅ Extracted assistant message from Codex JSONL stream');
|
|
79
85
|
return assistantMessage;
|
|
80
86
|
}
|
|
81
|
-
|
|
87
|
+
this.logger.warn('⚠️ Could not parse Codex JSONL, returning original content');
|
|
88
|
+
return content;
|
|
89
|
+
}
|
|
90
|
+
async query(prompt, options = {}) {
|
|
91
|
+
const response = await super.query(prompt, options);
|
|
92
|
+
if (response.success && response.content && this.isExperimentalJsonEnabled(options)) {
|
|
93
|
+
const parsedContent = this.parseJsonlResponse(response.content);
|
|
94
|
+
return {
|
|
95
|
+
...response,
|
|
96
|
+
content: parsedContent,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return response;
|
|
100
|
+
}
|
|
101
|
+
async execute(prompt, options = {}) {
|
|
102
|
+
const response = await super.execute(prompt, options);
|
|
103
|
+
if (response.success && response.content && this.isExperimentalJsonEnabled(options)) {
|
|
104
|
+
const parsedContent = this.parseJsonlResponse(response.content);
|
|
105
|
+
return {
|
|
106
|
+
...response,
|
|
107
|
+
content: parsedContent,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return response;
|
|
82
111
|
}
|
|
83
112
|
}
|
|
84
113
|
exports.CodexProvider = CodexProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.provider.js","sourceRoot":"","sources":["../../../src/core/providers/codex.provider.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;
|
|
1
|
+
{"version":3,"file":"codex.provider.js","sourceRoot":"","sources":["../../../src/core/providers/codex.provider.ts"],"names":[],"mappings":"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"}
|