@roarpeng/graphflow 1.3.4 → 1.4.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/CHANGELOG.md +59 -0
- package/README.md +124 -118
- package/dist/agents/insight.d.ts +1 -1
- package/dist/agents/insight.d.ts.map +1 -1
- package/dist/agents/insight.js +1 -1
- package/dist/agents/insight.js.map +1 -1
- package/dist/agents/validator.js +1 -1
- package/dist/agents/validator.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +3 -17
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/embedding-factory.d.ts.map +1 -1
- package/dist/config/embedding-factory.js +4 -5
- package/dist/config/embedding-factory.js.map +1 -1
- package/dist/config/llm-availability.d.ts.map +1 -1
- package/dist/config/llm-availability.js +0 -8
- package/dist/config/llm-availability.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +4 -75
- package/dist/config/loader.js.map +1 -1
- package/dist/config/merge.d.ts.map +1 -1
- package/dist/config/merge.js +0 -40
- package/dist/config/merge.js.map +1 -1
- package/dist/config/schema.d.ts +5 -43
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/agent-delegation.d.ts +1 -1
- package/dist/core/agent-delegation.d.ts.map +1 -1
- package/dist/core/orchestrator-context.d.ts.map +1 -1
- package/dist/core/orchestrator-context.js +12 -5
- package/dist/core/orchestrator-context.js.map +1 -1
- package/dist/core/orchestrator.js +8 -2
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/triage.js +2 -2
- package/dist/core/triage.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/context-slicer-types.d.ts +13 -16
- package/dist/graph/context-slicer-types.d.ts.map +1 -1
- package/dist/graph/context-slicer-types.js.map +1 -1
- package/dist/graph/context-slicer.d.ts +4 -5
- package/dist/graph/context-slicer.d.ts.map +1 -1
- package/dist/graph/context-slicer.js +14 -28
- package/dist/graph/context-slicer.js.map +1 -1
- package/dist/graph/file-indexer.d.ts.map +1 -1
- package/dist/graph/file-indexer.js +19 -0
- package/dist/graph/file-indexer.js.map +1 -1
- package/dist/hooks/post-run-sync.d.ts +1 -1
- package/dist/hooks/post-run-sync.d.ts.map +1 -1
- package/dist/hooks/post-run-sync.js +3 -14
- package/dist/hooks/post-run-sync.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -7
- package/dist/index.js.map +1 -1
- package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
- package/dist/integrations/agent-mcp-installer.js +6 -17
- package/dist/integrations/agent-mcp-installer.js.map +1 -1
- package/dist/learning/embeddings.d.ts +0 -1
- package/dist/learning/embeddings.d.ts.map +1 -1
- package/dist/learning/embeddings.js +0 -15
- package/dist/learning/embeddings.js.map +1 -1
- package/dist/learning/episodic-memory.d.ts +1 -1
- package/dist/learning/episodic-memory.d.ts.map +1 -1
- package/dist/learning/episodic-memory.js +38 -1
- package/dist/learning/episodic-memory.js.map +1 -1
- package/dist/learning/hnsw-index.d.ts +23 -4
- package/dist/learning/hnsw-index.d.ts.map +1 -1
- package/dist/learning/hnsw-index.js +78 -4
- package/dist/learning/hnsw-index.js.map +1 -1
- package/dist/learning/nightly-trainer.d.ts +0 -2
- package/dist/learning/nightly-trainer.d.ts.map +1 -1
- package/dist/learning/nightly-trainer.js +10 -18
- package/dist/learning/nightly-trainer.js.map +1 -1
- package/dist/learning/skill-flywheel.d.ts +2 -3
- package/dist/learning/skill-flywheel.d.ts.map +1 -1
- package/dist/learning/skill-flywheel.js +23 -84
- package/dist/learning/skill-flywheel.js.map +1 -1
- package/dist/learning/skill-store.d.ts +1 -3
- package/dist/learning/skill-store.d.ts.map +1 -1
- package/dist/learning/skill-store.js +0 -36
- package/dist/learning/skill-store.js.map +1 -1
- package/dist/learning/skill-types.d.ts +0 -13
- package/dist/learning/skill-types.d.ts.map +1 -1
- package/dist/learning/skill-types.js.map +1 -1
- package/dist/routing/model-router.d.ts +1 -1
- package/dist/routing/model-router.d.ts.map +1 -1
- package/dist/routing/model-router.js +1 -52
- package/dist/routing/model-router.js.map +1 -1
- package/dist/routing/provider-executor.d.ts.map +1 -1
- package/dist/routing/provider-executor.js +0 -48
- package/dist/routing/provider-executor.js.map +1 -1
- package/dist/routing/provider-health.d.ts.map +1 -1
- package/dist/routing/provider-health.js +2 -12
- package/dist/routing/provider-health.js.map +1 -1
- package/dist/surfaces/cli/index.js +19 -77
- package/dist/surfaces/cli/index.js.map +1 -1
- package/dist/surfaces/cli/init.d.ts +2 -25
- package/dist/surfaces/cli/init.d.ts.map +1 -1
- package/dist/surfaces/cli/init.js +57 -312
- package/dist/surfaces/cli/init.js.map +1 -1
- package/dist/surfaces/cli/output.d.ts.map +1 -1
- package/dist/surfaces/cli/output.js +1 -3
- package/dist/surfaces/cli/output.js.map +1 -1
- package/dist/surfaces/cli/runtime/env.d.ts +0 -5
- package/dist/surfaces/cli/runtime/env.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/env.js +0 -115
- package/dist/surfaces/cli/runtime/env.js.map +1 -1
- package/dist/surfaces/cli/runtime/facade.d.ts +10 -17
- package/dist/surfaces/cli/runtime/facade.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/facade.js +5 -5
- package/dist/surfaces/cli/runtime/facade.js.map +1 -1
- package/dist/surfaces/cli/runtime/graph.d.ts +11 -21
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +31 -261
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/learning.d.ts +6 -0
- package/dist/surfaces/cli/runtime/learning.d.ts.map +1 -0
- package/dist/surfaces/cli/runtime/learning.js +28 -0
- package/dist/surfaces/cli/runtime/learning.js.map +1 -0
- package/dist/surfaces/cli/runtime/routing.d.ts +1 -3
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +12 -36
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime/settings.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/settings.js +11 -117
- package/dist/surfaces/cli/runtime/settings.js.map +1 -1
- package/dist/surfaces/cli/runtime/types.d.ts +11 -35
- package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.d.ts +4 -4
- package/dist/surfaces/cli/runtime.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.js +5 -12
- package/dist/surfaces/cli/runtime.js.map +1 -1
- package/dist/surfaces/cursor-rules/graphflow.mdc +3 -3
- package/dist/surfaces/mcp/server.d.ts +4 -4
- package/dist/surfaces/mcp/server.d.ts.map +1 -1
- package/dist/surfaces/mcp/server.js +18 -21
- package/dist/surfaces/mcp/server.js.map +1 -1
- package/dist/surfaces/mcp/tool-definitions.d.ts.map +1 -1
- package/dist/surfaces/mcp/tool-definitions.js +0 -42
- package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.d.ts +1 -4
- package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.js +1 -64
- package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
- package/dist/surfaces/trae-skill/graphflow/SKILL.md +10 -30
- package/package.json +3 -5
- package/src/surfaces/cursor-rules/graphflow.mdc +3 -3
- package/src/surfaces/trae-skill/graphflow/SKILL.md +10 -30
- package/dist/graph/compression-model.d.ts +0 -52
- package/dist/graph/compression-model.d.ts.map +0 -1
- package/dist/graph/compression-model.js +0 -125
- package/dist/graph/compression-model.js.map +0 -1
- package/dist/graph/semantic-compression.d.ts +0 -65
- package/dist/graph/semantic-compression.d.ts.map +0 -1
- package/dist/graph/semantic-compression.js +0 -173
- package/dist/graph/semantic-compression.js.map +0 -1
- package/dist/graph/semantic-enricher.d.ts +0 -17
- package/dist/graph/semantic-enricher.d.ts.map +0 -1
- package/dist/graph/semantic-enricher.js +0 -97
- package/dist/graph/semantic-enricher.js.map +0 -1
- package/dist/learning/canary-gate.d.ts +0 -6
- package/dist/learning/canary-gate.d.ts.map +0 -1
- package/dist/learning/canary-gate.js +0 -13
- package/dist/learning/canary-gate.js.map +0 -1
- package/dist/learning/local-embedding.d.ts +0 -3
- package/dist/learning/local-embedding.d.ts.map +0 -1
- package/dist/learning/local-embedding.js +0 -37
- package/dist/learning/local-embedding.js.map +0 -1
- package/dist/learning/skill-evolution.d.ts +0 -16
- package/dist/learning/skill-evolution.d.ts.map +0 -1
- package/dist/learning/skill-evolution.js +0 -154
- package/dist/learning/skill-evolution.js.map +0 -1
- package/dist/learning/vector-store.d.ts +0 -20
- package/dist/learning/vector-store.d.ts.map +0 -1
- package/dist/learning/vector-store.js +0 -77
- package/dist/learning/vector-store.js.map +0 -1
- package/dist/routing/provider-adapters/openbmb.d.ts +0 -16
- package/dist/routing/provider-adapters/openbmb.d.ts.map +0 -1
- package/dist/routing/provider-adapters/openbmb.js +0 -368
- package/dist/routing/provider-adapters/openbmb.js.map +0 -1
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.openbmbGenerateText = openbmbGenerateText;
|
|
4
|
-
const logger_1 = require("../../utils/logger");
|
|
5
|
-
const node_child_process_1 = require("node:child_process");
|
|
6
|
-
const node_worker_threads_1 = require("node:worker_threads");
|
|
7
|
-
const node_util_1 = require("node:util");
|
|
8
|
-
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
9
|
-
class EmbeddedWorkerPool {
|
|
10
|
-
worker;
|
|
11
|
-
nextId = 1;
|
|
12
|
-
pending = new Map();
|
|
13
|
-
async run(payload) {
|
|
14
|
-
this.ensureWorker();
|
|
15
|
-
const id = this.nextId++;
|
|
16
|
-
return new Promise((resolve, reject) => {
|
|
17
|
-
const timer = setTimeout(() => {
|
|
18
|
-
this.pending.delete(id);
|
|
19
|
-
this.restartWorker(new Error(`openbmb embedded worker timed out after ${payload.timeoutMs}ms`), id);
|
|
20
|
-
reject(new Error(`openbmb embedded worker timed out after ${payload.timeoutMs}ms`));
|
|
21
|
-
}, payload.timeoutMs + 500);
|
|
22
|
-
this.pending.set(id, { resolve, reject, timer });
|
|
23
|
-
this.worker.postMessage({ id, ...payload });
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
ensureWorker() {
|
|
27
|
-
if (this.worker) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
const workerSource = `
|
|
31
|
-
const { parentPort } = require("node:worker_threads");
|
|
32
|
-
const { execFile } = require("node:child_process");
|
|
33
|
-
const { promisify } = require("node:util");
|
|
34
|
-
const execFileAsync = promisify(execFile);
|
|
35
|
-
let llama = null;
|
|
36
|
-
let loadedModel = null;
|
|
37
|
-
let loadedContext = null;
|
|
38
|
-
let loadedSequence = null;
|
|
39
|
-
let loadedModelPath = null;
|
|
40
|
-
|
|
41
|
-
async function runCommand(task) {
|
|
42
|
-
if (!task.command) {
|
|
43
|
-
throw new Error("openbmb embedded mode requires GRAPHFLOW_MINICPM_COMMAND");
|
|
44
|
-
}
|
|
45
|
-
const args = [
|
|
46
|
-
"-m",
|
|
47
|
-
task.modelPath || task.model,
|
|
48
|
-
"-p",
|
|
49
|
-
task.prompt,
|
|
50
|
-
"-n",
|
|
51
|
-
String(task.maxTokens),
|
|
52
|
-
"--temp",
|
|
53
|
-
String(task.temperature),
|
|
54
|
-
"--no-display-prompt",
|
|
55
|
-
];
|
|
56
|
-
const result = await execFileAsync(task.command, args, {
|
|
57
|
-
timeout: task.timeoutMs,
|
|
58
|
-
windowsHide: true,
|
|
59
|
-
maxBuffer: 1024 * 1024,
|
|
60
|
-
});
|
|
61
|
-
const output = (result.stdout || "").trim();
|
|
62
|
-
if (!output) {
|
|
63
|
-
throw new Error("openbmb embedded mode returned empty output");
|
|
64
|
-
}
|
|
65
|
-
return output;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async function ensureNodeLlama(task) {
|
|
69
|
-
if (!task.modelPath) {
|
|
70
|
-
throw new Error("openbmb embedded node-llama-cpp mode requires modelPath");
|
|
71
|
-
}
|
|
72
|
-
if (loadedSequence && loadedModelPath === task.modelPath) {
|
|
73
|
-
return loadedSequence;
|
|
74
|
-
}
|
|
75
|
-
const moduleRef = await import("node-llama-cpp");
|
|
76
|
-
const createLlama = moduleRef.getLlama || moduleRef.createLlama;
|
|
77
|
-
if (typeof createLlama !== "function") {
|
|
78
|
-
throw new Error("node-llama-cpp API not available");
|
|
79
|
-
}
|
|
80
|
-
llama = llama || await createLlama({ gpu: "auto" });
|
|
81
|
-
loadedModel = await llama.loadModel({ modelPath: task.modelPath });
|
|
82
|
-
loadedContext = await loadedModel.createContext({ contextSize: 2048 });
|
|
83
|
-
loadedSequence = loadedContext.getSequence();
|
|
84
|
-
loadedModelPath = task.modelPath;
|
|
85
|
-
return loadedSequence;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
async function runNodeLlama(task) {
|
|
89
|
-
const sequence = await ensureNodeLlama(task);
|
|
90
|
-
const completion = await sequence.prompt(task.prompt, {
|
|
91
|
-
temperature: task.temperature,
|
|
92
|
-
maxTokens: task.maxTokens,
|
|
93
|
-
stopOnAbortSignal: AbortSignal.timeout(task.timeoutMs),
|
|
94
|
-
});
|
|
95
|
-
const text = typeof completion === "string" ? completion.trim() : String(completion || "").trim();
|
|
96
|
-
if (!text) {
|
|
97
|
-
throw new Error("node-llama-cpp produced empty output");
|
|
98
|
-
}
|
|
99
|
-
global.gc?.();
|
|
100
|
-
return text;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
parentPort.on("message", async (task) => {
|
|
104
|
-
try {
|
|
105
|
-
const text = task.engine === "node-llama-cpp" ? await runNodeLlama(task) : await runCommand(task);
|
|
106
|
-
parentPort.postMessage({ id: task.id, ok: true, text });
|
|
107
|
-
} catch (error) {
|
|
108
|
-
parentPort.postMessage({ id: task.id, ok: false, error: error instanceof Error ? error.message : String(error) });
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
`;
|
|
112
|
-
this.worker = new node_worker_threads_1.Worker(workerSource, { eval: true });
|
|
113
|
-
this.worker.on("message", (msg) => {
|
|
114
|
-
const id = msg.id;
|
|
115
|
-
if (id === undefined) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const pending = this.pending.get(id);
|
|
119
|
-
if (!pending) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
clearTimeout(pending.timer);
|
|
123
|
-
this.pending.delete(id);
|
|
124
|
-
if (msg.ok && msg.text) {
|
|
125
|
-
pending.resolve(msg.text);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
pending.reject(new Error(msg.error ?? "openbmb embedded worker failed"));
|
|
129
|
-
});
|
|
130
|
-
this.worker.on("error", (error) => {
|
|
131
|
-
this.restartWorker(error instanceof Error ? error : new Error(String(error)));
|
|
132
|
-
});
|
|
133
|
-
this.worker.on("exit", (code) => {
|
|
134
|
-
if (code !== 0) {
|
|
135
|
-
this.restartWorker(new Error(`openbmb embedded worker exited with code ${code}`));
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
this.worker = undefined;
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
restartWorker(reason, skipId) {
|
|
143
|
-
const current = this.worker;
|
|
144
|
-
this.worker = undefined;
|
|
145
|
-
if (current) {
|
|
146
|
-
void current.terminate();
|
|
147
|
-
}
|
|
148
|
-
for (const [id, pending] of this.pending.entries()) {
|
|
149
|
-
if (id === skipId) {
|
|
150
|
-
continue;
|
|
151
|
-
}
|
|
152
|
-
clearTimeout(pending.timer);
|
|
153
|
-
pending.reject(reason);
|
|
154
|
-
this.pending.delete(id);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
const embeddedWorkerPool = new EmbeddedWorkerPool();
|
|
159
|
-
function resolveOptions(input) {
|
|
160
|
-
const mode = input?.mode ?? process.env.GRAPHFLOW_OPENBMB_MODE ?? "embedded";
|
|
161
|
-
const baseUrl = input?.baseUrl ?? process.env.GRAPHFLOW_OPENBMB_BASE_URL ?? "http://localhost:11434";
|
|
162
|
-
const timeoutMsRaw = input?.timeoutMs ?? Number(process.env.GRAPHFLOW_OPENBMB_TIMEOUT_MS ?? 5000);
|
|
163
|
-
const maxTokensRaw = input?.maxTokens ?? Number(process.env.GRAPHFLOW_OPENBMB_MAX_TOKENS ?? 256);
|
|
164
|
-
const temperatureRaw = input?.temperature ?? Number(process.env.GRAPHFLOW_OPENBMB_TEMPERATURE ?? 0.1);
|
|
165
|
-
return {
|
|
166
|
-
mode,
|
|
167
|
-
baseUrl,
|
|
168
|
-
apiKey: input?.apiKey ?? process.env.GRAPHFLOW_OPENBMB_API_KEY,
|
|
169
|
-
modelPath: input?.modelPath ?? process.env.GRAPHFLOW_OPENBMB_MODEL_PATH,
|
|
170
|
-
timeoutMs: Number.isFinite(timeoutMsRaw) ? Math.max(1000, Math.floor(timeoutMsRaw)) : 5000,
|
|
171
|
-
maxTokens: Number.isFinite(maxTokensRaw) ? Math.max(16, Math.floor(maxTokensRaw)) : 256,
|
|
172
|
-
temperature: Number.isFinite(temperatureRaw) ? temperatureRaw : 0.1,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
function asJsonRecord(value) {
|
|
176
|
-
if (value && typeof value === "object") {
|
|
177
|
-
return value;
|
|
178
|
-
}
|
|
179
|
-
return {};
|
|
180
|
-
}
|
|
181
|
-
async function postJson(url, body, options) {
|
|
182
|
-
const controller = new AbortController();
|
|
183
|
-
const timer = setTimeout(() => controller.abort(), options.timeoutMs);
|
|
184
|
-
try {
|
|
185
|
-
const response = await fetch(url, {
|
|
186
|
-
method: "POST",
|
|
187
|
-
headers: {
|
|
188
|
-
"content-type": "application/json",
|
|
189
|
-
...(options.apiKey ? { authorization: `Bearer ${options.apiKey}` } : {}),
|
|
190
|
-
},
|
|
191
|
-
body: JSON.stringify(body),
|
|
192
|
-
signal: controller.signal,
|
|
193
|
-
});
|
|
194
|
-
if (!response.ok) {
|
|
195
|
-
const text = await response.text();
|
|
196
|
-
throw new Error(`openbmb http ${response.status}: ${text.slice(0, 400)}`);
|
|
197
|
-
}
|
|
198
|
-
return asJsonRecord(await response.json());
|
|
199
|
-
}
|
|
200
|
-
finally {
|
|
201
|
-
clearTimeout(timer);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
function pickFirstString(value) {
|
|
205
|
-
if (typeof value === "string" && value.trim().length > 0) {
|
|
206
|
-
return value.trim();
|
|
207
|
-
}
|
|
208
|
-
if (Array.isArray(value)) {
|
|
209
|
-
for (const item of value) {
|
|
210
|
-
const found = pickFirstString(item);
|
|
211
|
-
if (found)
|
|
212
|
-
return found;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
if (value && typeof value === "object") {
|
|
216
|
-
const record = value;
|
|
217
|
-
for (const key of ["response", "text", "content", "generated_text"]) {
|
|
218
|
-
const found = pickFirstString(record[key]);
|
|
219
|
-
if (found)
|
|
220
|
-
return found;
|
|
221
|
-
}
|
|
222
|
-
const choices = record.choices;
|
|
223
|
-
if (Array.isArray(choices) && choices[0] && typeof choices[0] === "object") {
|
|
224
|
-
const choice = choices[0];
|
|
225
|
-
const found = pickFirstString(choice.message ?? choice.text);
|
|
226
|
-
if (found)
|
|
227
|
-
return found;
|
|
228
|
-
}
|
|
229
|
-
const message = record.message;
|
|
230
|
-
if (message && typeof message === "object") {
|
|
231
|
-
const found = pickFirstString(message.content);
|
|
232
|
-
if (found)
|
|
233
|
-
return found;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
return undefined;
|
|
237
|
-
}
|
|
238
|
-
async function runEmbedded(request, options) {
|
|
239
|
-
const useWorker = process.env.GRAPHFLOW_OPENBMB_USE_WORKER !== "0";
|
|
240
|
-
if (useWorker) {
|
|
241
|
-
return runEmbeddedInWorker(request, options);
|
|
242
|
-
}
|
|
243
|
-
const engine = process.env.GRAPHFLOW_MINICPM_ENGINE ?? "command";
|
|
244
|
-
if (engine === "node-llama-cpp") {
|
|
245
|
-
return runEmbeddedNodeLlamaCpp(request, options);
|
|
246
|
-
}
|
|
247
|
-
const command = process.env.GRAPHFLOW_MINICPM_COMMAND;
|
|
248
|
-
if (!command) {
|
|
249
|
-
throw new Error("openbmb embedded mode requires GRAPHFLOW_MINICPM_COMMAND");
|
|
250
|
-
}
|
|
251
|
-
const args = [
|
|
252
|
-
"-m",
|
|
253
|
-
options.modelPath ?? request.model,
|
|
254
|
-
"-p",
|
|
255
|
-
request.prompt,
|
|
256
|
-
"-n",
|
|
257
|
-
String(options.maxTokens),
|
|
258
|
-
"--temp",
|
|
259
|
-
String(options.temperature),
|
|
260
|
-
"--no-display-prompt",
|
|
261
|
-
];
|
|
262
|
-
const result = await execFileAsync(command, args, {
|
|
263
|
-
timeout: options.timeoutMs,
|
|
264
|
-
windowsHide: true,
|
|
265
|
-
maxBuffer: 1024 * 1024,
|
|
266
|
-
});
|
|
267
|
-
const output = result.stdout.trim();
|
|
268
|
-
if (!output) {
|
|
269
|
-
throw new Error("openbmb embedded mode returned empty output");
|
|
270
|
-
}
|
|
271
|
-
return output;
|
|
272
|
-
}
|
|
273
|
-
async function runEmbeddedInWorker(request, options) {
|
|
274
|
-
const engine = process.env.GRAPHFLOW_MINICPM_ENGINE ?? "command";
|
|
275
|
-
const command = process.env.GRAPHFLOW_MINICPM_COMMAND;
|
|
276
|
-
const payload = {
|
|
277
|
-
engine,
|
|
278
|
-
prompt: request.prompt,
|
|
279
|
-
model: request.model,
|
|
280
|
-
maxTokens: options.maxTokens,
|
|
281
|
-
temperature: options.temperature,
|
|
282
|
-
timeoutMs: options.timeoutMs,
|
|
283
|
-
};
|
|
284
|
-
if (command) {
|
|
285
|
-
payload.command = command;
|
|
286
|
-
}
|
|
287
|
-
if (options.modelPath) {
|
|
288
|
-
payload.modelPath = options.modelPath;
|
|
289
|
-
}
|
|
290
|
-
return embeddedWorkerPool.run(payload);
|
|
291
|
-
}
|
|
292
|
-
async function runEmbeddedNodeLlamaCpp(request, options) {
|
|
293
|
-
const modelPath = options.modelPath;
|
|
294
|
-
if (!modelPath) {
|
|
295
|
-
throw new Error("openbmb embedded node-llama-cpp mode requires modelPath");
|
|
296
|
-
}
|
|
297
|
-
const module = (await import("node-llama-cpp"));
|
|
298
|
-
const createLlama = module.getLlama ?? module.createLlama;
|
|
299
|
-
if (typeof createLlama !== "function") {
|
|
300
|
-
throw new Error("node-llama-cpp API not available");
|
|
301
|
-
}
|
|
302
|
-
const llama = await createLlama({ gpu: "auto" });
|
|
303
|
-
const model = await llama.loadModel({ modelPath });
|
|
304
|
-
const context = await model.createContext({ contextSize: 2048 });
|
|
305
|
-
const sequence = context.getSequence();
|
|
306
|
-
const completion = await sequence.prompt(request.prompt, {
|
|
307
|
-
temperature: options.temperature,
|
|
308
|
-
maxTokens: options.maxTokens,
|
|
309
|
-
stopOnAbortSignal: AbortSignal.timeout(options.timeoutMs),
|
|
310
|
-
});
|
|
311
|
-
const text = typeof completion === "string" ? completion.trim() : String(completion ?? "").trim();
|
|
312
|
-
if (!text) {
|
|
313
|
-
throw new Error("node-llama-cpp produced empty output");
|
|
314
|
-
}
|
|
315
|
-
global.gc?.();
|
|
316
|
-
return text;
|
|
317
|
-
}
|
|
318
|
-
async function runOllama(request, options) {
|
|
319
|
-
const payload = await postJson(`${options.baseUrl.replace(/\/+$/, "")}/api/generate`, {
|
|
320
|
-
model: request.model,
|
|
321
|
-
prompt: request.prompt,
|
|
322
|
-
stream: false,
|
|
323
|
-
options: {
|
|
324
|
-
temperature: options.temperature,
|
|
325
|
-
num_predict: options.maxTokens,
|
|
326
|
-
},
|
|
327
|
-
}, { timeoutMs: options.timeoutMs });
|
|
328
|
-
const text = pickFirstString(payload.response ?? payload.text ?? payload.message);
|
|
329
|
-
if (!text) {
|
|
330
|
-
throw new Error("openbmb ollama response missing text");
|
|
331
|
-
}
|
|
332
|
-
return text;
|
|
333
|
-
}
|
|
334
|
-
async function runOpenAiCompat(request, options) {
|
|
335
|
-
const payload = await postJson(`${options.baseUrl.replace(/\/+$/, "")}/v1/chat/completions`, {
|
|
336
|
-
model: request.model,
|
|
337
|
-
messages: [{ role: "user", content: request.prompt }],
|
|
338
|
-
temperature: options.temperature,
|
|
339
|
-
max_tokens: options.maxTokens,
|
|
340
|
-
stream: false,
|
|
341
|
-
}, { timeoutMs: options.timeoutMs, ...(options.apiKey ? { apiKey: options.apiKey } : {}) });
|
|
342
|
-
const text = pickFirstString(payload.choices ?? payload.message ?? payload.content);
|
|
343
|
-
if (!text) {
|
|
344
|
-
throw new Error("openbmb openai-compat response missing text");
|
|
345
|
-
}
|
|
346
|
-
return text;
|
|
347
|
-
}
|
|
348
|
-
async function openbmbGenerateText(request, runtimeOptions) {
|
|
349
|
-
const options = resolveOptions(runtimeOptions);
|
|
350
|
-
try {
|
|
351
|
-
if (options.mode === "embedded") {
|
|
352
|
-
return await runEmbedded(request, options);
|
|
353
|
-
}
|
|
354
|
-
if (options.mode === "ollama") {
|
|
355
|
-
return await runOllama(request, options);
|
|
356
|
-
}
|
|
357
|
-
return await runOpenAiCompat(request, options);
|
|
358
|
-
}
|
|
359
|
-
catch (error) {
|
|
360
|
-
logger_1.logger.error({ error: error instanceof Error ? error.message : String(error) }, "Provider adapter caught error");
|
|
361
|
-
const strict = process.env.GRAPHFLOW_OPENBMB_STRICT === "1";
|
|
362
|
-
if (strict) {
|
|
363
|
-
throw error;
|
|
364
|
-
}
|
|
365
|
-
return `[openbmb:${request.model}] ${request.prompt}`;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
//# sourceMappingURL=openbmb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openbmb.js","sourceRoot":"","sources":["../../../src/routing/provider-adapters/openbmb.ts"],"names":[],"mappings":"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"}
|