feat: add tool gateway protocol

This commit is contained in:
John
2026-07-02 09:23:55 +08:00
parent e24e6ca4a7
commit 21e03d86b5
8 changed files with 388 additions and 1 deletions
+8
View File
@@ -4,7 +4,9 @@ import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { createAgentRunGateway } from '../agent-run-gateway.mjs';
import { createDbPool } from '../db.mjs';
import { createLlmProviderService } from '../llm-providers.mjs';
import { createTkmindProxy } from '../tkmind-proxy.mjs';
import { createToolGateway } from '../tool-gateway.mjs';
import { createUserAuth } from '../user-auth.mjs';
const root = path.join(path.dirname(fileURLToPath(import.meta.url)), '..');
@@ -74,6 +76,11 @@ const userAuth = createUserAuth(pool, {
usersRoot: process.env.H5_USERS_ROOT ?? path.join(root, 'users'),
h5Root: root,
});
const llmProviderService = createLlmProviderService(pool, {
apiTarget: process.env.TKMIND_API_TARGET ?? 'https://127.0.0.1:18006',
apiSecret: process.env.TKMIND_SERVER__SECRET_KEY ?? 'local-dev-secret',
});
const toolGateway = createToolGateway({ llmProviderService });
const apiTargets = parseTargets();
const tkmindProxy = createTkmindProxy({
apiTarget: apiTargets[0],
@@ -85,6 +92,7 @@ const gateway = createAgentRunGateway({
pool,
userAuth,
tkmindProxy,
toolGateway,
autoDispatch: false,
maxConcurrentRuns: Number(process.env.MEMIND_AGENT_RUN_QUEUE_CONCURRENCY ?? 1),
runTimeoutMs: Number(process.env.MEMIND_AGENT_RUN_TIMEOUT_MS ?? 15 * 60 * 1000),
+13
View File
@@ -97,6 +97,19 @@ try {
chatInjectsCodeTools: false,
aiderTimeoutMs: Number(process.env.MEMIND_AIDER_TIMEOUT_MS ?? 600_000),
openhandsTimeoutMs: Number(process.env.MEMIND_OPENHANDS_TIMEOUT_MS ?? 900_000),
toolGateway: {
enabled: ['1', 'true', 'yes', 'on'].includes(
String(process.env.MEMIND_TOOL_GATEWAY_ENABLED ?? '').trim().toLowerCase(),
),
dryRun: ['1', 'true', 'yes', 'on'].includes(
String(process.env.MEMIND_TOOL_GATEWAY_DRY_RUN ?? '').trim().toLowerCase(),
),
protocol: 'agent-run-v1',
defaultExecutor: process.env.MEMIND_TOOL_GATEWAY_DEFAULT_EXECUTOR ?? 'aider',
openhandsTaskTypes:
process.env.MEMIND_TOOL_GATEWAY_OPENHANDS_TASK_TYPES ??
'repo_refactor,multi_file,complex_repo',
},
},
}, null, 2));
process.exit(ok ? 0 : 1);