ace-swarm 2.1.2 → 2.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.
- package/CHANGELOG.md +52 -1
- package/README.md +86 -40
- package/assets/.agents/ACE/AGENT_REGISTRY.md +7 -1
- package/assets/.agents/ACE/agent-eval/instructions.md +41 -1
- package/assets/.agents/ACE/agent-memory/instructions.md +35 -1
- package/assets/.agents/ACE/agent-observability/instructions.md +35 -1
- package/assets/.agents/ACE/agent-release/instructions.md +34 -1
- package/assets/.agents/ACE/agent-security/instructions.md +35 -1
- package/assets/.agents/ACE/agent-skeptic/instructions.md +49 -0
- package/assets/.agents/ACE/orchestrator/AGENTS.md +11 -0
- package/assets/.github/hooks/ace-copilot.json +16 -16
- package/assets/agent-state/ACE_WORKFLOW.md +65 -0
- package/assets/agent-state/INTERFACE_REGISTRY.md +1 -0
- package/assets/agent-state/MODULES/schemas/ACE_RUNTIME_PROFILE.schema.json +79 -0
- package/assets/agent-state/MODULES/schemas/VERICIFY_PROCESS_POST_LOG.schema.json +1 -0
- package/assets/scripts/ace-hook-dispatch.mjs +447 -0
- package/assets/scripts/copilot-hook-dispatch.mjs +1 -265
- package/assets/scripts/render-mcp-configs.sh +328 -1
- package/assets/tasks/README.md +26 -0
- package/dist/ace-autonomy.d.ts +137 -0
- package/dist/ace-autonomy.d.ts.map +1 -0
- package/dist/ace-autonomy.js +472 -0
- package/dist/ace-autonomy.js.map +1 -0
- package/dist/ace-context.d.ts +29 -0
- package/dist/ace-context.d.ts.map +1 -0
- package/dist/ace-context.js +240 -0
- package/dist/ace-context.js.map +1 -0
- package/dist/ace-internal-tools.d.ts +8 -0
- package/dist/ace-internal-tools.d.ts.map +1 -0
- package/dist/ace-internal-tools.js +76 -0
- package/dist/ace-internal-tools.js.map +1 -0
- package/dist/ace-server-instructions.d.ts +12 -0
- package/dist/ace-server-instructions.d.ts.map +1 -0
- package/dist/ace-server-instructions.js +299 -0
- package/dist/ace-server-instructions.js.map +1 -0
- package/dist/agent-runtime/role-adapters.d.ts.map +1 -1
- package/dist/agent-runtime/role-adapters.js +47 -6
- package/dist/agent-runtime/role-adapters.js.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +90 -0
- package/dist/helpers.js.map +1 -1
- package/dist/internal-tool-runtime.d.ts +21 -0
- package/dist/internal-tool-runtime.d.ts.map +1 -0
- package/dist/internal-tool-runtime.js +136 -0
- package/dist/internal-tool-runtime.js.map +1 -0
- package/dist/local-model-runtime.d.ts +36 -0
- package/dist/local-model-runtime.d.ts.map +1 -0
- package/dist/local-model-runtime.js +161 -0
- package/dist/local-model-runtime.js.map +1 -0
- package/dist/model-bridge.d.ts +54 -0
- package/dist/model-bridge.d.ts.map +1 -0
- package/dist/model-bridge.js +587 -0
- package/dist/model-bridge.js.map +1 -0
- package/dist/orchestrator-supervisor.d.ts +100 -0
- package/dist/orchestrator-supervisor.d.ts.map +1 -0
- package/dist/orchestrator-supervisor.js +399 -0
- package/dist/orchestrator-supervisor.js.map +1 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +101 -0
- package/dist/prompts.js.map +1 -1
- package/dist/public-surface.d.ts.map +1 -1
- package/dist/public-surface.js +6 -0
- package/dist/public-surface.js.map +1 -1
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +29 -0
- package/dist/resources.js.map +1 -1
- package/dist/runtime-executor.d.ts.map +1 -1
- package/dist/runtime-executor.js +121 -0
- package/dist/runtime-executor.js.map +1 -1
- package/dist/runtime-profile.d.ts +18 -0
- package/dist/runtime-profile.d.ts.map +1 -1
- package/dist/runtime-profile.js +39 -3
- package/dist/runtime-profile.js.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/schemas.js.map +1 -1
- package/dist/server.d.ts +5 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -1
- package/dist/server.js.map +1 -1
- package/dist/shared.d.ts +3 -3
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +1 -0
- package/dist/shared.js.map +1 -1
- package/dist/tools-agent.d.ts +1 -0
- package/dist/tools-agent.d.ts.map +1 -1
- package/dist/tools-agent.js +456 -1
- package/dist/tools-agent.js.map +1 -1
- package/dist/tools-framework.d.ts.map +1 -1
- package/dist/tools-framework.js +366 -128
- package/dist/tools-framework.js.map +1 -1
- package/dist/tools-memory.d.ts.map +1 -1
- package/dist/tools-memory.js +80 -0
- package/dist/tools-memory.js.map +1 -1
- package/dist/tui/agent-runner.d.ts +6 -0
- package/dist/tui/agent-runner.d.ts.map +1 -1
- package/dist/tui/agent-runner.js +15 -1
- package/dist/tui/agent-runner.js.map +1 -1
- package/dist/tui/agent-worker.d.ts +3 -1
- package/dist/tui/agent-worker.d.ts.map +1 -1
- package/dist/tui/agent-worker.js +117 -9
- package/dist/tui/agent-worker.js.map +1 -1
- package/dist/tui/chat.d.ts +19 -0
- package/dist/tui/chat.d.ts.map +1 -1
- package/dist/tui/chat.js +108 -0
- package/dist/tui/chat.js.map +1 -1
- package/dist/tui/index.d.ts +1 -0
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +3 -0
- package/dist/tui/index.js.map +1 -1
- package/dist/vericify-bridge.d.ts +5 -1
- package/dist/vericify-bridge.d.ts.map +1 -1
- package/dist/vericify-bridge.js +10 -0
- package/dist/vericify-bridge.js.map +1 -1
- package/dist/vericify-context.d.ts +10 -0
- package/dist/vericify-context.d.ts.map +1 -0
- package/dist/vericify-context.js +72 -0
- package/dist/vericify-context.js.map +1 -0
- package/dist/workspace-manager.d.ts.map +1 -1
- package/dist/workspace-manager.js +13 -2
- package/dist/workspace-manager.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createAceServer } from "./server.js";
|
|
4
|
+
function isPlainObject(value) {
|
|
5
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
6
|
+
}
|
|
7
|
+
function isZodSchema(value) {
|
|
8
|
+
return Boolean(value) && typeof value === "object" && "safeParseAsync" in value;
|
|
9
|
+
}
|
|
10
|
+
function buildZodObject(shape) {
|
|
11
|
+
if (!isPlainObject(shape))
|
|
12
|
+
return undefined;
|
|
13
|
+
const values = Object.values(shape);
|
|
14
|
+
if (!values.every((value) => isZodSchema(value)))
|
|
15
|
+
return undefined;
|
|
16
|
+
return z.object(shape);
|
|
17
|
+
}
|
|
18
|
+
function describeSchema(schema) {
|
|
19
|
+
if (isPlainObject(schema)) {
|
|
20
|
+
const properties = Object.fromEntries(Object.entries(schema).map(([key, value]) => [
|
|
21
|
+
key,
|
|
22
|
+
{
|
|
23
|
+
description: isZodSchema(value)
|
|
24
|
+
? value.description ?? value._def?.typeName ?? "input"
|
|
25
|
+
: "input",
|
|
26
|
+
},
|
|
27
|
+
]));
|
|
28
|
+
return { type: "object", properties };
|
|
29
|
+
}
|
|
30
|
+
if (isZodSchema(schema)) {
|
|
31
|
+
return {
|
|
32
|
+
type: schema._def?.typeName ?? "schema",
|
|
33
|
+
description: schema.description ?? "tool input",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
function summarizeResult(name, result) {
|
|
39
|
+
const textBlocks = Array.isArray(result.content)
|
|
40
|
+
? result.content
|
|
41
|
+
.filter((entry) => {
|
|
42
|
+
return isPlainObject(entry) && entry.type === "text" && typeof entry.text === "string";
|
|
43
|
+
})
|
|
44
|
+
.map((entry) => entry.text.trim())
|
|
45
|
+
.filter(Boolean)
|
|
46
|
+
: [];
|
|
47
|
+
const summary = textBlocks[0] ?? `${name} completed`;
|
|
48
|
+
return summary.length <= 240 ? summary : `${summary.slice(0, 239).trimEnd()}…`;
|
|
49
|
+
}
|
|
50
|
+
let cachedTools;
|
|
51
|
+
function getRegisteredTools() {
|
|
52
|
+
if (cachedTools)
|
|
53
|
+
return cachedTools;
|
|
54
|
+
const server = createAceServer({ toolGovernance: false });
|
|
55
|
+
const registry = server
|
|
56
|
+
._registeredTools;
|
|
57
|
+
cachedTools = new Map(Object.entries(registry ?? {}).filter(([, tool]) => tool.enabled !== false));
|
|
58
|
+
return cachedTools;
|
|
59
|
+
}
|
|
60
|
+
export function listInternalTools(toolScope) {
|
|
61
|
+
const allowed = toolScope ? new Set(toolScope) : undefined;
|
|
62
|
+
return [...getRegisteredTools().entries()]
|
|
63
|
+
.filter(([name]) => !allowed || allowed.has(name))
|
|
64
|
+
.map(([name, tool]) => ({
|
|
65
|
+
name,
|
|
66
|
+
description: tool.description ?? tool.title ?? "ACE MCP tool",
|
|
67
|
+
inputSchema: describeSchema(tool.inputSchema),
|
|
68
|
+
outputSchema: describeSchema(tool.outputSchema),
|
|
69
|
+
}))
|
|
70
|
+
.sort((left, right) => left.name.localeCompare(right.name));
|
|
71
|
+
}
|
|
72
|
+
export async function executeInternalTool(name, args = {}, context = {}) {
|
|
73
|
+
const tool = getRegisteredTools().get(name);
|
|
74
|
+
if (!tool) {
|
|
75
|
+
return {
|
|
76
|
+
ok: false,
|
|
77
|
+
name,
|
|
78
|
+
summary: `Unknown tool: ${name}`,
|
|
79
|
+
error: `Unknown tool: ${name}`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
let validatedArgs = args;
|
|
83
|
+
try {
|
|
84
|
+
if (tool.inputSchema) {
|
|
85
|
+
const schema = isZodSchema(tool.inputSchema) ? tool.inputSchema : buildZodObject(tool.inputSchema);
|
|
86
|
+
if (schema) {
|
|
87
|
+
const parsed = await schema.safeParseAsync(args);
|
|
88
|
+
if (!parsed.success) {
|
|
89
|
+
const message = parsed.error.issues.map((issue) => issue.message).join("; ");
|
|
90
|
+
return {
|
|
91
|
+
ok: false,
|
|
92
|
+
name,
|
|
93
|
+
summary: `Input validation failed for ${name}`,
|
|
94
|
+
error: message,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
if (isPlainObject(parsed.data)) {
|
|
98
|
+
validatedArgs = parsed.data;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const extra = {
|
|
103
|
+
signal: new AbortController().signal,
|
|
104
|
+
sessionId: context.sessionId ?? `internal-${randomUUID()}`,
|
|
105
|
+
requestId: `internal-${randomUUID()}`,
|
|
106
|
+
sendNotification: async () => undefined,
|
|
107
|
+
sendRequest: async () => {
|
|
108
|
+
throw new Error("Internal tool runtime does not support nested MCP requests.");
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
const raw = tool.inputSchema
|
|
112
|
+
? await tool.handler(validatedArgs, extra)
|
|
113
|
+
: await tool.handler(extra);
|
|
114
|
+
const result = raw;
|
|
115
|
+
return {
|
|
116
|
+
ok: !Boolean(result?.isError),
|
|
117
|
+
name,
|
|
118
|
+
summary: summarizeResult(name, result),
|
|
119
|
+
result,
|
|
120
|
+
error: result.isError ? summarizeResult(name, result) : undefined,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
125
|
+
return {
|
|
126
|
+
ok: false,
|
|
127
|
+
name,
|
|
128
|
+
summary: `${name} failed`,
|
|
129
|
+
error: message,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export function resetInternalToolRuntime() {
|
|
134
|
+
cachedTools = undefined;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=internal-tool-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-tool-runtime.js","sourceRoot":"","sources":["../src/internal-tool-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type BridgeResult, type ModelBridgeClients } from "./model-bridge.js";
|
|
2
|
+
import type { AceContextTier } from "./ace-context.js";
|
|
3
|
+
export interface LocalModelRuntimeConfig {
|
|
4
|
+
workspaceRoot: string;
|
|
5
|
+
provider: string;
|
|
6
|
+
model: string;
|
|
7
|
+
ollamaUrl: string;
|
|
8
|
+
notes: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface RunLocalModelTaskOptions {
|
|
11
|
+
task: string;
|
|
12
|
+
role?: string;
|
|
13
|
+
workspaceRoot?: string;
|
|
14
|
+
provider?: string;
|
|
15
|
+
model?: string;
|
|
16
|
+
ollamaUrl?: string;
|
|
17
|
+
maxTurns?: number;
|
|
18
|
+
tier?: AceContextTier | "auto";
|
|
19
|
+
toolScope?: string[];
|
|
20
|
+
clients?: ModelBridgeClients;
|
|
21
|
+
}
|
|
22
|
+
export interface RunLocalModelTaskResult {
|
|
23
|
+
runtime: LocalModelRuntimeConfig;
|
|
24
|
+
role: string;
|
|
25
|
+
routingSummary?: string;
|
|
26
|
+
result: BridgeResult;
|
|
27
|
+
}
|
|
28
|
+
export declare function createDefaultModelBridgeClients(ollamaUrl?: string): ModelBridgeClients;
|
|
29
|
+
export declare function resolveLocalModelRuntime(input: {
|
|
30
|
+
workspaceRoot?: string;
|
|
31
|
+
provider?: string;
|
|
32
|
+
model?: string;
|
|
33
|
+
ollamaUrl?: string;
|
|
34
|
+
}): LocalModelRuntimeConfig;
|
|
35
|
+
export declare function runLocalModelTask(options: RunLocalModelTaskOptions): Promise<RunLocalModelTaskResult>;
|
|
36
|
+
//# sourceMappingURL=local-model-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-model-runtime.d.ts","sourceRoot":"","sources":["../src/local-model-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQvD,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,uBAAuB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;CACtB;AAqHD,wBAAgB,+BAA+B,CAC7C,SAAS,CAAC,EAAE,MAAM,GACjB,kBAAkB,CAKpB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,uBAAuB,CAyB1B;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAmClC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { ROLE_ENUM, scoreDomains } from "./shared.js";
|
|
4
|
+
import { resolveWorkspaceRoot } from "./helpers.js";
|
|
5
|
+
import { executeAceInternalTool } from "./ace-internal-tools.js";
|
|
6
|
+
import { ModelBridge } from "./model-bridge.js";
|
|
7
|
+
import { OllamaClient } from "./tui/ollama.js";
|
|
8
|
+
import { OpenAICompatibleClient, diagnoseChatRuntimeConfig, } from "./tui/openai-compatible.js";
|
|
9
|
+
import { discoverProviderContext } from "./tui/provider-discovery.js";
|
|
10
|
+
function extractTextContent(result) {
|
|
11
|
+
if (!result || typeof result !== "object")
|
|
12
|
+
return "";
|
|
13
|
+
const content = Array.isArray(result.content) ? result.content : [];
|
|
14
|
+
return content
|
|
15
|
+
.filter((entry) => Boolean(entry) &&
|
|
16
|
+
typeof entry === "object" &&
|
|
17
|
+
entry.type === "text")
|
|
18
|
+
.map((entry) => String(entry.text ?? "").trim())
|
|
19
|
+
.filter(Boolean)
|
|
20
|
+
.join("\n");
|
|
21
|
+
}
|
|
22
|
+
function normalizeRoleCandidate(input) {
|
|
23
|
+
if (!input)
|
|
24
|
+
return undefined;
|
|
25
|
+
const normalized = input.trim().toLowerCase().replace(/^ace-/, "").replace(/[^a-z0-9]+/g, "");
|
|
26
|
+
const candidate = normalized === "coder" ? "coders" : normalized;
|
|
27
|
+
return ROLE_ENUM.options.includes(candidate)
|
|
28
|
+
? candidate
|
|
29
|
+
: undefined;
|
|
30
|
+
}
|
|
31
|
+
function parseRoleFromRoutingSummary(summary) {
|
|
32
|
+
const match = summary.match(/\*\*Primary Swarm Agent\(s\):\*\*\s*([^\n]+)/i);
|
|
33
|
+
if (!match?.[1])
|
|
34
|
+
return undefined;
|
|
35
|
+
const firstAgent = match[1]
|
|
36
|
+
.split(",")
|
|
37
|
+
.map((entry) => entry.trim())
|
|
38
|
+
.find(Boolean);
|
|
39
|
+
return normalizeRoleCandidate(firstAgent);
|
|
40
|
+
}
|
|
41
|
+
function hasAlignedTaskContract(workspaceRoot) {
|
|
42
|
+
const required = [
|
|
43
|
+
"agent-state/TASK.md",
|
|
44
|
+
"agent-state/SCOPE.md",
|
|
45
|
+
"agent-state/QUALITY_GATES.md",
|
|
46
|
+
"agent-state/HANDOFF.json",
|
|
47
|
+
];
|
|
48
|
+
return required.every((relativePath) => {
|
|
49
|
+
const absolute = resolve(workspaceRoot, relativePath);
|
|
50
|
+
if (!existsSync(absolute))
|
|
51
|
+
return false;
|
|
52
|
+
return readFileSync(absolute, "utf-8").trim().length > 0;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function fallbackRoleForTask(task, workspaceRoot) {
|
|
56
|
+
if (!hasAlignedTaskContract(workspaceRoot)) {
|
|
57
|
+
return "orchestrator";
|
|
58
|
+
}
|
|
59
|
+
const { domain } = scoreDomains(task);
|
|
60
|
+
switch (domain) {
|
|
61
|
+
case "engineering":
|
|
62
|
+
return "coders";
|
|
63
|
+
case "venture":
|
|
64
|
+
return "vos";
|
|
65
|
+
case "ux":
|
|
66
|
+
return "ui";
|
|
67
|
+
default:
|
|
68
|
+
return "orchestrator";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function resolveRole(task, workspaceRoot, sessionId, requestedRole) {
|
|
72
|
+
const explicitRole = normalizeRoleCandidate(requestedRole);
|
|
73
|
+
if (explicitRole) {
|
|
74
|
+
return { role: explicitRole, routingSummary: undefined };
|
|
75
|
+
}
|
|
76
|
+
const routing = await executeAceInternalTool("route_task", { description: task, domain: "unknown" }, sessionId);
|
|
77
|
+
const routingSummary = extractTextContent(routing);
|
|
78
|
+
const routedRole = parseRoleFromRoutingSummary(routingSummary);
|
|
79
|
+
const fallbackRole = fallbackRoleForTask(task, workspaceRoot);
|
|
80
|
+
return {
|
|
81
|
+
role: routedRole && !(routedRole === "orchestrator" && fallbackRole !== "orchestrator")
|
|
82
|
+
? routedRole
|
|
83
|
+
: fallbackRole,
|
|
84
|
+
routingSummary,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function resolveTier(requested, provider, model, role) {
|
|
88
|
+
if (requested && requested !== "auto")
|
|
89
|
+
return requested;
|
|
90
|
+
const normalizedProvider = provider.trim().toLowerCase();
|
|
91
|
+
const normalizedModel = model.trim().toLowerCase();
|
|
92
|
+
if (role === "orchestrator")
|
|
93
|
+
return "compressed";
|
|
94
|
+
if (normalizedProvider !== "ollama")
|
|
95
|
+
return "full";
|
|
96
|
+
if (/(70b|72b|90b|405b|claude|gpt-|codex|gemini|o[1345])/.test(normalizedModel)) {
|
|
97
|
+
return "full";
|
|
98
|
+
}
|
|
99
|
+
if (/(7b|8b|mini|small|phi|tiny)/.test(normalizedModel)) {
|
|
100
|
+
return "brief";
|
|
101
|
+
}
|
|
102
|
+
return "compressed";
|
|
103
|
+
}
|
|
104
|
+
export function createDefaultModelBridgeClients(ollamaUrl) {
|
|
105
|
+
return {
|
|
106
|
+
ollama: new OllamaClient(ollamaUrl),
|
|
107
|
+
openai: new OpenAICompatibleClient(),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function resolveLocalModelRuntime(input) {
|
|
111
|
+
const workspaceRoot = input.workspaceRoot
|
|
112
|
+
? resolve(input.workspaceRoot)
|
|
113
|
+
: resolveWorkspaceRoot();
|
|
114
|
+
const discovered = discoverProviderContext({
|
|
115
|
+
workspaceRoot,
|
|
116
|
+
cliProvider: input.provider,
|
|
117
|
+
cliModel: input.model,
|
|
118
|
+
cliOllamaUrl: input.ollamaUrl,
|
|
119
|
+
});
|
|
120
|
+
if (discovered.provider !== "ollama") {
|
|
121
|
+
const diagnosis = diagnoseChatRuntimeConfig(discovered.provider, discovered.model);
|
|
122
|
+
if (!diagnosis.ok) {
|
|
123
|
+
throw new Error(diagnosis.message);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
workspaceRoot,
|
|
128
|
+
provider: discovered.provider,
|
|
129
|
+
model: discovered.model,
|
|
130
|
+
ollamaUrl: discovered.ollamaUrl,
|
|
131
|
+
notes: discovered.notes,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export async function runLocalModelTask(options) {
|
|
135
|
+
const runtime = resolveLocalModelRuntime({
|
|
136
|
+
workspaceRoot: options.workspaceRoot,
|
|
137
|
+
provider: options.provider,
|
|
138
|
+
model: options.model,
|
|
139
|
+
ollamaUrl: options.ollamaUrl,
|
|
140
|
+
});
|
|
141
|
+
const bridge = new ModelBridge(options.clients ?? createDefaultModelBridgeClients(runtime.ollamaUrl));
|
|
142
|
+
const { role, routingSummary } = await resolveRole(options.task, runtime.workspaceRoot, undefined, options.role);
|
|
143
|
+
const tier = resolveTier(options.tier, runtime.provider, runtime.model, role);
|
|
144
|
+
const result = await bridge.run({
|
|
145
|
+
task: options.task,
|
|
146
|
+
role,
|
|
147
|
+
workspace: runtime.workspaceRoot,
|
|
148
|
+
tier,
|
|
149
|
+
maxTurns: options.maxTurns ?? (role === "orchestrator" ? 6 : 4),
|
|
150
|
+
provider: runtime.provider,
|
|
151
|
+
model: runtime.model,
|
|
152
|
+
toolScope: options.toolScope,
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
runtime,
|
|
156
|
+
role,
|
|
157
|
+
routingSummary,
|
|
158
|
+
result,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=local-model-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-model-runtime.js","sourceRoot":"","sources":["../src/local-model-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type AceContextTier } from "./ace-context.js";
|
|
2
|
+
import type { OllamaClient } from "./tui/ollama.js";
|
|
3
|
+
import type { OpenAICompatibleClient } from "./tui/openai-compatible.js";
|
|
4
|
+
export interface BridgeToolCall {
|
|
5
|
+
tool: string;
|
|
6
|
+
input?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface BridgeToolResult {
|
|
9
|
+
tool: string;
|
|
10
|
+
ok: boolean;
|
|
11
|
+
summary: string;
|
|
12
|
+
isError: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface BridgeResult {
|
|
15
|
+
bridge_id: string;
|
|
16
|
+
role: string;
|
|
17
|
+
status: "completed" | "needs_input" | "failed" | "max_turns";
|
|
18
|
+
summary: string;
|
|
19
|
+
turns: number;
|
|
20
|
+
tool_calls: BridgeToolResult[];
|
|
21
|
+
child_results: BridgeResult[];
|
|
22
|
+
}
|
|
23
|
+
export interface ModelBridgeClients {
|
|
24
|
+
ollama: Pick<OllamaClient, "chat" | "abort">;
|
|
25
|
+
openai: Pick<OpenAICompatibleClient, "chat" | "abort">;
|
|
26
|
+
}
|
|
27
|
+
export interface ModelBridgeRunOptions {
|
|
28
|
+
task: string;
|
|
29
|
+
role: string;
|
|
30
|
+
workspace: string;
|
|
31
|
+
tier?: AceContextTier;
|
|
32
|
+
numCtx?: number;
|
|
33
|
+
maxTurns: number;
|
|
34
|
+
provider: string;
|
|
35
|
+
model: string;
|
|
36
|
+
toolScope?: string[];
|
|
37
|
+
parentBridge?: string;
|
|
38
|
+
onToolCall?: (tool: string, args: Record<string, unknown>) => void;
|
|
39
|
+
onToolResult?: (tool: string, result: BridgeToolResult) => void;
|
|
40
|
+
onOutput?: (text: string) => void;
|
|
41
|
+
onThinking?: (text: string) => void;
|
|
42
|
+
}
|
|
43
|
+
export declare class ModelBridge {
|
|
44
|
+
private clients;
|
|
45
|
+
private activeProviderClient;
|
|
46
|
+
private bridgeId;
|
|
47
|
+
private currentRunChildResults;
|
|
48
|
+
constructor(clients: ModelBridgeClients);
|
|
49
|
+
interrupt(): void;
|
|
50
|
+
spawn(options: ModelBridgeRunOptions): Promise<BridgeResult>;
|
|
51
|
+
private selectToolScope;
|
|
52
|
+
run(options: ModelBridgeRunOptions): Promise<BridgeResult>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=model-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-bridge.d.ts","sourceRoot":"","sources":["../src/model-bridge.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAA+C,MAAM,iBAAiB,CAAC;AACjG,OAAO,KAAK,EACV,sBAAsB,EAGvB,MAAM,4BAA4B,CAAC;AAIpC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAkWD,qBAAa,WAAW;IAKV,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,oBAAoB,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,sBAAsB,CAA+B;gBAEzC,OAAO,EAAE,kBAAkB;IAE/C,SAAS,IAAI,IAAI;IASX,KAAK,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;YAyBpD,eAAe;IA4CvB,GAAG,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;CA8QjE"}
|