@astrive-ai/providers 1.0.12 → 1.0.14
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 are an AI Agent with access to tools. DO NOT SAY YOU CANNOT EXECUTE COMMANDS OR DOWNLOAD. YOU CAN DO IT BY CALLING TOOLS! To use a tool, 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\`\`\`\nAvailable tools: ${toolDefs}\nDo not provide any explanation if you are calling a tool, ONLY the JSON block.`;
|
|
57
|
+
const lastUserMsg = messages.slice().reverse().find(m => m.role === 'user');
|
|
58
|
+
if (lastUserMsg) {
|
|
59
|
+
lastUserMsg.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 are an AI Agent with access to tools. DO NOT SAY YOU CANNOT EXECUTE COMMANDS OR DOWNLOAD. YOU CAN DO IT BY CALLING TOOLS! To use a tool, 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\`\`\`\nAvailable tools: ${toolDefs}\nDo not provide any explanation if you are calling a tool, ONLY the JSON block.`;
|
|
63
|
+
|
|
64
|
+
const lastUserMsg = messages.slice().reverse().find(m => m.role === 'user');
|
|
65
|
+
if (lastUserMsg) {
|
|
66
|
+
lastUserMsg.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",
|