symmetry-cli 1.0.4 → 1.0.5
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/package.json +1 -1
- package/src/provider.ts +62 -2
package/package.json
CHANGED
package/src/provider.ts
CHANGED
@@ -63,7 +63,7 @@ export class SymmetryProvider {
|
|
63
63
|
chalk.white(`🔑 Server key: ${this._config.get("serverKey")}`)
|
64
64
|
);
|
65
65
|
logger.info(chalk.white("🔗 Joining server, please wait."));
|
66
|
-
|
66
|
+
this.testProviderCall();
|
67
67
|
}
|
68
68
|
|
69
69
|
process.on("SIGINT", async () => {
|
@@ -78,6 +78,66 @@ export class SymmetryProvider {
|
|
78
78
|
});
|
79
79
|
}
|
80
80
|
|
81
|
+
private async testProviderCall(): Promise<void> {
|
82
|
+
logger.info(chalk.white(`👋 Saying hello to your provider...`));
|
83
|
+
const testMessages: Message[] = [
|
84
|
+
{ role: "user", content: "Hello, this is a test message." },
|
85
|
+
];
|
86
|
+
const req = this.buildStreamRequest(testMessages);
|
87
|
+
|
88
|
+
if (!req) {
|
89
|
+
logger.error(chalk.red("❌ Failed to build test request"));
|
90
|
+
throw new Error("Failed to build test request");
|
91
|
+
}
|
92
|
+
|
93
|
+
const { requestOptions, requestBody } = req;
|
94
|
+
const { protocol, hostname, port, path, method, headers } = requestOptions;
|
95
|
+
const url = `${protocol}://${hostname}:${port}${path}`;
|
96
|
+
|
97
|
+
logger.info(chalk.white(`🚀 Sending test request to ${url}`));
|
98
|
+
|
99
|
+
try {
|
100
|
+
const response = await fetch(url, {
|
101
|
+
method,
|
102
|
+
headers,
|
103
|
+
body: JSON.stringify(requestBody),
|
104
|
+
});
|
105
|
+
|
106
|
+
if (!response.ok) {
|
107
|
+
logger.error(
|
108
|
+
chalk.red(`❌ Server responded with status code: ${response.status}`)
|
109
|
+
);
|
110
|
+
throw new Error(
|
111
|
+
`Server responded with status code: ${response.status}`
|
112
|
+
);
|
113
|
+
}
|
114
|
+
|
115
|
+
if (!response.body) {
|
116
|
+
logger.error(
|
117
|
+
chalk.red("❌ Failed to get a ReadableStream from the response")
|
118
|
+
);
|
119
|
+
throw new Error("Failed to get a ReadableStream from the response");
|
120
|
+
}
|
121
|
+
|
122
|
+
logger.info(chalk.white(`📡 Got response, checking stream...`));
|
123
|
+
|
124
|
+
const reader = response.body.getReader();
|
125
|
+
const { done } = await reader.read();
|
126
|
+
if (done) {
|
127
|
+
logger.error(chalk.red("❌ Stream ended without data"));
|
128
|
+
throw new Error("Stream ended without data");
|
129
|
+
}
|
130
|
+
|
131
|
+
logger.info(chalk.green(`✅ Test inference call successful!`));
|
132
|
+
} catch (error) {
|
133
|
+
logger.error(chalk.red(`❌ Error during test inference call: ${error}`));
|
134
|
+
throw error;
|
135
|
+
}
|
136
|
+
|
137
|
+
logger.info(chalk.white(`🔗 Proceeding to join server...`));
|
138
|
+
await this.joinServer();
|
139
|
+
}
|
140
|
+
|
81
141
|
async joinServer(): Promise<void> {
|
82
142
|
const serverSwarm = new Hyperswarm();
|
83
143
|
const serverKey = Buffer.from(this._config.get("serverKey"));
|
@@ -191,7 +251,7 @@ export class SymmetryProvider {
|
|
191
251
|
}
|
192
252
|
|
193
253
|
private getMessagesWithSystem(messages: Message[]): Message[] {
|
194
|
-
const systemMessage = this._config.get("systemMessage")
|
254
|
+
const systemMessage = this._config.get("systemMessage");
|
195
255
|
if (messages.length === 2 && systemMessage) {
|
196
256
|
messages.unshift({
|
197
257
|
role: "system",
|