@sean.holung/minicode 0.3.6 → 0.3.7
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 +2 -1
- package/dist/scripts/run-benchmarks.js +1 -0
- package/dist/src/agent/config.js +2 -0
- package/dist/src/agent/editable-config.js +6 -0
- package/dist/src/serve/mcp-server.js +19 -13
- package/dist/src/serve/server.js +29 -0
- package/dist/src/shared/symbol-search.js +156 -0
- package/dist/src/tools/search-code-map.js +27 -35
- package/dist/src/web/app.js +103 -23
- package/dist/src/web/index.html +16 -0
- package/dist/src/web/style.css +48 -0
- package/dist/tests/config-api.test.js +5 -0
- package/dist/tests/config.test.js +9 -0
- package/dist/tests/graph-onboarding.test.js +12 -0
- package/dist/tests/mcp-and-plugin.test.js +3 -0
- package/dist/tests/search-code-map.test.js +9 -0
- package/dist/tests/serve.integration.test.js +26 -0
- package/dist/tests/system-prompt.test.js +1 -0
- package/dist/tests/test-utils.js +1 -0
- package/node_modules/@minicode/agent-sdk/dist/src/agent/types.d.ts +1 -0
- package/node_modules/@minicode/agent-sdk/dist/src/agent/types.d.ts.map +1 -1
- package/node_modules/@minicode/agent-sdk/dist/src/model/client.d.ts +8 -1
- package/node_modules/@minicode/agent-sdk/dist/src/model/client.d.ts.map +1 -1
- package/node_modules/@minicode/agent-sdk/dist/src/model/client.js +143 -27
- package/node_modules/@minicode/agent-sdk/dist/src/model/client.js.map +1 -1
- package/node_modules/@minicode/agent-sdk/dist/tests/model-client-openai.test.js +87 -0
- package/node_modules/@minicode/agent-sdk/dist/tests/model-client-openai.test.js.map +1 -1
- package/node_modules/@minicode/agent-sdk/dist/tests/test-utils.d.ts.map +1 -1
- package/node_modules/@minicode/agent-sdk/dist/tests/test-utils.js +1 -0
- package/node_modules/@minicode/agent-sdk/dist/tests/test-utils.js.map +1 -1
- package/node_modules/@minicode/agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/src/web/style.css
CHANGED
|
@@ -862,6 +862,13 @@ footer {
|
|
|
862
862
|
width: min(640px, calc(100vw - 32px));
|
|
863
863
|
}
|
|
864
864
|
|
|
865
|
+
.modal-panel-file-preview {
|
|
866
|
+
width: min(1200px, 80vw);
|
|
867
|
+
height: 80vh;
|
|
868
|
+
max-width: 80vw;
|
|
869
|
+
max-height: 80vh;
|
|
870
|
+
}
|
|
871
|
+
|
|
865
872
|
.modal-header,
|
|
866
873
|
.modal-footer,
|
|
867
874
|
.settings-toolbar {
|
|
@@ -887,6 +894,29 @@ footer {
|
|
|
887
894
|
color: var(--text-dim);
|
|
888
895
|
}
|
|
889
896
|
|
|
897
|
+
.file-preview-body {
|
|
898
|
+
flex: 1;
|
|
899
|
+
min-height: 0;
|
|
900
|
+
padding: 0 20px 20px;
|
|
901
|
+
overflow: auto;
|
|
902
|
+
background: rgba(15, 16, 26, 0.92);
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
.file-preview-code {
|
|
906
|
+
margin: 0;
|
|
907
|
+
min-height: 100%;
|
|
908
|
+
padding: 18px;
|
|
909
|
+
border-radius: 10px;
|
|
910
|
+
background: var(--bg);
|
|
911
|
+
border: 1px solid var(--border);
|
|
912
|
+
color: var(--text);
|
|
913
|
+
font-size: 12px;
|
|
914
|
+
line-height: 1.6;
|
|
915
|
+
overflow: auto;
|
|
916
|
+
white-space: pre;
|
|
917
|
+
font-family: var(--font-mono);
|
|
918
|
+
}
|
|
919
|
+
|
|
890
920
|
.settings-toolbar {
|
|
891
921
|
display: flex;
|
|
892
922
|
align-items: flex-end;
|
|
@@ -1781,6 +1811,24 @@ main::-webkit-scrollbar-thumb {
|
|
|
1781
1811
|
margin-bottom: 12px;
|
|
1782
1812
|
}
|
|
1783
1813
|
|
|
1814
|
+
.detail-file-link {
|
|
1815
|
+
padding: 0;
|
|
1816
|
+
border: 0;
|
|
1817
|
+
background: none;
|
|
1818
|
+
color: inherit;
|
|
1819
|
+
font: inherit;
|
|
1820
|
+
text-align: left;
|
|
1821
|
+
text-decoration: underline;
|
|
1822
|
+
text-decoration-color: rgba(124, 92, 255, 0.35);
|
|
1823
|
+
text-underline-offset: 2px;
|
|
1824
|
+
cursor: pointer;
|
|
1825
|
+
}
|
|
1826
|
+
|
|
1827
|
+
.detail-file-link:hover {
|
|
1828
|
+
color: var(--text);
|
|
1829
|
+
text-decoration-color: var(--accent);
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1784
1832
|
.detail-signature {
|
|
1785
1833
|
background: var(--bg);
|
|
1786
1834
|
border: 1px solid var(--border);
|
|
@@ -89,6 +89,11 @@ test("GET /api/config returns structured editable settings payload", async () =>
|
|
|
89
89
|
assert.equal(maxSteps?.envValue, null);
|
|
90
90
|
assert.equal(maxSteps?.overriddenByEnv, false);
|
|
91
91
|
assert.match(maxSteps?.description ?? "", /Turn call limit/);
|
|
92
|
+
const modelTimeout = body.settings.entries.find((entry) => entry.key === "modelTimeoutSeconds");
|
|
93
|
+
assert.equal(modelTimeout?.type, "number");
|
|
94
|
+
assert.equal(modelTimeout?.envVar, "MODEL_TIMEOUT_SECONDS");
|
|
95
|
+
assert.equal(modelTimeout?.effectiveValue, 60);
|
|
96
|
+
assert.match(modelTimeout?.description ?? "", /start responding/);
|
|
92
97
|
});
|
|
93
98
|
});
|
|
94
99
|
test("POST /api/config persists global settings and returns updated metadata", async () => {
|
|
@@ -84,3 +84,12 @@ test("loadAgentConfig appends COMMAND_DENYLIST patterns from env", async () => {
|
|
|
84
84
|
assert.ok(serialized.includes("custom-danger"));
|
|
85
85
|
assert.ok(serialized.includes("^wipe-db$"));
|
|
86
86
|
});
|
|
87
|
+
test("loadAgentConfig reads model start timeout in seconds", async () => {
|
|
88
|
+
const base = await mkdtemp(path.join(os.tmpdir(), "minicode-config-test-"));
|
|
89
|
+
tempDirs.push(base);
|
|
90
|
+
const minicodeHome = path.join(base, "home");
|
|
91
|
+
await mkdir(minicodeHome, { recursive: true });
|
|
92
|
+
await writeFile(path.join(minicodeHome, ".env"), "MODEL=test-model\nMODEL_TIMEOUT_SECONDS=75\n", "utf8");
|
|
93
|
+
const config = await loadAgentConfig("/tmp", { minicodeHome });
|
|
94
|
+
assert.equal(config.modelTimeoutSeconds, 75);
|
|
95
|
+
});
|
|
@@ -24,6 +24,8 @@ test('built HTML contains #cy graph container', () => {
|
|
|
24
24
|
assert.ok(html.includes('id="cy"'), 'HTML should contain the #cy graph container');
|
|
25
25
|
assert.ok(html.includes('id="graph-pane"'), 'HTML should contain the #graph-pane wrapper');
|
|
26
26
|
assert.ok(html.includes('Search symbols or files...'), 'HTML should expose mixed symbol/file search');
|
|
27
|
+
assert.ok(html.includes('id="file-preview-modal"'), 'HTML should contain the file preview modal shell');
|
|
28
|
+
assert.ok(html.includes('id="file-preview-code"'), 'HTML should contain the file preview code surface');
|
|
27
29
|
});
|
|
28
30
|
test('onboarding hint includes user-facing guidance text in built JS', () => {
|
|
29
31
|
const js = readFileSync(join(distWeb, 'app.js'), 'utf-8');
|
|
@@ -61,4 +63,14 @@ test('built JS supports file search results and file-centered neighborhood rende
|
|
|
61
63
|
assert.ok(js.includes('buildGraphSearchResults'), 'JS should use the shared mixed search result helper');
|
|
62
64
|
assert.ok(js.includes('el.dataset.type') && js.includes('focusFileInGraph(id)'), 'JS should branch on file search results when handling selection');
|
|
63
65
|
assert.ok(js.includes('buildFileFocusedSelection'), 'file-focused graph seeding should use the shared file selection helper');
|
|
66
|
+
assert.ok(js.includes('openFilePreview'), 'JS should define a file preview helper for file search selections');
|
|
67
|
+
assert.ok(js.includes('/api/file-source?path='), 'JS should fetch full file contents for the preview modal');
|
|
68
|
+
assert.ok(js.includes('detail-file-link'), 'JS should wire the symbol detail filename into the preview modal');
|
|
69
|
+
});
|
|
70
|
+
test('built CSS contains file preview modal sizing and link styling', () => {
|
|
71
|
+
const css = readFileSync(join(distWeb, 'style.css'), 'utf-8');
|
|
72
|
+
assert.ok(css.includes('.modal-panel-file-preview'), 'CSS should contain the file preview modal panel class');
|
|
73
|
+
assert.ok(css.includes('width: min(1200px, 80vw);'), 'file preview modal should open at roughly 80% width');
|
|
74
|
+
assert.ok(css.includes('height: 80vh;'), 'file preview modal should open at roughly 80% height');
|
|
75
|
+
assert.ok(css.includes('.detail-file-link'), 'CSS should style the clickable filename in the detail panel');
|
|
64
76
|
});
|
|
@@ -42,6 +42,7 @@ test("MCP POST with malformed JSON returns 400 with JSON-RPC error", async () =>
|
|
|
42
42
|
model: "test",
|
|
43
43
|
maxSteps: 10,
|
|
44
44
|
maxTokens: 1024,
|
|
45
|
+
modelTimeoutSeconds: 60,
|
|
45
46
|
maxContextTokens: 4000,
|
|
46
47
|
workspaceRoot: "/tmp/mcp-test",
|
|
47
48
|
commandTimeoutMs: 5000,
|
|
@@ -88,6 +89,7 @@ test("MCP POST without session ID and non-init request returns 400", async () =>
|
|
|
88
89
|
model: "test",
|
|
89
90
|
maxSteps: 10,
|
|
90
91
|
maxTokens: 1024,
|
|
92
|
+
modelTimeoutSeconds: 60,
|
|
91
93
|
maxContextTokens: 4000,
|
|
92
94
|
workspaceRoot: "/tmp/mcp-test",
|
|
93
95
|
commandTimeoutMs: 5000,
|
|
@@ -132,6 +134,7 @@ test("MCP PATCH returns 405", async () => {
|
|
|
132
134
|
model: "test",
|
|
133
135
|
maxSteps: 10,
|
|
134
136
|
maxTokens: 1024,
|
|
137
|
+
modelTimeoutSeconds: 60,
|
|
135
138
|
maxContextTokens: 4000,
|
|
136
139
|
workspaceRoot: "/tmp/mcp-test",
|
|
137
140
|
commandTimeoutMs: 5000,
|
|
@@ -20,6 +20,15 @@ test("search_code_map returns empty when no match", async () => {
|
|
|
20
20
|
const result = await tool.execute({ pattern: "XyZNoSymbol123" });
|
|
21
21
|
assert.ok(result.includes("No symbols matching"));
|
|
22
22
|
});
|
|
23
|
+
test("search_code_map returns similar matches when exact substring lookup fails", async () => {
|
|
24
|
+
const root = path.resolve(import.meta.dirname, "..");
|
|
25
|
+
const projectIndex = await buildProjectIndex(root);
|
|
26
|
+
const tool = createSearchCodeMapTool(projectIndex);
|
|
27
|
+
const result = await tool.execute({ pattern: "ModelRespnse" });
|
|
28
|
+
assert.ok(result.includes('No exact substring matches for "ModelRespnse"'));
|
|
29
|
+
assert.ok(result.includes("Showing similar symbols instead"));
|
|
30
|
+
assert.ok(result.includes("ModelResponse"));
|
|
31
|
+
});
|
|
23
32
|
test("search_code_map appears in tool registry when projectIndex provided", async () => {
|
|
24
33
|
const root = path.resolve(import.meta.dirname, "..");
|
|
25
34
|
const projectIndex = await buildProjectIndex(root);
|
|
@@ -1079,6 +1079,32 @@ test("GET /api/symbols/:name/source returns 500 when file is missing", async ()
|
|
|
1079
1079
|
const body = (await res.json());
|
|
1080
1080
|
assert.ok(body.error.includes("src/foo.ts"));
|
|
1081
1081
|
});
|
|
1082
|
+
test("GET /api/file-source returns full file contents for a workspace file", async () => {
|
|
1083
|
+
const bridge = new MockBridge();
|
|
1084
|
+
const base = await startTestServer(bridge);
|
|
1085
|
+
const wsRoot = "/tmp/test-workspace";
|
|
1086
|
+
mkdirSync(`${wsRoot}/src`, { recursive: true });
|
|
1087
|
+
writeFileSync(`${wsRoot}/src/foo.ts`, "line1\nfunction foo(): void {\n return;\n}\nline5\n");
|
|
1088
|
+
try {
|
|
1089
|
+
const res = await fetch(`${base}/api/file-source?path=${encodeURIComponent("src/foo.ts")}`);
|
|
1090
|
+
assert.equal(res.status, 200);
|
|
1091
|
+
const body = (await res.json());
|
|
1092
|
+
assert.equal(body.filePath, "src/foo.ts");
|
|
1093
|
+
assert.ok(body.source.includes("function foo(): void"));
|
|
1094
|
+
assert.ok(body.source.includes("line5"));
|
|
1095
|
+
}
|
|
1096
|
+
finally {
|
|
1097
|
+
rmSync(wsRoot, { recursive: true, force: true });
|
|
1098
|
+
}
|
|
1099
|
+
});
|
|
1100
|
+
test("GET /api/file-source rejects path traversal", async () => {
|
|
1101
|
+
const bridge = new MockBridge();
|
|
1102
|
+
const base = await startTestServer(bridge);
|
|
1103
|
+
const res = await fetch(`${base}/api/file-source?path=${encodeURIComponent("../secret.txt")}`);
|
|
1104
|
+
assert.equal(res.status, 403);
|
|
1105
|
+
const body = (await res.json());
|
|
1106
|
+
assert.ok(body.error.includes("Invalid workspace file path"));
|
|
1107
|
+
});
|
|
1082
1108
|
// ── Annotations API tests ──
|
|
1083
1109
|
test("GET /api/annotations returns empty annotations initially", async () => {
|
|
1084
1110
|
const bridge = new MockBridge();
|
package/dist/tests/test-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
1
2
|
import type { AgentConfig, ModelClient, ModelInfo, ModelResponse, ReasoningEffort, SessionMessage, ToolSchema } from "../agent/types.js";
|
|
2
3
|
export declare class AnthropicModelClient implements ModelClient {
|
|
3
4
|
private readonly client;
|
|
4
|
-
|
|
5
|
+
private readonly timeoutSeconds;
|
|
6
|
+
constructor(apiKey?: string | undefined, options?: {
|
|
7
|
+
timeoutSeconds?: number;
|
|
8
|
+
client?: Anthropic;
|
|
9
|
+
});
|
|
5
10
|
chat(params: {
|
|
6
11
|
model: string;
|
|
7
12
|
system: string;
|
|
@@ -18,10 +23,12 @@ export declare class OpenAICompatibleModelClient implements ModelClient {
|
|
|
18
23
|
private readonly baseUrl;
|
|
19
24
|
private readonly apiKey;
|
|
20
25
|
private readonly fetchImpl;
|
|
26
|
+
private readonly timeoutSeconds;
|
|
21
27
|
constructor(params?: {
|
|
22
28
|
baseUrl?: string;
|
|
23
29
|
apiKey?: string;
|
|
24
30
|
fetchImpl?: typeof fetch;
|
|
31
|
+
timeoutSeconds?: number;
|
|
25
32
|
});
|
|
26
33
|
chat(params: {
|
|
27
34
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/model/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/model/client.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EAEd,UAAU,EACX,MAAM,mBAAmB,CAAC;AA8a3B,qBAAa,oBAAqB,YAAW,WAAW;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAGtC,MAAM,qBAAgC,EACtC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,CAAA;KAAE;IAiBrD,IAAI,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,cAAc,EAAE,CAAC;QAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,aAAa,CAAC;IAuDpB,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAYzC;AA4GD,qBAAa,2BAA4B,YAAW,WAAW;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,MAAM,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAcK,IAAI,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,cAAc,EAAE,CAAC;QAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,aAAa,CAAC;IA2EpB,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAmBzC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAclE"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import process from "node:process";
|
|
2
2
|
import { setTimeout as sleep } from "node:timers/promises";
|
|
3
3
|
import Anthropic from "@anthropic-ai/sdk";
|
|
4
|
+
const DEFAULT_MODEL_START_TIMEOUT_SECONDS = 60;
|
|
5
|
+
const RETRY_ATTEMPTS = 3;
|
|
6
|
+
const RETRY_BASE_DELAY_MS = 500;
|
|
4
7
|
function toAnthropicMessages(messages) {
|
|
5
8
|
const converted = [];
|
|
6
9
|
for (const message of messages) {
|
|
@@ -76,10 +79,52 @@ function parseResponse(response) {
|
|
|
76
79
|
},
|
|
77
80
|
};
|
|
78
81
|
}
|
|
82
|
+
class ModelStartTimeoutError extends Error {
|
|
83
|
+
timeoutSeconds;
|
|
84
|
+
constructor(timeoutSeconds) {
|
|
85
|
+
super(`Model request did not start responding within ${timeoutSeconds}s.`);
|
|
86
|
+
this.name = "ModelStartTimeoutError";
|
|
87
|
+
this.timeoutSeconds = timeoutSeconds;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
class OpenAICompatibleHttpError extends Error {
|
|
91
|
+
status;
|
|
92
|
+
bodyText;
|
|
93
|
+
constructor(status, bodyText) {
|
|
94
|
+
super(`OpenAI-compatible request failed (${status}): ${bodyText}`);
|
|
95
|
+
this.name = "OpenAICompatibleHttpError";
|
|
96
|
+
this.status = status;
|
|
97
|
+
this.bodyText = bodyText;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
79
100
|
function isAbortError(error) {
|
|
80
|
-
return error instanceof Error && error.name === "AbortError"
|
|
101
|
+
return ((error instanceof Error && error.name === "AbortError") ||
|
|
102
|
+
error instanceof Anthropic.APIUserAbortError);
|
|
103
|
+
}
|
|
104
|
+
function isOpenAICompatibleNetworkError(error) {
|
|
105
|
+
return (error instanceof TypeError &&
|
|
106
|
+
/fetch failed|network|socket|timed out|econnreset|econnrefused|enotfound|eai_again|terminated|und_err/i.test(error.message));
|
|
107
|
+
}
|
|
108
|
+
function isRetryableOpenAICompatibleError(error) {
|
|
109
|
+
if (error instanceof ModelStartTimeoutError) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (error instanceof OpenAICompatibleHttpError) {
|
|
113
|
+
return (error.status === 408 ||
|
|
114
|
+
error.status === 429 ||
|
|
115
|
+
error.status >= 500);
|
|
116
|
+
}
|
|
117
|
+
return isOpenAICompatibleNetworkError(error);
|
|
118
|
+
}
|
|
119
|
+
function isRetryableAnthropicError(error) {
|
|
120
|
+
return (error instanceof ModelStartTimeoutError ||
|
|
121
|
+
error instanceof Anthropic.APIConnectionError ||
|
|
122
|
+
error instanceof Anthropic.APIConnectionTimeoutError ||
|
|
123
|
+
error instanceof Anthropic.RateLimitError ||
|
|
124
|
+
error instanceof Anthropic.InternalServerError);
|
|
81
125
|
}
|
|
82
|
-
async function withRetry(fn,
|
|
126
|
+
async function withRetry(fn, options = {}) {
|
|
127
|
+
const attempts = options.attempts ?? RETRY_ATTEMPTS;
|
|
83
128
|
let lastError;
|
|
84
129
|
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
85
130
|
try {
|
|
@@ -90,15 +135,65 @@ async function withRetry(fn, attempts = 3) {
|
|
|
90
135
|
if (isAbortError(error)) {
|
|
91
136
|
throw error;
|
|
92
137
|
}
|
|
138
|
+
if (options.shouldRetry && !options.shouldRetry(error)) {
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
93
141
|
if (attempt === attempts) {
|
|
94
142
|
break;
|
|
95
143
|
}
|
|
96
|
-
const delayMs =
|
|
144
|
+
const delayMs = RETRY_BASE_DELAY_MS * 2 ** (attempt - 1);
|
|
97
145
|
await sleep(delayMs);
|
|
98
146
|
}
|
|
99
147
|
}
|
|
100
148
|
throw lastError;
|
|
101
149
|
}
|
|
150
|
+
function createTimeoutSignal(timeoutSeconds, parentSignal) {
|
|
151
|
+
const controller = new AbortController();
|
|
152
|
+
let timedOut = false;
|
|
153
|
+
let timeoutHandle;
|
|
154
|
+
const timeoutMs = timeoutSeconds * 1000;
|
|
155
|
+
const handleParentAbort = () => {
|
|
156
|
+
controller.abort(parentSignal?.reason);
|
|
157
|
+
};
|
|
158
|
+
if (parentSignal?.aborted) {
|
|
159
|
+
controller.abort(parentSignal.reason);
|
|
160
|
+
}
|
|
161
|
+
else if (parentSignal) {
|
|
162
|
+
parentSignal.addEventListener("abort", handleParentAbort, { once: true });
|
|
163
|
+
}
|
|
164
|
+
timeoutHandle = setTimeout(() => {
|
|
165
|
+
timedOut = true;
|
|
166
|
+
controller.abort(new ModelStartTimeoutError(timeoutSeconds));
|
|
167
|
+
}, timeoutMs);
|
|
168
|
+
return {
|
|
169
|
+
signal: controller.signal,
|
|
170
|
+
cleanup: () => {
|
|
171
|
+
if (timeoutHandle) {
|
|
172
|
+
clearTimeout(timeoutHandle);
|
|
173
|
+
}
|
|
174
|
+
parentSignal?.removeEventListener("abort", handleParentAbort);
|
|
175
|
+
},
|
|
176
|
+
didTimeout: () => timedOut,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
async function withResponseStartTimeout(timeoutSeconds, parentSignal, fn) {
|
|
180
|
+
const timeoutState = createTimeoutSignal(timeoutSeconds, parentSignal);
|
|
181
|
+
try {
|
|
182
|
+
return await fn(timeoutState.signal);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error instanceof ModelStartTimeoutError) {
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
if (timeoutState.didTimeout() && isAbortError(error)) {
|
|
189
|
+
throw new ModelStartTimeoutError(timeoutSeconds);
|
|
190
|
+
}
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
timeoutState.cleanup();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
102
197
|
function toOpenAICompatibleMessages(system, messages) {
|
|
103
198
|
const converted = [
|
|
104
199
|
{
|
|
@@ -209,11 +304,18 @@ function effortToBudgetFraction(effort) {
|
|
|
209
304
|
}
|
|
210
305
|
export class AnthropicModelClient {
|
|
211
306
|
client;
|
|
212
|
-
|
|
213
|
-
|
|
307
|
+
timeoutSeconds;
|
|
308
|
+
constructor(apiKey = process.env.ANTHROPIC_API_KEY, options) {
|
|
309
|
+
if (!apiKey && !options?.client) {
|
|
214
310
|
throw new Error("Missing ANTHROPIC_API_KEY. Set the environment variable or pass it to the constructor.");
|
|
215
311
|
}
|
|
216
|
-
this.
|
|
312
|
+
this.timeoutSeconds = options?.timeoutSeconds ?? DEFAULT_MODEL_START_TIMEOUT_SECONDS;
|
|
313
|
+
this.client =
|
|
314
|
+
options?.client ??
|
|
315
|
+
new Anthropic({
|
|
316
|
+
apiKey,
|
|
317
|
+
maxRetries: 0,
|
|
318
|
+
});
|
|
217
319
|
}
|
|
218
320
|
async chat(params) {
|
|
219
321
|
const baseParams = {
|
|
@@ -233,25 +335,34 @@ export class AnthropicModelClient {
|
|
|
233
335
|
}
|
|
234
336
|
: {};
|
|
235
337
|
const requestParams = { ...baseParams, ...thinkingParam };
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (params.signal) {
|
|
241
|
-
params.signal.addEventListener("abort", () => stream.abort(), { once: true });
|
|
242
|
-
}
|
|
338
|
+
const requestOptions = params.signal ? { signal: params.signal } : undefined;
|
|
339
|
+
return withRetry(async () => {
|
|
340
|
+
const stream = this.client.messages.stream(requestParams, requestOptions);
|
|
341
|
+
if (params.onStream) {
|
|
243
342
|
stream.on("text", (text) => {
|
|
244
|
-
onStream(text);
|
|
343
|
+
params.onStream?.(text);
|
|
245
344
|
});
|
|
246
|
-
|
|
247
|
-
|
|
345
|
+
}
|
|
346
|
+
await withResponseStartTimeout(this.timeoutSeconds, params.signal, async (signal) => {
|
|
347
|
+
const abortStream = () => stream.abort();
|
|
348
|
+
if (signal.aborted) {
|
|
349
|
+
abortStream();
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
signal.addEventListener("abort", abortStream, { once: true });
|
|
353
|
+
}
|
|
354
|
+
try {
|
|
355
|
+
await stream.emitted("connect");
|
|
356
|
+
}
|
|
357
|
+
finally {
|
|
358
|
+
signal.removeEventListener("abort", abortStream);
|
|
359
|
+
}
|
|
248
360
|
});
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
})
|
|
254
|
-
return parseResponse(response);
|
|
361
|
+
const finalMessage = await stream.finalMessage();
|
|
362
|
+
return parseResponse(finalMessage);
|
|
363
|
+
}, {
|
|
364
|
+
shouldRetry: isRetryableAnthropicError,
|
|
365
|
+
});
|
|
255
366
|
}
|
|
256
367
|
async listModels() {
|
|
257
368
|
try {
|
|
@@ -359,6 +470,7 @@ export class OpenAICompatibleModelClient {
|
|
|
359
470
|
baseUrl;
|
|
360
471
|
apiKey;
|
|
361
472
|
fetchImpl;
|
|
473
|
+
timeoutSeconds;
|
|
362
474
|
constructor(params) {
|
|
363
475
|
this.baseUrl = normalizeBaseUrl(params?.baseUrl ?? process.env.OPENAI_BASE_URL ?? "http://localhost:1234/v1");
|
|
364
476
|
const isOpenRouter = this.baseUrl.includes("openrouter");
|
|
@@ -368,6 +480,7 @@ export class OpenAICompatibleModelClient {
|
|
|
368
480
|
? process.env.OPENROUTER_API_KEY ?? process.env.OPENAI_API_KEY
|
|
369
481
|
: process.env.OPENAI_API_KEY);
|
|
370
482
|
this.fetchImpl = params?.fetchImpl ?? fetch;
|
|
483
|
+
this.timeoutSeconds = params?.timeoutSeconds ?? DEFAULT_MODEL_START_TIMEOUT_SECONDS;
|
|
371
484
|
}
|
|
372
485
|
async chat(params) {
|
|
373
486
|
const headers = {
|
|
@@ -398,22 +511,24 @@ export class OpenAICompatibleModelClient {
|
|
|
398
511
|
if (params.reasoningEffort) {
|
|
399
512
|
requestBody.reasoning = { effort: params.reasoningEffort };
|
|
400
513
|
}
|
|
401
|
-
const response = await withRetry(async () => {
|
|
514
|
+
const response = await withRetry(() => withResponseStartTimeout(this.timeoutSeconds, params.signal, async (signal) => {
|
|
402
515
|
const httpResponse = await this.fetchImpl(`${this.baseUrl}/chat/completions`, {
|
|
403
516
|
method: "POST",
|
|
404
517
|
headers,
|
|
405
518
|
body: JSON.stringify(requestBody),
|
|
406
|
-
|
|
519
|
+
signal,
|
|
407
520
|
});
|
|
408
521
|
if (!httpResponse.ok) {
|
|
409
522
|
const bodyText = await httpResponse.text();
|
|
410
|
-
throw new
|
|
523
|
+
throw new OpenAICompatibleHttpError(httpResponse.status, bodyText || "No response body.");
|
|
411
524
|
}
|
|
412
525
|
if (useStream && httpResponse.body) {
|
|
413
526
|
return parseOpenAIStream(httpResponse.body.getReader(), params.onStream);
|
|
414
527
|
}
|
|
415
528
|
const payload = (await httpResponse.json());
|
|
416
529
|
return parseOpenAICompatibleResponse(payload);
|
|
530
|
+
}), {
|
|
531
|
+
shouldRetry: isRetryableOpenAICompatibleError,
|
|
417
532
|
});
|
|
418
533
|
return response;
|
|
419
534
|
}
|
|
@@ -424,7 +539,7 @@ export class OpenAICompatibleModelClient {
|
|
|
424
539
|
headers.Authorization = `Bearer ${apiKey}`;
|
|
425
540
|
}
|
|
426
541
|
try {
|
|
427
|
-
const response = await this.fetchImpl(`${this.baseUrl}/models`, { headers });
|
|
542
|
+
const response = await withResponseStartTimeout(this.timeoutSeconds, undefined, (signal) => this.fetchImpl(`${this.baseUrl}/models`, { headers, signal }));
|
|
428
543
|
if (!response.ok)
|
|
429
544
|
return [];
|
|
430
545
|
const payload = (await response.json());
|
|
@@ -439,11 +554,12 @@ export function createModelClient(config) {
|
|
|
439
554
|
if (config.modelProvider === "openai-compatible") {
|
|
440
555
|
return new OpenAICompatibleModelClient({
|
|
441
556
|
baseUrl: config.openAiBaseUrl,
|
|
557
|
+
timeoutSeconds: config.modelTimeoutSeconds,
|
|
442
558
|
...(config.openAiApiKey !== undefined
|
|
443
559
|
? { apiKey: config.openAiApiKey }
|
|
444
560
|
: {}),
|
|
445
561
|
});
|
|
446
562
|
}
|
|
447
|
-
return new AnthropicModelClient();
|
|
563
|
+
return new AnthropicModelClient(process.env.ANTHROPIC_API_KEY, { timeoutSeconds: config.modelTimeoutSeconds });
|
|
448
564
|
}
|
|
449
565
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/model/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/model/client.ts"],"names":[],"mappings":"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"}
|