@flaid/devmap 0.2.0 → 0.3.1
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/README.md +16 -6
- package/dist/ai/custom.d.ts +20 -0
- package/dist/ai/custom.d.ts.map +1 -0
- package/dist/ai/custom.js +142 -0
- package/dist/ai/custom.js.map +1 -0
- package/dist/ai/groq.d.ts.map +1 -1
- package/dist/ai/groq.js +14 -94
- package/dist/ai/groq.js.map +1 -1
- package/dist/ai/openaiCompatibleStream.d.ts +48 -0
- package/dist/ai/openaiCompatibleStream.d.ts.map +1 -0
- package/dist/ai/openaiCompatibleStream.js +94 -0
- package/dist/ai/openaiCompatibleStream.js.map +1 -0
- package/dist/ai/openrouter.d.ts.map +1 -1
- package/dist/ai/openrouter.js +22 -90
- package/dist/ai/openrouter.js.map +1 -1
- package/dist/ai/provider.d.ts +1 -1
- package/dist/ai/provider.d.ts.map +1 -1
- package/dist/ai/provider.js +18 -16
- package/dist/ai/provider.js.map +1 -1
- package/dist/ai/registry.d.ts +24 -0
- package/dist/ai/registry.d.ts.map +1 -0
- package/dist/ai/registry.js +47 -0
- package/dist/ai/registry.js.map +1 -0
- package/dist/analyzers/graph/entryPoints.d.ts.map +1 -1
- package/dist/analyzers/graph/entryPoints.js +16 -1
- package/dist/analyzers/graph/entryPoints.js.map +1 -1
- package/dist/analyzers/registry/background-jobs.js +1 -1
- package/dist/analyzers/registry/background-jobs.js.map +1 -1
- package/dist/analyzers/registry/caching.js +1 -1
- package/dist/analyzers/registry/caching.js.map +1 -1
- package/dist/analyzers/registry/file-upload.js +1 -1
- package/dist/analyzers/registry/file-upload.js.map +1 -1
- package/dist/analyzers/registry/payments.js +1 -1
- package/dist/analyzers/registry/payments.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +14 -6
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +3 -3
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +81 -47
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/utils/config.d.ts +3 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +13 -1
- package/dist/utils/config.js.map +1 -1
- package/package.json +11 -10
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# DevMap
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Every new AI chat about your code starts from zero — you re-explain
|
|
4
|
+
the same codebase every time. DevMap fixes that.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
interpretation
|
|
7
|
-
|
|
6
|
+
It's a CLI that combines static analysis with optional AI
|
|
7
|
+
interpretation to build a structured, reusable understanding layer
|
|
8
|
+
of your project — once. That layer (`.devmap/index.json`, feature
|
|
9
|
+
maps, `DEVMAP.md`) is what you and any AI agent read afterward,
|
|
10
|
+
instead of re-scanning or re-pasting the whole repo. Full repo
|
|
11
|
+
source stays local — nothing gets sent wholesale to the AI model.
|
|
8
12
|
|
|
9
13
|
Version `0.2.0` classifies full workspaces (multiple project types at once),
|
|
10
14
|
centralizes detection vocabulary, and ships `map`, `flow`, and `explain`.
|
|
@@ -24,7 +28,8 @@ npx @flaid/devmap --help
|
|
|
24
28
|
## Requirements
|
|
25
29
|
|
|
26
30
|
- Node.js 22.12 or newer
|
|
27
|
-
-
|
|
31
|
+
- An API key for an AI provider: Groq, OpenRouter, or any custom
|
|
32
|
+
OpenAI-compatible endpoint
|
|
28
33
|
|
|
29
34
|
Static analysis still works when AI is not configured.
|
|
30
35
|
|
|
@@ -44,7 +49,8 @@ devmap doctor
|
|
|
44
49
|
|
|
45
50
|
## AI Provider Setup
|
|
46
51
|
|
|
47
|
-
Choose Groq or
|
|
52
|
+
Choose Groq, OpenRouter, or a custom OpenAI-compatible endpoint with the arrow
|
|
53
|
+
keys during:
|
|
48
54
|
|
|
49
55
|
```bash
|
|
50
56
|
devmap init
|
|
@@ -53,6 +59,10 @@ devmap init
|
|
|
53
59
|
Groq keys are available at https://console.groq.com/keys. OpenRouter keys are
|
|
54
60
|
available at https://openrouter.ai/keys.
|
|
55
61
|
|
|
62
|
+
For custom endpoints, DevMap asks for the base URL (prefilled with
|
|
63
|
+
`http://localhost:20128/v1`) and lists the models your server exposes, so any
|
|
64
|
+
OpenAI-compatible self-hosted gateway works out of the box.
|
|
65
|
+
|
|
56
66
|
For OpenRouter, DevMap prompts:
|
|
57
67
|
|
|
58
68
|
```txt
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AiClient, AiCompletionRequest, AiCompletionResult, AiDeltaHandler } from "./types.js";
|
|
2
|
+
export type CustomProviderClientDependencies = {
|
|
3
|
+
fetch?: typeof fetch;
|
|
4
|
+
};
|
|
5
|
+
export type CustomProviderInspection = {
|
|
6
|
+
reachable: true;
|
|
7
|
+
modelAvailable: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare class CustomProviderClient implements AiClient {
|
|
10
|
+
private readonly apiKey;
|
|
11
|
+
private readonly baseUrl;
|
|
12
|
+
private readonly fetchImplementation;
|
|
13
|
+
constructor(apiKey: string, baseUrl: string, dependencies?: CustomProviderClientDependencies);
|
|
14
|
+
complete(request: AiCompletionRequest): Promise<AiCompletionResult>;
|
|
15
|
+
stream(request: AiCompletionRequest, onDelta: AiDeltaHandler): Promise<AiCompletionResult>;
|
|
16
|
+
private sendRequest;
|
|
17
|
+
}
|
|
18
|
+
export declare function listCustomModels(apiKey: string, baseUrl: string, dependencies?: Pick<CustomProviderClientDependencies, "fetch">): Promise<string[]>;
|
|
19
|
+
export declare function inspectCustomProvider(apiKey: string, baseUrl: string, model?: string, dependencies?: Pick<CustomProviderClientDependencies, "fetch">): Promise<CustomProviderInspection>;
|
|
20
|
+
//# sourceMappingURL=custom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/ai/custom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACf,MAAM,YAAY,CAAC;AA6BpB,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAaF,qBAAa,oBAAqB,YAAW,QAAQ;IAKjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAe;gBAGhC,MAAM,EAAE,MAAM,EAC/B,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,gCAAqC;IAM/C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoBnE,MAAM,CACV,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,kBAAkB,CAAC;YAuBhB,WAAW;CA0B1B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAM,GACjE,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,GAAE,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAM,GACjE,OAAO,CAAC,wBAAwB,CAAC,CAsBnC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { DevmapError } from "../utils/errors.js";
|
|
2
|
+
import { normalizeUsage, parseSseStream, readCompletionPayload } from "./openaiCompatibleStream.js";
|
|
3
|
+
const CUSTOM_PAYLOAD_MESSAGES = {
|
|
4
|
+
unreadable: () => new DevmapError("The custom endpoint returned an unreadable response.", "Verify the base URL points to an OpenAI-compatible API and try again.")
|
|
5
|
+
};
|
|
6
|
+
const CUSTOM_STREAM_MESSAGES = {
|
|
7
|
+
missingBody: () => new DevmapError("The custom endpoint returned an unreadable streaming response.", "Verify the base URL points to an OpenAI-compatible API and try again."),
|
|
8
|
+
unreadable: () => new DevmapError("The custom endpoint returned an unreadable streaming response.", "Verify the base URL points to an OpenAI-compatible API and try again."),
|
|
9
|
+
interrupted: () => new DevmapError("The custom endpoint response stream ended unexpectedly.", "Check that the server is running correctly and try again.")
|
|
10
|
+
};
|
|
11
|
+
function normalizeBaseUrl(baseUrl) {
|
|
12
|
+
return baseUrl.trim().replace(/\/+$/, "");
|
|
13
|
+
}
|
|
14
|
+
function unreachableEndpointError() {
|
|
15
|
+
return new DevmapError("Could not connect to the configured endpoint.", "Check the base URL and that the server is running.");
|
|
16
|
+
}
|
|
17
|
+
export class CustomProviderClient {
|
|
18
|
+
apiKey;
|
|
19
|
+
baseUrl;
|
|
20
|
+
fetchImplementation;
|
|
21
|
+
constructor(apiKey, baseUrl, dependencies = {}) {
|
|
22
|
+
this.apiKey = apiKey;
|
|
23
|
+
this.baseUrl = normalizeBaseUrl(baseUrl);
|
|
24
|
+
this.fetchImplementation = dependencies.fetch ?? fetch;
|
|
25
|
+
}
|
|
26
|
+
async complete(request) {
|
|
27
|
+
const response = await this.sendRequest(request, false);
|
|
28
|
+
if (!response.ok)
|
|
29
|
+
throw await mapCustomResponseError(response);
|
|
30
|
+
const payload = await readCompletionPayload(response, CUSTOM_PAYLOAD_MESSAGES);
|
|
31
|
+
const content = payload.choices[0]?.message?.content?.trim();
|
|
32
|
+
if (!content) {
|
|
33
|
+
throw new DevmapError("The custom endpoint returned an empty response.", "Try again or choose another model on the endpoint.");
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
content,
|
|
37
|
+
model: payload.model || request.model,
|
|
38
|
+
...(payload.usage ? { usage: normalizeUsage(payload.usage) } : {})
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async stream(request, onDelta) {
|
|
42
|
+
const response = await this.sendRequest(request, true);
|
|
43
|
+
if (!response.ok)
|
|
44
|
+
throw await mapCustomResponseError(response);
|
|
45
|
+
const payload = await parseSseStream(response, request.model, onDelta, { messages: CUSTOM_STREAM_MESSAGES });
|
|
46
|
+
if (!payload.content.trim()) {
|
|
47
|
+
throw new DevmapError("The custom endpoint returned an empty response.", "Try again or choose another model on the endpoint.");
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
content: payload.content.trim(),
|
|
51
|
+
model: payload.model,
|
|
52
|
+
...(payload.usage ? { usage: payload.usage } : {})
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async sendRequest(request, stream) {
|
|
56
|
+
try {
|
|
57
|
+
return await this.fetchImplementation(`${this.baseUrl}/chat/completions`, {
|
|
58
|
+
method: "POST",
|
|
59
|
+
headers: {
|
|
60
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
61
|
+
"Content-Type": "application/json"
|
|
62
|
+
},
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
model: request.model,
|
|
65
|
+
messages: request.messages,
|
|
66
|
+
max_completion_tokens: request.maxCompletionTokens ?? 1200,
|
|
67
|
+
temperature: request.temperature ?? 0.2,
|
|
68
|
+
...(stream ? {
|
|
69
|
+
stream: true,
|
|
70
|
+
stream_options: { include_usage: true }
|
|
71
|
+
} : {})
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
throw unreachableEndpointError();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export async function listCustomModels(apiKey, baseUrl, dependencies = {}) {
|
|
81
|
+
const response = await fetchCustomModels(apiKey, baseUrl, dependencies);
|
|
82
|
+
if (response.status === 401 || response.status === 403) {
|
|
83
|
+
throw new DevmapError("The custom endpoint rejected the API key.", "Check the key configured for the endpoint and run devmap init again.");
|
|
84
|
+
}
|
|
85
|
+
if (!response.ok) {
|
|
86
|
+
throw new DevmapError(`Custom model lookup failed with HTTP ${response.status}.`, "Check the base URL and that the server is running.");
|
|
87
|
+
}
|
|
88
|
+
return readModelIds(response);
|
|
89
|
+
}
|
|
90
|
+
export async function inspectCustomProvider(apiKey, baseUrl, model, dependencies = {}) {
|
|
91
|
+
const response = await fetchCustomModels(apiKey, baseUrl, dependencies);
|
|
92
|
+
if (response.status === 401 || response.status === 403) {
|
|
93
|
+
throw new DevmapError("The custom endpoint rejected the API key.", "Check the key configured for the endpoint and run devmap init again.");
|
|
94
|
+
}
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new DevmapError(`Custom endpoint validation failed with HTTP ${response.status}.`, "Check the base URL and that the server is running.");
|
|
97
|
+
}
|
|
98
|
+
const modelIds = await readModelIds(response);
|
|
99
|
+
return {
|
|
100
|
+
reachable: true,
|
|
101
|
+
modelAvailable: !model || modelIds.includes(model)
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async function fetchCustomModels(apiKey, baseUrl, dependencies = {}) {
|
|
105
|
+
const fetchImplementation = dependencies.fetch ?? fetch;
|
|
106
|
+
const normalizedBase = normalizeBaseUrl(baseUrl);
|
|
107
|
+
try {
|
|
108
|
+
return await fetchImplementation(`${normalizedBase}/models`, {
|
|
109
|
+
headers: {
|
|
110
|
+
Authorization: `Bearer ${apiKey}`
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
throw unreachableEndpointError();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function readModelIds(response) {
|
|
119
|
+
try {
|
|
120
|
+
const payload = await response.json();
|
|
121
|
+
return (payload.data ?? [])
|
|
122
|
+
.map((model) => model.id)
|
|
123
|
+
.filter((id) => typeof id === "string")
|
|
124
|
+
.sort((a, b) => a.localeCompare(b));
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
throw new DevmapError("The custom endpoint returned an unreadable model list.", "Verify the base URL points to an OpenAI-compatible API and try again.");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async function mapCustomResponseError(response) {
|
|
131
|
+
if (response.status === 401 || response.status === 403) {
|
|
132
|
+
return new DevmapError("The custom endpoint rejected the API key.", "Check the key configured for the endpoint and run devmap init again.");
|
|
133
|
+
}
|
|
134
|
+
if (response.status === 429) {
|
|
135
|
+
return new DevmapError("Custom endpoint rate limit reached.", "Wait briefly or choose another model on the endpoint.");
|
|
136
|
+
}
|
|
137
|
+
if (response.status >= 500) {
|
|
138
|
+
return new DevmapError("The custom endpoint is temporarily unavailable.", "Check that the server is running and try again shortly.");
|
|
139
|
+
}
|
|
140
|
+
return new DevmapError(`The custom endpoint could not complete the request (HTTP ${response.status}).`, "Run devmap doctor and verify the selected model.");
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=custom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../src/ai/custom.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/groq.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/ai/groq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,
|
|
1
|
+
{"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/ai/groq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACf,MAAM,YAAY,CAAC;AAepB,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;CAYvB,CAAC;AA2CX,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,qBAAa,UAAW,YAAW,QAAQ;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAe;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;gBAG7C,MAAM,EAAE,MAAM,EAC/B,YAAY,GAAE,sBAA2B;IAMrC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBnE,MAAM,CACV,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,kBAAkB,CAAC;YAkBhB,YAAY;YA2BZ,kBAAkB;YAkClB,wBAAwB;YAuBxB,WAAW;CA8B1B;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAM,GACvD,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,GAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAM,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAsBjC"}
|
package/dist/ai/groq.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DevmapError } from "../utils/errors.js";
|
|
2
|
+
import { normalizeUsage, parseSseStream, readCompletionPayload } from "./openaiCompatibleStream.js";
|
|
2
3
|
const GROQ_MODELS_URL = "https://api.groq.com/openai/v1/models";
|
|
3
4
|
const GROQ_CHAT_COMPLETIONS_URL = "https://api.groq.com/openai/v1/chat/completions";
|
|
4
5
|
const DEFAULT_RATE_LIMIT_DELAY_MS = 1000;
|
|
@@ -40,6 +41,14 @@ const PREFERRED_MODELS = [
|
|
|
40
41
|
"openai/gpt-oss-20b",
|
|
41
42
|
"qwen/qwen3.6-27b",
|
|
42
43
|
];
|
|
44
|
+
const GROQ_PAYLOAD_MESSAGES = {
|
|
45
|
+
unreadable: () => new DevmapError("Groq returned an unreadable response.", "Try again shortly or check https://status.groq.com.")
|
|
46
|
+
};
|
|
47
|
+
const GROQ_STREAM_MESSAGES = {
|
|
48
|
+
missingBody: () => new DevmapError("Groq returned an unreadable streaming response.", "Try again shortly or run devmap doctor."),
|
|
49
|
+
unreadable: () => new DevmapError("Groq returned an unreadable streaming response.", "Try again shortly or check https://status.groq.com."),
|
|
50
|
+
interrupted: () => new DevmapError("The Groq response stream ended unexpectedly.", "Try again or run devmap doctor if the problem continues.")
|
|
51
|
+
};
|
|
43
52
|
export class GroqClient {
|
|
44
53
|
apiKey;
|
|
45
54
|
fetchImplementation;
|
|
@@ -82,7 +91,7 @@ export class GroqClient {
|
|
|
82
91
|
if (!response.ok) {
|
|
83
92
|
return readFailedRequest(response);
|
|
84
93
|
}
|
|
85
|
-
const payload = await readCompletionPayload(response);
|
|
94
|
+
const payload = await readCompletionPayload(response, GROQ_PAYLOAD_MESSAGES);
|
|
86
95
|
const content = payload.choices[0]?.message?.content?.trim();
|
|
87
96
|
if (!content) {
|
|
88
97
|
return emptyResponseResult();
|
|
@@ -101,7 +110,10 @@ export class GroqClient {
|
|
|
101
110
|
if (!response.ok) {
|
|
102
111
|
return readFailedRequest(response);
|
|
103
112
|
}
|
|
104
|
-
const payload = await
|
|
113
|
+
const payload = await parseSseStream(response, model, onDelta, {
|
|
114
|
+
messages: GROQ_STREAM_MESSAGES,
|
|
115
|
+
readExtraUsage: (chunk) => chunk.x_groq?.usage
|
|
116
|
+
});
|
|
105
117
|
if (!payload.content.trim()) {
|
|
106
118
|
return emptyResponseResult();
|
|
107
119
|
}
|
|
@@ -203,19 +215,6 @@ function emptyResponseResult() {
|
|
|
203
215
|
error: new DevmapError("Groq returned an empty response.", "Try the question again or run devmap doctor.")
|
|
204
216
|
};
|
|
205
217
|
}
|
|
206
|
-
async function readCompletionPayload(response) {
|
|
207
|
-
try {
|
|
208
|
-
const payload = await response.json();
|
|
209
|
-
return {
|
|
210
|
-
model: payload.model,
|
|
211
|
-
choices: Array.isArray(payload.choices) ? payload.choices : [],
|
|
212
|
-
usage: payload.usage
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
catch {
|
|
216
|
-
throw new DevmapError("Groq returned an unreadable response.", "Try again shortly or check https://status.groq.com.");
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
218
|
async function readProviderError(response) {
|
|
220
219
|
try {
|
|
221
220
|
const payload = await response.json();
|
|
@@ -227,78 +226,6 @@ async function readProviderError(response) {
|
|
|
227
226
|
return `HTTP ${response.status}`;
|
|
228
227
|
}
|
|
229
228
|
}
|
|
230
|
-
async function readCompletionStream(response, requestedModel, onDelta) {
|
|
231
|
-
if (!response.body) {
|
|
232
|
-
throw new DevmapError("Groq returned an unreadable streaming response.", "Try again shortly or run devmap doctor.");
|
|
233
|
-
}
|
|
234
|
-
const reader = response.body.getReader();
|
|
235
|
-
const decoder = new TextDecoder();
|
|
236
|
-
let buffer = "";
|
|
237
|
-
let content = "";
|
|
238
|
-
let model = requestedModel;
|
|
239
|
-
let usage;
|
|
240
|
-
const consumeEvent = (event) => {
|
|
241
|
-
const data = event
|
|
242
|
-
.split(/\r?\n/)
|
|
243
|
-
.filter((line) => line.startsWith("data:"))
|
|
244
|
-
.map((line) => line.slice(5).trimStart())
|
|
245
|
-
.join("\n");
|
|
246
|
-
if (!data)
|
|
247
|
-
return false;
|
|
248
|
-
if (data.trim() === "[DONE]")
|
|
249
|
-
return true;
|
|
250
|
-
let payload;
|
|
251
|
-
try {
|
|
252
|
-
payload = JSON.parse(data);
|
|
253
|
-
}
|
|
254
|
-
catch {
|
|
255
|
-
throw new DevmapError("Groq returned an unreadable streaming response.", "Try again shortly or check https://status.groq.com.");
|
|
256
|
-
}
|
|
257
|
-
model = payload.model || model;
|
|
258
|
-
const delta = payload.choices?.[0]?.delta?.content;
|
|
259
|
-
if (delta) {
|
|
260
|
-
content += delta;
|
|
261
|
-
onDelta(delta);
|
|
262
|
-
}
|
|
263
|
-
const rawUsage = payload.usage ?? payload.x_groq?.usage;
|
|
264
|
-
if (rawUsage) {
|
|
265
|
-
usage = normalizeUsage(rawUsage);
|
|
266
|
-
}
|
|
267
|
-
return false;
|
|
268
|
-
};
|
|
269
|
-
try {
|
|
270
|
-
let done = false;
|
|
271
|
-
while (!done) {
|
|
272
|
-
const readResult = await reader.read();
|
|
273
|
-
buffer += decoder.decode(readResult.value, { stream: !readResult.done });
|
|
274
|
-
const events = buffer.split(/\r?\n\r?\n/);
|
|
275
|
-
buffer = events.pop() ?? "";
|
|
276
|
-
for (const event of events) {
|
|
277
|
-
if (consumeEvent(event)) {
|
|
278
|
-
done = true;
|
|
279
|
-
break;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
if (readResult.done) {
|
|
283
|
-
if (!done && buffer.trim()) {
|
|
284
|
-
consumeEvent(buffer);
|
|
285
|
-
}
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
catch (error) {
|
|
291
|
-
if (error instanceof DevmapError) {
|
|
292
|
-
throw error;
|
|
293
|
-
}
|
|
294
|
-
throw new DevmapError("The Groq response stream ended unexpectedly.", "Try again or run devmap doctor if the problem continues.");
|
|
295
|
-
}
|
|
296
|
-
return {
|
|
297
|
-
content,
|
|
298
|
-
model,
|
|
299
|
-
...(usage ? { usage } : {})
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
229
|
function mapGroqError(status, providerMessage) {
|
|
303
230
|
if (status === 401 || status === 403) {
|
|
304
231
|
return new DevmapError("The Groq API key is invalid or no longer authorized.", "Run devmap init again with a valid Groq API key.");
|
|
@@ -332,13 +259,6 @@ function readRetryDelay(response) {
|
|
|
332
259
|
}
|
|
333
260
|
return Math.min(seconds * 1000, MAX_RATE_LIMIT_DELAY_MS);
|
|
334
261
|
}
|
|
335
|
-
function normalizeUsage(usage) {
|
|
336
|
-
return {
|
|
337
|
-
promptTokens: usage.prompt_tokens ?? 0,
|
|
338
|
-
completionTokens: usage.completion_tokens ?? 0,
|
|
339
|
-
totalTokens: usage.total_tokens ?? 0
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
262
|
function wait(milliseconds) {
|
|
343
263
|
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
344
264
|
}
|
package/dist/ai/groq.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/ai/groq.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/ai/groq.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DevmapError } from "../utils/errors.js";
|
|
2
|
+
import type { AiDeltaHandler, AiTokenUsage } from "./types.js";
|
|
3
|
+
export type RawUsage = {
|
|
4
|
+
prompt_tokens?: number;
|
|
5
|
+
completion_tokens?: number;
|
|
6
|
+
total_tokens?: number;
|
|
7
|
+
};
|
|
8
|
+
export type CompletionPayload = {
|
|
9
|
+
model?: string;
|
|
10
|
+
choices: Array<{
|
|
11
|
+
message?: {
|
|
12
|
+
content?: string | null;
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
15
|
+
usage?: RawUsage;
|
|
16
|
+
};
|
|
17
|
+
export type StreamChunkPayload = {
|
|
18
|
+
model?: string;
|
|
19
|
+
choices?: Array<{
|
|
20
|
+
delta?: {
|
|
21
|
+
content?: string | null;
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
usage?: RawUsage;
|
|
25
|
+
x_groq?: {
|
|
26
|
+
usage?: RawUsage;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export type PayloadUnreadableMessages = {
|
|
30
|
+
unreadable: () => DevmapError;
|
|
31
|
+
};
|
|
32
|
+
export type StreamInterruptedMessages = {
|
|
33
|
+
missingBody: () => DevmapError;
|
|
34
|
+
unreadable: () => DevmapError;
|
|
35
|
+
interrupted: () => DevmapError;
|
|
36
|
+
};
|
|
37
|
+
export type ParseSseStreamOptions = {
|
|
38
|
+
messages: StreamInterruptedMessages;
|
|
39
|
+
readExtraUsage?: (payload: StreamChunkPayload) => RawUsage | undefined;
|
|
40
|
+
};
|
|
41
|
+
export declare function parseSseStream(response: Response, requestedModel: string, onDelta: AiDeltaHandler, options: ParseSseStreamOptions): Promise<{
|
|
42
|
+
content: string;
|
|
43
|
+
model: string;
|
|
44
|
+
usage?: AiTokenUsage;
|
|
45
|
+
}>;
|
|
46
|
+
export declare function readCompletionPayload(response: Response, messages: PayloadUnreadableMessages): Promise<CompletionPayload>;
|
|
47
|
+
export declare function normalizeUsage(usage: RawUsage): AiTokenUsage;
|
|
48
|
+
//# sourceMappingURL=openaiCompatibleStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openaiCompatibleStream.d.ts","sourceRoot":"","sources":["../../src/ai/openaiCompatibleStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,QAAQ,GAAG;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SACzB,CAAC;KACH,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE;YACN,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SACzB,CAAC;KACH,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,QAAQ,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,WAAW,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,WAAW,CAAC;IAC/B,UAAU,EAAE,MAAM,WAAW,CAAC;IAC9B,WAAW,EAAE,MAAM,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,QAAQ,GAAG,SAAS,CAAC;CACxE,CAAC;AAEF,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,CAAC,CA+ED;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,yBAAyB,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAW5B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAM5D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { DevmapError } from "../utils/errors.js";
|
|
2
|
+
export async function parseSseStream(response, requestedModel, onDelta, options) {
|
|
3
|
+
if (!response.body) {
|
|
4
|
+
throw options.messages.missingBody();
|
|
5
|
+
}
|
|
6
|
+
const reader = response.body.getReader();
|
|
7
|
+
const decoder = new TextDecoder();
|
|
8
|
+
let buffer = "";
|
|
9
|
+
let content = "";
|
|
10
|
+
let model = requestedModel;
|
|
11
|
+
let usage;
|
|
12
|
+
const consumeEvent = (event) => {
|
|
13
|
+
const data = event
|
|
14
|
+
.split(/\r?\n/)
|
|
15
|
+
.filter((line) => line.startsWith("data:"))
|
|
16
|
+
.map((line) => line.slice(5).trimStart())
|
|
17
|
+
.join("\n");
|
|
18
|
+
if (!data)
|
|
19
|
+
return false;
|
|
20
|
+
if (data.trim() === "[DONE]")
|
|
21
|
+
return true;
|
|
22
|
+
let payload;
|
|
23
|
+
try {
|
|
24
|
+
payload = JSON.parse(data);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw options.messages.unreadable();
|
|
28
|
+
}
|
|
29
|
+
model = payload.model || model;
|
|
30
|
+
const delta = payload.choices?.[0]?.delta?.content;
|
|
31
|
+
if (delta) {
|
|
32
|
+
content += delta;
|
|
33
|
+
onDelta(delta);
|
|
34
|
+
}
|
|
35
|
+
const rawUsage = payload.usage ?? options.readExtraUsage?.(payload);
|
|
36
|
+
if (rawUsage) {
|
|
37
|
+
usage = normalizeUsage(rawUsage);
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
};
|
|
41
|
+
try {
|
|
42
|
+
let done = false;
|
|
43
|
+
while (!done) {
|
|
44
|
+
const readResult = await reader.read();
|
|
45
|
+
buffer += decoder.decode(readResult.value, { stream: !readResult.done });
|
|
46
|
+
const events = buffer.split(/\r?\n\r?\n/);
|
|
47
|
+
buffer = events.pop() ?? "";
|
|
48
|
+
for (const event of events) {
|
|
49
|
+
if (consumeEvent(event)) {
|
|
50
|
+
done = true;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (readResult.done) {
|
|
55
|
+
if (!done && buffer.trim()) {
|
|
56
|
+
consumeEvent(buffer);
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (error instanceof DevmapError) {
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
throw options.messages.interrupted();
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
content,
|
|
70
|
+
model,
|
|
71
|
+
...(usage ? { usage } : {})
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export async function readCompletionPayload(response, messages) {
|
|
75
|
+
try {
|
|
76
|
+
const payload = await response.json();
|
|
77
|
+
return {
|
|
78
|
+
model: payload.model,
|
|
79
|
+
choices: Array.isArray(payload.choices) ? payload.choices : [],
|
|
80
|
+
usage: payload.usage
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
throw messages.unreadable();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export function normalizeUsage(usage) {
|
|
88
|
+
return {
|
|
89
|
+
promptTokens: usage.prompt_tokens ?? 0,
|
|
90
|
+
completionTokens: usage.completion_tokens ?? 0,
|
|
91
|
+
totalTokens: usage.total_tokens ?? 0
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=openaiCompatibleStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openaiCompatibleStream.js","sourceRoot":"","sources":["../../src/ai/openaiCompatibleStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,
|
|
1
|
+
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACf,MAAM,YAAY,CAAC;AAWpB,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAmBvD,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,qBAAa,gBAAiB,YAAW,QAAQ;IAI7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAe;gBAGhC,MAAM,EAAE,MAAM,EAC/B,YAAY,GAAE,4BAAiC;IAK3C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoBnE,MAAM,CACV,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,kBAAkB,CAAC;YAuBhB,WAAW;CA6B1B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,4BAAiC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,GAAE,4BAAiC,GAC9C,OAAO,CAAC,4BAA4B,CAAC,CA4BvC"}
|