@ancatag/n-r 0.2.0 → 0.2.2
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/grpc-client.d.ts +9 -14
- package/dist/grpc-client.d.ts.map +1 -1
- package/dist/grpc-client.js +124 -23
- package/dist/grpc-client.js.map +1 -1
- package/package.json +64 -63
package/dist/grpc-client.d.ts
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* gRPC Client (stub implementation)
|
|
3
|
-
*
|
|
4
|
-
* This is a placeholder for gRPC functionality.
|
|
5
|
-
* OpenChat uses REST transport only, so this is not implemented.
|
|
6
|
-
*
|
|
7
|
-
* To implement gRPC support, this would use @grpc/grpc-js and @nova-ai/proto
|
|
8
|
-
*
|
|
9
|
-
* Note: gRPC dependencies are optional. If gRPC is requested but dependencies
|
|
10
|
-
* are not installed, this will throw an error suggesting to use REST instead.
|
|
11
|
-
*/
|
|
12
1
|
import type { ChatCompletionChunk, ChatCompletionRequest, ChatCompletionResponse, Model, NovaClientConfig } from "./types.js";
|
|
13
2
|
export declare class GrpcClient {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
private readonly config;
|
|
4
|
+
private client;
|
|
5
|
+
constructor(config: NovaClientConfig);
|
|
6
|
+
private getMetadata;
|
|
7
|
+
createChatCompletion(request: ChatCompletionRequest): Promise<ChatCompletionResponse>;
|
|
8
|
+
createChatCompletionStream(request: ChatCompletionRequest): AsyncGenerator<ChatCompletionChunk, void, unknown>;
|
|
17
9
|
listModels(): Promise<Model[]>;
|
|
10
|
+
private mapToGrpcRequest;
|
|
11
|
+
private mapFromGrpcResponse;
|
|
12
|
+
private mapFromGrpcStreamResponse;
|
|
18
13
|
}
|
|
19
14
|
//# sourceMappingURL=grpc-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-client.d.ts","sourceRoot":"","sources":["../src/grpc-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grpc-client.d.ts","sourceRoot":"","sources":["../src/grpc-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,EACL,gBAAgB,EAChB,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAM;gBAES,MAAM,EAAE,gBAAgB;IAmBrD,OAAO,CAAC,WAAW;IAMb,oBAAoB,CACzB,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAmB3B,0BAA0B,CAChC,OAAO,EAAE,qBAAqB,GAC5B,cAAc,CAAC,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC;IAW/C,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAoBpC,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,yBAAyB;CAiBjC"}
|
package/dist/grpc-client.js
CHANGED
|
@@ -1,31 +1,132 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
* This is a placeholder for gRPC functionality.
|
|
5
|
-
* OpenChat uses REST transport only, so this is not implemented.
|
|
6
|
-
*
|
|
7
|
-
* To implement gRPC support, this would use @grpc/grpc-js and @nova-ai/proto
|
|
8
|
-
*
|
|
9
|
-
* Note: gRPC dependencies are optional. If gRPC is requested but dependencies
|
|
10
|
-
* are not installed, this will throw an error suggesting to use REST instead.
|
|
11
|
-
*/
|
|
1
|
+
import * as grpc from "@grpc/grpc-js";
|
|
2
|
+
import * as protoLoader from "@grpc/proto-loader";
|
|
3
|
+
import { NOVA_SERVICE_PROTO } from "@nova-ai/proto";
|
|
12
4
|
export class GrpcClient {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
config;
|
|
6
|
+
client;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
const packageDefinition = protoLoader.loadSync(NOVA_SERVICE_PROTO, {
|
|
10
|
+
keepCase: true,
|
|
11
|
+
longs: String,
|
|
12
|
+
enums: String,
|
|
13
|
+
defaults: true,
|
|
14
|
+
oneofs: true,
|
|
15
|
+
});
|
|
16
|
+
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
|
|
17
|
+
const novaService = protoDescriptor.nova.service;
|
|
18
|
+
const grpcUrl = config.grpcUrl || "0.0.0.0:50051";
|
|
19
|
+
this.client = new novaService.NovaService(grpcUrl, grpc.credentials.createInsecure());
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
getMetadata(apiKey) {
|
|
22
|
+
const metadata = new grpc.Metadata();
|
|
23
|
+
metadata.add("authorization", `Bearer ${apiKey}`);
|
|
24
|
+
return metadata;
|
|
23
25
|
}
|
|
24
|
-
async
|
|
25
|
-
|
|
26
|
+
async createChatCompletion(request) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const grpcRequest = this.mapToGrpcRequest(request);
|
|
29
|
+
const metadata = this.getMetadata(this.config.apiKey);
|
|
30
|
+
this.client.GenerateText(grpcRequest, metadata, { deadline: new Date(Date.now() + (this.config.timeoutMs || 60000)) }, (error, response) => {
|
|
31
|
+
if (error) {
|
|
32
|
+
return reject(error);
|
|
33
|
+
}
|
|
34
|
+
resolve(this.mapFromGrpcResponse(response));
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async *createChatCompletionStream(request) {
|
|
39
|
+
const grpcRequest = this.mapToGrpcRequest(request);
|
|
40
|
+
const metadata = this.getMetadata(this.config.apiKey);
|
|
41
|
+
const stream = this.client.StreamText(grpcRequest, metadata);
|
|
42
|
+
for await (const chunk of stream) {
|
|
43
|
+
yield this.mapFromGrpcStreamResponse(chunk);
|
|
44
|
+
}
|
|
26
45
|
}
|
|
27
46
|
async listModels() {
|
|
28
|
-
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const metadata = this.getMetadata(this.config.apiKey);
|
|
49
|
+
this.client.ListModels({}, metadata, (error, response) => {
|
|
50
|
+
if (error) {
|
|
51
|
+
return reject(error);
|
|
52
|
+
}
|
|
53
|
+
resolve(response.models.map((m) => ({
|
|
54
|
+
id: m.id,
|
|
55
|
+
object: "model",
|
|
56
|
+
created: Math.floor(Date.now() / 1000),
|
|
57
|
+
owned_by: m.provider || "nova",
|
|
58
|
+
})));
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
mapToGrpcRequest(request) {
|
|
63
|
+
// Map OpenAI-style request to Nova gRPC request
|
|
64
|
+
const lastMessage = request.messages[request.messages.length - 1];
|
|
65
|
+
return {
|
|
66
|
+
prompt: lastMessage.content,
|
|
67
|
+
model_selection: {
|
|
68
|
+
model_id: request.model,
|
|
69
|
+
},
|
|
70
|
+
max_tokens: request.max_tokens,
|
|
71
|
+
temperature: request.temperature,
|
|
72
|
+
top_p: request.top_p,
|
|
73
|
+
context: {
|
|
74
|
+
conversation_history: request.messages.slice(0, -1).map((m) => ({
|
|
75
|
+
role: m.role,
|
|
76
|
+
content: m.content,
|
|
77
|
+
})),
|
|
78
|
+
},
|
|
79
|
+
// Nova extensions
|
|
80
|
+
enable_cache: !request.nova?.skipCache,
|
|
81
|
+
enable_semantic_cache: !request.nova?.skipCache,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
mapFromGrpcResponse(response) {
|
|
85
|
+
return {
|
|
86
|
+
id: response.result?.metadata?.request_id || `chatcmpl-${Date.now()}`,
|
|
87
|
+
object: "chat.completion",
|
|
88
|
+
created: Math.floor(Date.now() / 1000),
|
|
89
|
+
model: response.used_model?.model_id || "unknown",
|
|
90
|
+
choices: [
|
|
91
|
+
{
|
|
92
|
+
index: 0,
|
|
93
|
+
message: {
|
|
94
|
+
role: "assistant",
|
|
95
|
+
content: response.result?.result || "",
|
|
96
|
+
},
|
|
97
|
+
finish_reason: "stop",
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
usage: {
|
|
101
|
+
prompt_tokens: response.usage?.input_tokens || 0,
|
|
102
|
+
completion_tokens: response.usage?.output_tokens || 0,
|
|
103
|
+
total_tokens: response.usage?.total_tokens || 0,
|
|
104
|
+
},
|
|
105
|
+
nova: {
|
|
106
|
+
cacheHit: response.cached || false,
|
|
107
|
+
cacheLayer: response.semantic_cache_hit ? "semantic" : "hot",
|
|
108
|
+
tokensSaved: response.usage?.total_tokens || 0, // Simplified
|
|
109
|
+
responseTimeMs: 0, // Not available in raw gRPC response easily
|
|
110
|
+
requestId: response.result?.metadata?.request_id || "",
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
mapFromGrpcStreamResponse(chunk) {
|
|
115
|
+
return {
|
|
116
|
+
id: `chatcmpl-${Date.now()}`,
|
|
117
|
+
object: "chat.completion.chunk",
|
|
118
|
+
created: Math.floor(Date.now() / 1000),
|
|
119
|
+
model: chunk.used_model?.model_id || "unknown",
|
|
120
|
+
choices: [
|
|
121
|
+
{
|
|
122
|
+
index: 0,
|
|
123
|
+
delta: {
|
|
124
|
+
content: chunk.token || "",
|
|
125
|
+
},
|
|
126
|
+
finish_reason: chunk.completed ? "stop" : null,
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
29
130
|
}
|
|
30
131
|
}
|
|
31
132
|
//# sourceMappingURL=grpc-client.js.map
|
package/dist/grpc-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-client.js","sourceRoot":"","sources":["../src/grpc-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"grpc-client.js","sourceRoot":"","sources":["../src/grpc-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,65 +1,66 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
2
|
+
"name": "@ancatag/n-r",
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "Official Node.js/TypeScript SDK for Nova AI API with route-config-based orchestration",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc --watch",
|
|
21
|
+
"clean": "rm -rf dist",
|
|
22
|
+
"type-check": "tsc --noEmit",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"test:cov": "vitest run --coverage",
|
|
26
|
+
"prepublishOnly": "pnpm clean && pnpm build",
|
|
27
|
+
"publish:npm": "npm publish --access public"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"nova",
|
|
31
|
+
"ai",
|
|
32
|
+
"sdk",
|
|
33
|
+
"chat",
|
|
34
|
+
"completions",
|
|
35
|
+
"openai-compatible",
|
|
36
|
+
"route-config",
|
|
37
|
+
"caching",
|
|
38
|
+
"rag",
|
|
39
|
+
"cost-optimization"
|
|
40
|
+
],
|
|
41
|
+
"author": "",
|
|
42
|
+
"license": "ISC",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "git+https://github.com/sayanmohsin/nova-route.git",
|
|
46
|
+
"directory": "packages/sdk"
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
},
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=18.0.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/node": "^25.0.6",
|
|
56
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
57
|
+
"typescript": "^5.9.3",
|
|
58
|
+
"vitest": "^4.0.16"
|
|
59
|
+
},
|
|
60
|
+
"type": "module",
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@grpc/grpc-js": "^1.14.3",
|
|
63
|
+
"@grpc/proto-loader": "^0.8.0",
|
|
64
|
+
"@nova-ai/proto": "workspace:*"
|
|
65
|
+
}
|
|
65
66
|
}
|