@mcoda/agents 0.1.13 → 0.1.14
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 +1 -1
- package/dist/AgentService/AgentService.d.ts.map +1 -1
- package/dist/AgentService/AgentService.js +6 -1
- package/dist/adapters/claude/ClaudeAdapter.d.ts +11 -0
- package/dist/adapters/claude/ClaudeAdapter.d.ts.map +1 -0
- package/dist/adapters/claude/ClaudeAdapter.js +56 -0
- package/dist/adapters/claude/ClaudeCliRunner.d.ts +13 -0
- package/dist/adapters/claude/ClaudeCliRunner.d.ts.map +1 -0
- package/dist/adapters/claude/ClaudeCliRunner.js +138 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Agent registry, adapter wiring, and invocation helpers for mcoda.
|
|
|
9
9
|
## What it provides
|
|
10
10
|
- AgentService for resolving agents, prompts, capabilities, and secrets.
|
|
11
11
|
- Adapter interfaces (AgentAdapter, InvocationRequest/InvocationResult).
|
|
12
|
-
- Built-in adapters for OpenAI, Codex, Gemini, Ollama, Zhipu, local models, and QA.
|
|
12
|
+
- Built-in adapters for OpenAI, Claude, Codex, Gemini, Ollama, Zhipu, local models, and QA.
|
|
13
13
|
|
|
14
14
|
## Example
|
|
15
15
|
```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentService.d.ts","sourceRoot":"","sources":["../../src/AgentService/AgentService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentService.d.ts","sourceRoot":"","sources":["../../src/AgentService/AgentService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAY7C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AA6KhG,qBAAa,YAAY;IACX,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,gBAAgB;WAE7B,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAKtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAUhD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIrE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAIpD,kBAAkB;YAMlB,kBAAkB;IA6BhC,OAAO,CAAC,kBAAkB;IA+BpB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA4CzE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmBlD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyB9E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAyC5F,mBAAmB;YAkBnB,uBAAuB;YAwBvB,mBAAmB;CAYlC"}
|
|
@@ -13,13 +13,15 @@ import { OpenAiAdapter } from "../adapters/openai/OpenAiAdapter.js";
|
|
|
13
13
|
import { OpenAiCliAdapter } from "../adapters/openai/OpenAiCliAdapter.js";
|
|
14
14
|
import { ZhipuApiAdapter } from "../adapters/zhipu/ZhipuApiAdapter.js";
|
|
15
15
|
import { QaAdapter } from "../adapters/qa/QaAdapter.js";
|
|
16
|
-
|
|
16
|
+
import { ClaudeAdapter } from "../adapters/claude/ClaudeAdapter.js";
|
|
17
|
+
const CLI_BASED_ADAPTERS = new Set(["codex-cli", "gemini-cli", "openai-cli", "ollama-cli", "codali-cli", "claude-cli"]);
|
|
17
18
|
const LOCAL_ADAPTERS = new Set(["local-model"]);
|
|
18
19
|
const SUPPORTED_ADAPTERS = new Set([
|
|
19
20
|
"openai-api",
|
|
20
21
|
"codex-cli",
|
|
21
22
|
"gemini-cli",
|
|
22
23
|
"openai-cli",
|
|
24
|
+
"claude-cli",
|
|
23
25
|
"zhipu-api",
|
|
24
26
|
"local-model",
|
|
25
27
|
"qa-cli",
|
|
@@ -288,6 +290,9 @@ export class AgentService {
|
|
|
288
290
|
if (adapterType === "openai-cli") {
|
|
289
291
|
return new OpenAiCliAdapter(configWithAdapter);
|
|
290
292
|
}
|
|
293
|
+
if (adapterType === "claude-cli") {
|
|
294
|
+
return new ClaudeAdapter(configWithAdapter);
|
|
295
|
+
}
|
|
291
296
|
if (adapterType === "local-model" || LOCAL_ADAPTERS.has(adapterType)) {
|
|
292
297
|
return new LocalAdapter(configWithAdapter);
|
|
293
298
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AgentHealth } from "@mcoda/shared";
|
|
2
|
+
import { AdapterConfig, AgentAdapter, InvocationRequest, InvocationResult } from "../AdapterTypes.js";
|
|
3
|
+
export declare class ClaudeAdapter implements AgentAdapter {
|
|
4
|
+
private config;
|
|
5
|
+
constructor(config: AdapterConfig);
|
|
6
|
+
getCapabilities(): Promise<string[]>;
|
|
7
|
+
healthCheck(): Promise<AgentHealth>;
|
|
8
|
+
invoke(request: InvocationRequest): Promise<InvocationResult>;
|
|
9
|
+
invokeStream(request: InvocationRequest): AsyncGenerator<InvocationResult, void, unknown>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ClaudeAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude/ClaudeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtG,qBAAa,aAAc,YAAW,YAAY;IACpC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEnC,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAYnC,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkB5D,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;CAmBjG"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { claudeHealthy, runClaudeExec, runClaudeExecStream } from "./ClaudeCliRunner.js";
|
|
2
|
+
export class ClaudeAdapter {
|
|
3
|
+
constructor(config) {
|
|
4
|
+
this.config = config;
|
|
5
|
+
}
|
|
6
|
+
async getCapabilities() {
|
|
7
|
+
return this.config.capabilities;
|
|
8
|
+
}
|
|
9
|
+
async healthCheck() {
|
|
10
|
+
const started = Date.now();
|
|
11
|
+
const health = claudeHealthy();
|
|
12
|
+
return {
|
|
13
|
+
agentId: this.config.agent.id,
|
|
14
|
+
status: health.ok ? "healthy" : "unreachable",
|
|
15
|
+
lastCheckedAt: new Date().toISOString(),
|
|
16
|
+
latencyMs: Date.now() - started,
|
|
17
|
+
details: { adapter: "claude-cli", ...(health.details ?? {}) },
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async invoke(request) {
|
|
21
|
+
const cliDetails = claudeHealthy(true).details;
|
|
22
|
+
const result = runClaudeExec(request.input, this.config.model);
|
|
23
|
+
return {
|
|
24
|
+
output: result.output,
|
|
25
|
+
adapter: this.config.adapter ?? "claude-cli",
|
|
26
|
+
model: this.config.model,
|
|
27
|
+
metadata: {
|
|
28
|
+
mode: "cli",
|
|
29
|
+
capabilities: this.config.capabilities,
|
|
30
|
+
adapterType: this.config.adapter ?? "claude-cli",
|
|
31
|
+
authMode: "cli",
|
|
32
|
+
cli: cliDetails,
|
|
33
|
+
raw: result.raw,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async *invokeStream(request) {
|
|
38
|
+
const cliDetails = claudeHealthy(true).details;
|
|
39
|
+
for await (const chunk of runClaudeExecStream(request.input, this.config.model)) {
|
|
40
|
+
yield {
|
|
41
|
+
output: chunk.output,
|
|
42
|
+
adapter: this.config.adapter ?? "claude-cli",
|
|
43
|
+
model: this.config.model,
|
|
44
|
+
metadata: {
|
|
45
|
+
mode: "cli",
|
|
46
|
+
capabilities: this.config.capabilities,
|
|
47
|
+
adapterType: this.config.adapter ?? "claude-cli",
|
|
48
|
+
authMode: "cli",
|
|
49
|
+
cli: cliDetails,
|
|
50
|
+
raw: chunk.raw,
|
|
51
|
+
streaming: true,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const claudeHealthy: (throwOnError?: boolean) => {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
details?: Record<string, unknown>;
|
|
4
|
+
};
|
|
5
|
+
export declare const runClaudeExec: (prompt: string, model?: string) => {
|
|
6
|
+
output: string;
|
|
7
|
+
raw: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function runClaudeExecStream(prompt: string, model?: string): AsyncGenerator<{
|
|
10
|
+
output: string;
|
|
11
|
+
raw: string;
|
|
12
|
+
}, void, unknown>;
|
|
13
|
+
//# sourceMappingURL=ClaudeCliRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeCliRunner.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude/ClaudeCliRunner.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,aAAa,GAAI,sBAAoB,KAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAuCpG,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAgC3F,CAAC;AAEF,wBAAuB,mBAAmB,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAqChE"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const CLAUDE_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
|
|
5
|
+
const CLAUDE_BIN_ENV = "MCODA_CLAUDE_CLI_BIN";
|
|
6
|
+
const CLAUDE_STUB_ENV = "MCODA_CLAUDE_STUB";
|
|
7
|
+
const GLOBAL_STUB_ENV = "MCODA_CLI_STUB";
|
|
8
|
+
const SKIP_CLI_CHECKS_ENV = "MCODA_SKIP_CLI_CHECKS";
|
|
9
|
+
const resolveString = (value) => {
|
|
10
|
+
if (typeof value !== "string")
|
|
11
|
+
return undefined;
|
|
12
|
+
const trimmed = value.trim();
|
|
13
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
14
|
+
};
|
|
15
|
+
const candidateBinaries = () => {
|
|
16
|
+
const override = resolveString(process.env[CLAUDE_BIN_ENV]);
|
|
17
|
+
if (override)
|
|
18
|
+
return [override];
|
|
19
|
+
return ["claude", path.join(os.homedir(), ".local", "bin", "claude")];
|
|
20
|
+
};
|
|
21
|
+
const isStubEnabled = () => {
|
|
22
|
+
return process.env[CLAUDE_STUB_ENV] === "1" || process.env[GLOBAL_STUB_ENV] === "1";
|
|
23
|
+
};
|
|
24
|
+
const buildArgs = (model) => {
|
|
25
|
+
const args = ["--print", "--output-format", "text"];
|
|
26
|
+
if (model)
|
|
27
|
+
args.push("--model", model);
|
|
28
|
+
return args;
|
|
29
|
+
};
|
|
30
|
+
const resolveBinaryForRun = (details) => {
|
|
31
|
+
const explicit = resolveString(details?.binary);
|
|
32
|
+
if (explicit)
|
|
33
|
+
return explicit;
|
|
34
|
+
return candidateBinaries()[0];
|
|
35
|
+
};
|
|
36
|
+
export const claudeHealthy = (throwOnError = false) => {
|
|
37
|
+
if (isStubEnabled()) {
|
|
38
|
+
return { ok: true, details: { stub: true } };
|
|
39
|
+
}
|
|
40
|
+
if (process.env[SKIP_CLI_CHECKS_ENV] === "1") {
|
|
41
|
+
return { ok: true, details: { skipped: true, binary: candidateBinaries()[0] } };
|
|
42
|
+
}
|
|
43
|
+
let lastFailure;
|
|
44
|
+
for (const binary of candidateBinaries()) {
|
|
45
|
+
const result = spawnSync(binary, ["--version"], {
|
|
46
|
+
encoding: "utf8",
|
|
47
|
+
maxBuffer: CLAUDE_MAX_BUFFER_BYTES,
|
|
48
|
+
});
|
|
49
|
+
if (!result.error && result.status === 0) {
|
|
50
|
+
return {
|
|
51
|
+
ok: true,
|
|
52
|
+
details: {
|
|
53
|
+
binary,
|
|
54
|
+
version: result.stdout?.toString().trim(),
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
lastFailure = {
|
|
59
|
+
binary,
|
|
60
|
+
reason: result.error ? "missing_cli" : "cli_error",
|
|
61
|
+
exitCode: result.status,
|
|
62
|
+
stderr: result.stderr?.toString(),
|
|
63
|
+
error: result.error?.message,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (throwOnError) {
|
|
67
|
+
const reason = String(lastFailure?.reason ?? "missing_cli");
|
|
68
|
+
const error = new Error(`AUTH_ERROR: claude CLI unavailable (${reason})`);
|
|
69
|
+
error.details = lastFailure;
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
return { ok: false, details: lastFailure };
|
|
73
|
+
};
|
|
74
|
+
export const runClaudeExec = (prompt, model) => {
|
|
75
|
+
if (isStubEnabled()) {
|
|
76
|
+
const output = `claude-stub:${prompt}`;
|
|
77
|
+
return { output, raw: output };
|
|
78
|
+
}
|
|
79
|
+
const health = claudeHealthy(true);
|
|
80
|
+
const binary = resolveBinaryForRun(health.details);
|
|
81
|
+
const result = spawnSync(binary, buildArgs(model), {
|
|
82
|
+
input: prompt,
|
|
83
|
+
encoding: "utf8",
|
|
84
|
+
maxBuffer: CLAUDE_MAX_BUFFER_BYTES,
|
|
85
|
+
});
|
|
86
|
+
const stderr = result.stderr?.toString().trim();
|
|
87
|
+
const stdout = result.stdout?.toString() ?? "";
|
|
88
|
+
const diagnostic = stderr || stdout.trim();
|
|
89
|
+
if (result.error || result.status !== 0) {
|
|
90
|
+
const details = {
|
|
91
|
+
reason: "cli_error",
|
|
92
|
+
binary,
|
|
93
|
+
exitCode: result.status,
|
|
94
|
+
stderr,
|
|
95
|
+
stdout,
|
|
96
|
+
error: result.error?.message,
|
|
97
|
+
};
|
|
98
|
+
const reason = result.error?.message ?? `exit ${result.status}`;
|
|
99
|
+
const error = new Error(`AUTH_ERROR: claude CLI failed (${reason})${diagnostic ? `: ${diagnostic}` : ""}`);
|
|
100
|
+
error.details = details;
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
return { output: stdout.trim(), raw: stdout };
|
|
104
|
+
};
|
|
105
|
+
export async function* runClaudeExecStream(prompt, model) {
|
|
106
|
+
if (isStubEnabled()) {
|
|
107
|
+
const output = `claude-stub:${prompt}\n`;
|
|
108
|
+
yield { output, raw: output };
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const health = claudeHealthy(true);
|
|
112
|
+
const binary = resolveBinaryForRun(health.details);
|
|
113
|
+
const child = spawn(binary, buildArgs(model), { stdio: ["pipe", "pipe", "pipe"] });
|
|
114
|
+
child.stdin.write(prompt);
|
|
115
|
+
child.stdin.end();
|
|
116
|
+
let stderr = "";
|
|
117
|
+
child.stderr?.setEncoding("utf8");
|
|
118
|
+
child.stderr?.on("data", (chunk) => {
|
|
119
|
+
stderr += chunk.toString();
|
|
120
|
+
});
|
|
121
|
+
const closePromise = new Promise((resolve, reject) => {
|
|
122
|
+
child.on("error", (err) => reject(err));
|
|
123
|
+
child.on("close", (code) => resolve(code ?? 0));
|
|
124
|
+
});
|
|
125
|
+
const stream = child.stdout;
|
|
126
|
+
stream?.setEncoding("utf8");
|
|
127
|
+
for await (const chunk of stream ?? []) {
|
|
128
|
+
if (!chunk)
|
|
129
|
+
continue;
|
|
130
|
+
yield { output: chunk, raw: chunk };
|
|
131
|
+
}
|
|
132
|
+
const exitCode = await closePromise;
|
|
133
|
+
if (exitCode !== 0) {
|
|
134
|
+
const error = new Error(`AUTH_ERROR: claude CLI failed (exit ${exitCode}): ${stderr || "no output"}`);
|
|
135
|
+
error.details = { reason: "cli_error", binary, exitCode, stderr };
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from "./AgentService/AgentService.js";
|
|
|
2
2
|
export * from "./adapters/AdapterTypes.js";
|
|
3
3
|
export * from "./adapters/openai/OpenAiAdapter.js";
|
|
4
4
|
export * from "./adapters/openai/OpenAiCliAdapter.js";
|
|
5
|
+
export * from "./adapters/claude/ClaudeAdapter.js";
|
|
5
6
|
export * from "./adapters/codex/CodexAdapter.js";
|
|
6
7
|
export * from "./adapters/gemini/GeminiAdapter.js";
|
|
7
8
|
export * from "./adapters/local/LocalAdapter.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export * from "./AgentService/AgentService.js";
|
|
|
2
2
|
export * from "./adapters/AdapterTypes.js";
|
|
3
3
|
export * from "./adapters/openai/OpenAiAdapter.js";
|
|
4
4
|
export * from "./adapters/openai/OpenAiCliAdapter.js";
|
|
5
|
+
export * from "./adapters/claude/ClaudeAdapter.js";
|
|
5
6
|
export * from "./adapters/codex/CodexAdapter.js";
|
|
6
7
|
export * from "./adapters/gemini/GeminiAdapter.js";
|
|
7
8
|
export * from "./adapters/local/LocalAdapter.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcoda/agents",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Agent registry and capabilities for mcoda.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@mcoda/shared": "0.1.
|
|
34
|
-
"@mcoda/db": "0.1.
|
|
33
|
+
"@mcoda/shared": "0.1.14",
|
|
34
|
+
"@mcoda/db": "0.1.14"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "tsc -p tsconfig.json",
|