@flaid/devmap 0.2.0 → 0.3.0

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.
Files changed (40) hide show
  1. package/README.md +16 -6
  2. package/dist/ai/custom.d.ts +20 -0
  3. package/dist/ai/custom.d.ts.map +1 -0
  4. package/dist/ai/custom.js +142 -0
  5. package/dist/ai/custom.js.map +1 -0
  6. package/dist/ai/groq.d.ts.map +1 -1
  7. package/dist/ai/groq.js +14 -94
  8. package/dist/ai/groq.js.map +1 -1
  9. package/dist/ai/openaiCompatibleStream.d.ts +48 -0
  10. package/dist/ai/openaiCompatibleStream.d.ts.map +1 -0
  11. package/dist/ai/openaiCompatibleStream.js +94 -0
  12. package/dist/ai/openaiCompatibleStream.js.map +1 -0
  13. package/dist/ai/openrouter.d.ts.map +1 -1
  14. package/dist/ai/openrouter.js +22 -90
  15. package/dist/ai/openrouter.js.map +1 -1
  16. package/dist/ai/provider.d.ts +1 -1
  17. package/dist/ai/provider.d.ts.map +1 -1
  18. package/dist/ai/provider.js +18 -16
  19. package/dist/ai/provider.js.map +1 -1
  20. package/dist/ai/registry.d.ts +24 -0
  21. package/dist/ai/registry.d.ts.map +1 -0
  22. package/dist/ai/registry.js +47 -0
  23. package/dist/ai/registry.js.map +1 -0
  24. package/dist/commands/config.d.ts.map +1 -1
  25. package/dist/commands/config.js +14 -6
  26. package/dist/commands/config.js.map +1 -1
  27. package/dist/commands/doctor.d.ts +1 -1
  28. package/dist/commands/doctor.d.ts.map +1 -1
  29. package/dist/commands/doctor.js +2 -2
  30. package/dist/commands/doctor.js.map +1 -1
  31. package/dist/commands/init.d.ts +3 -3
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +81 -47
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/index.js +0 -0
  36. package/dist/utils/config.d.ts +3 -1
  37. package/dist/utils/config.d.ts.map +1 -1
  38. package/dist/utils/config.js +13 -1
  39. package/dist/utils/config.js.map +1 -1
  40. package/package.json +11 -10
package/README.md CHANGED
@@ -1,10 +1,14 @@
1
1
  # DevMap
2
2
 
3
- Understand any codebase in minutes, not days.
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
- DevMap is a CLI that combines static analysis with optional AI-powered
6
- interpretation. It maps project structure and generates reusable context
7
- without sending an entire repository to an AI model.
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
- - A Groq or OpenRouter API key for AI-powered analysis and answers
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 OpenRouter with the arrow keys during:
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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"}
@@ -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,EAEf,MAAM,YAAY,CAAC;AAQpB,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;CAYvB,CAAC;AAqBX,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;YA0BlB,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"}
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 readCompletionStream(response, model, onDelta);
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
  }
@@ -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,EAEf,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,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;YAMhB,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"}
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"}