@astrive-ai/providers 1.0.12 → 1.0.13
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overchat-provider.d.ts","sourceRoot":"","sources":["../src/overchat-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGjG,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,GAAG,CAAiD;IAC5D,OAAO,CAAC,EAAE,CAAqH;IAC/H,OAAO,CAAC,MAAM,CAAiC;gBAEnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAIlC,WAAW,IAAI,OAAO;IAItC,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"overchat-provider.d.ts","sourceRoot":"","sources":["../src/overchat-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGjG,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,GAAG,CAAiD;IAC5D,OAAO,CAAC,EAAE,CAAqH;IAC/H,OAAO,CAAC,MAAM,CAAiC;gBAEnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAIlC,WAAW,IAAI,OAAO;IAItC,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,WAAW;IAsCN,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4ChD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC;IA6EjF,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAIjD"}
|
|
@@ -29,22 +29,40 @@ export class OverchatProvider extends BaseProvider {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
mapMessages(request) {
|
|
32
|
-
|
|
32
|
+
const messages = request.messages.map(msg => {
|
|
33
33
|
const mapped = { ...msg };
|
|
34
34
|
if (!mapped.id)
|
|
35
35
|
mapped.id = crypto.randomUUID();
|
|
36
|
-
if (mapped.
|
|
37
|
-
mapped.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
if (mapped.role === 'tool') {
|
|
37
|
+
mapped.role = 'user';
|
|
38
|
+
mapped.content = `[Tool Result for ${mapped.name}]: ${mapped.content}`;
|
|
39
|
+
}
|
|
40
|
+
else if (mapped.role === 'assistant' && mapped.tool_calls) {
|
|
41
|
+
mapped.content = mapped.content || '';
|
|
42
|
+
mapped.content += `\n\`\`\`json\n{"tool_calls":${JSON.stringify(mapped.tool_calls.map((tc) => ({
|
|
43
|
+
name: tc.function?.name || tc.name,
|
|
44
|
+
arguments: tc.function?.arguments || tc.arguments
|
|
45
|
+
})))}}\n\`\`\``;
|
|
46
|
+
delete mapped.tool_calls;
|
|
45
47
|
}
|
|
46
48
|
return mapped;
|
|
47
49
|
});
|
|
50
|
+
if (request.tools && request.tools.length > 0) {
|
|
51
|
+
const toolDefs = JSON.stringify(request.tools.map(t => ({
|
|
52
|
+
name: t.function.name,
|
|
53
|
+
description: t.function.description,
|
|
54
|
+
parameters: t.function.parameters
|
|
55
|
+
})));
|
|
56
|
+
const instruction = `\n\n[CRITICAL INSTRUCTION] You have access to the following tools: ${toolDefs}. If you need to use a tool to fulfill the user's request (like executing a terminal command, downloading, etc), you MUST reply with a JSON code block in EXACTLY this format and NO OTHER TEXT:\n\`\`\`json\n{"tool_calls":[{"name":"tool_name","arguments":{"arg1":"value1"}}]}\n\`\`\`\nDo not provide any explanation if you are calling a tool, ONLY the JSON block.`;
|
|
57
|
+
const systemMsg = messages.find(m => m.role === 'system');
|
|
58
|
+
if (systemMsg) {
|
|
59
|
+
systemMsg.content += instruction;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
messages.unshift({ id: crypto.randomUUID(), role: 'system', content: instruction });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return messages;
|
|
48
66
|
}
|
|
49
67
|
async chat(request) {
|
|
50
68
|
const stream = this.chatStream(request);
|
|
@@ -58,9 +76,28 @@ export class OverchatProvider extends BaseProvider {
|
|
|
58
76
|
toolCalls = chunk.toolCalls;
|
|
59
77
|
}
|
|
60
78
|
}
|
|
79
|
+
let finalContent = fullContent;
|
|
80
|
+
let match = fullContent.match(/```(?:json)?\s*(\{[\s\S]*?"tool_calls"[\s\S]*?\})\s*```/);
|
|
81
|
+
if (!match) {
|
|
82
|
+
match = fullContent.match(/(\{[\s\S]*?"tool_calls"[\s\S]*?\})/);
|
|
83
|
+
}
|
|
84
|
+
if (match) {
|
|
85
|
+
try {
|
|
86
|
+
const parsed = JSON.parse(match[1]);
|
|
87
|
+
if (parsed.tool_calls && Array.isArray(parsed.tool_calls)) {
|
|
88
|
+
toolCalls = parsed.tool_calls.map((tc) => ({
|
|
89
|
+
id: `call_${crypto.randomUUID()}`,
|
|
90
|
+
name: tc.name,
|
|
91
|
+
arguments: typeof tc.arguments === 'string' ? JSON.parse(tc.arguments) : (tc.arguments || tc.parameters || {})
|
|
92
|
+
}));
|
|
93
|
+
finalContent = fullContent.replace(match[0], '').trim();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (e) { }
|
|
97
|
+
}
|
|
61
98
|
return {
|
|
62
99
|
id: crypto.randomUUID(),
|
|
63
|
-
content:
|
|
100
|
+
content: finalContent,
|
|
64
101
|
role: 'assistant',
|
|
65
102
|
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
66
103
|
model: this.models[0],
|
|
@@ -82,9 +119,7 @@ export class OverchatProvider extends BaseProvider {
|
|
|
82
119
|
temperature: request.temperature || 0.5,
|
|
83
120
|
top_p: 0.95,
|
|
84
121
|
};
|
|
85
|
-
|
|
86
|
-
body.tools = request.tools;
|
|
87
|
-
}
|
|
122
|
+
// Removed body.tools since it's injected via system prompt now
|
|
88
123
|
const response = await fetch(this.API, {
|
|
89
124
|
method: "POST",
|
|
90
125
|
headers: this.buildOverchatHeaders(deviceId),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overchat-provider.js","sourceRoot":"","sources":["../src/overchat-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IACxC,GAAG,GAAG,6CAA6C,CAAC;IACpD,EAAE,GAAG,iHAAiH,CAAC;IACvH,MAAM,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAE/C,YAAY,MAAe,EAAE,MAAqB;QAChD,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAEe,WAAW;QACzB,OAAO,IAAI,CAAC,CAAC,sBAAsB;IACrC,CAAC;IAEO,oBAAoB,CAAC,QAAgB;QAC3C,OAAO;YACL,oBAAoB,EAAE,WAAW;YACjC,eAAe,EAAE,QAAQ;YACzB,WAAW,EAAE,kEAAkE;YAC/E,kBAAkB,EAAE,IAAI;YACxB,mBAAmB,EAAE,OAAO;YAC5B,mBAAmB,EAAE,KAAK;YAC1B,kBAAkB,EAAE,QAAQ;YAC5B,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,MAAM,EAAE,KAAK;YACb,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,sBAAsB;YAC/B,iBAAiB,EAAE,gBAAgB;YACnC,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,OAAoB;QACtC,
|
|
1
|
+
{"version":3,"file":"overchat-provider.js","sourceRoot":"","sources":["../src/overchat-provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/overchat-provider.ts
CHANGED
|
@@ -35,21 +35,41 @@ export class OverchatProvider extends BaseProvider {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
private mapMessages(request: ChatRequest) {
|
|
38
|
-
|
|
38
|
+
const messages = request.messages.map(msg => {
|
|
39
39
|
const mapped = { ...msg } as any;
|
|
40
40
|
if (!mapped.id) mapped.id = crypto.randomUUID();
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
|
|
42
|
+
if (mapped.role === 'tool') {
|
|
43
|
+
mapped.role = 'user';
|
|
44
|
+
mapped.content = `[Tool Result for ${mapped.name}]: ${mapped.content}`;
|
|
45
|
+
} else if (mapped.role === 'assistant' && mapped.tool_calls) {
|
|
46
|
+
mapped.content = mapped.content || '';
|
|
47
|
+
mapped.content += `\n\`\`\`json\n{"tool_calls":${JSON.stringify(mapped.tool_calls.map((tc: any) => ({
|
|
48
|
+
name: tc.function?.name || tc.name,
|
|
49
|
+
arguments: tc.function?.arguments || tc.arguments
|
|
50
|
+
})))}}\n\`\`\``;
|
|
51
|
+
delete mapped.tool_calls;
|
|
50
52
|
}
|
|
51
53
|
return mapped;
|
|
52
54
|
});
|
|
55
|
+
|
|
56
|
+
if (request.tools && request.tools.length > 0) {
|
|
57
|
+
const toolDefs = JSON.stringify(request.tools.map(t => ({
|
|
58
|
+
name: t.function.name,
|
|
59
|
+
description: t.function.description,
|
|
60
|
+
parameters: t.function.parameters
|
|
61
|
+
})));
|
|
62
|
+
const instruction = `\n\n[CRITICAL INSTRUCTION] You have access to the following tools: ${toolDefs}. If you need to use a tool to fulfill the user's request (like executing a terminal command, downloading, etc), you MUST reply with a JSON code block in EXACTLY this format and NO OTHER TEXT:\n\`\`\`json\n{"tool_calls":[{"name":"tool_name","arguments":{"arg1":"value1"}}]}\n\`\`\`\nDo not provide any explanation if you are calling a tool, ONLY the JSON block.`;
|
|
63
|
+
|
|
64
|
+
const systemMsg = messages.find(m => m.role === 'system');
|
|
65
|
+
if (systemMsg) {
|
|
66
|
+
systemMsg.content += instruction;
|
|
67
|
+
} else {
|
|
68
|
+
messages.unshift({ id: crypto.randomUUID(), role: 'system', content: instruction });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return messages;
|
|
53
73
|
}
|
|
54
74
|
|
|
55
75
|
public async chat(request: ChatRequest): Promise<ChatResponse> {
|
|
@@ -66,9 +86,29 @@ export class OverchatProvider extends BaseProvider {
|
|
|
66
86
|
}
|
|
67
87
|
}
|
|
68
88
|
|
|
89
|
+
let finalContent = fullContent;
|
|
90
|
+
let match = fullContent.match(/```(?:json)?\s*(\{[\s\S]*?"tool_calls"[\s\S]*?\})\s*```/);
|
|
91
|
+
if (!match) {
|
|
92
|
+
match = fullContent.match(/(\{[\s\S]*?"tool_calls"[\s\S]*?\})/);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (match) {
|
|
96
|
+
try {
|
|
97
|
+
const parsed = JSON.parse(match[1]);
|
|
98
|
+
if (parsed.tool_calls && Array.isArray(parsed.tool_calls)) {
|
|
99
|
+
toolCalls = parsed.tool_calls.map((tc: any) => ({
|
|
100
|
+
id: `call_${crypto.randomUUID()}`,
|
|
101
|
+
name: tc.name,
|
|
102
|
+
arguments: typeof tc.arguments === 'string' ? JSON.parse(tc.arguments) : (tc.arguments || tc.parameters || {})
|
|
103
|
+
}));
|
|
104
|
+
finalContent = fullContent.replace(match[0], '').trim();
|
|
105
|
+
}
|
|
106
|
+
} catch (e) {}
|
|
107
|
+
}
|
|
108
|
+
|
|
69
109
|
return {
|
|
70
110
|
id: crypto.randomUUID(),
|
|
71
|
-
content:
|
|
111
|
+
content: finalContent,
|
|
72
112
|
role: 'assistant',
|
|
73
113
|
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
74
114
|
model: this.models[0],
|
|
@@ -93,9 +133,7 @@ export class OverchatProvider extends BaseProvider {
|
|
|
93
133
|
top_p: 0.95,
|
|
94
134
|
};
|
|
95
135
|
|
|
96
|
-
|
|
97
|
-
body.tools = request.tools;
|
|
98
|
-
}
|
|
136
|
+
// Removed body.tools since it's injected via system prompt now
|
|
99
137
|
|
|
100
138
|
const response = await fetch(this.API, {
|
|
101
139
|
method: "POST",
|