@mcoda/mswarm 0.1.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/README.md +25 -0
- package/dist/invocation-token.d.ts +16 -0
- package/dist/invocation-token.d.ts.map +1 -0
- package/dist/invocation-token.js +57 -0
- package/dist/invocation-token.js.map +1 -0
- package/dist/runtime.d.ts +282 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +842 -0
- package/dist/runtime.js.map +1 -0
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +177 -0
- package/dist/server.js.map +1 -0
- package/package.json +23 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# @mcoda/mswarm
|
|
2
|
+
|
|
3
|
+
Owner-run mswarm node for exposing local `mcoda` agents through the mswarm self-hosted gateway.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install -g @mcoda/mswarm
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Run
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
MSWARM_GATEWAY_BASE_URL=https://api.mswarm.org \
|
|
15
|
+
MSWARM_SELF_HOSTED_NODE_ID=shn_... \
|
|
16
|
+
MSWARM_SELF_HOSTED_ENROLLMENT_TOKEN=mse_... \
|
|
17
|
+
mswarm-self-hosted-node enroll
|
|
18
|
+
|
|
19
|
+
mswarm-self-hosted-node daemon
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The package also installs the `mswarm` bin, so the same commands can be run as
|
|
23
|
+
`mswarm enroll`, `mswarm daemon`, and `mswarm serve`.
|
|
24
|
+
|
|
25
|
+
The default discovery mode is `mcoda`, so the node reads `mcoda agent list --json --refresh-health` and exposes healthy local agents. Set `MSWARM_SELF_HOSTED_DISCOVERY_MODE=ollama` only for raw Ollama fallback discovery.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SelfHostedInvocationTokenClaims {
|
|
2
|
+
node_id: string;
|
|
3
|
+
job_id: string;
|
|
4
|
+
request_id: string;
|
|
5
|
+
model: string;
|
|
6
|
+
deadline_at: string;
|
|
7
|
+
scope: "self_hosted.invoke";
|
|
8
|
+
iat: number;
|
|
9
|
+
exp: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function verifySelfHostedInvocationToken(input: {
|
|
12
|
+
token: string;
|
|
13
|
+
secret: string;
|
|
14
|
+
nowSeconds?: number;
|
|
15
|
+
}): SelfHostedInvocationTokenClaims;
|
|
16
|
+
//# sourceMappingURL=invocation-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-token.d.ts","sourceRoot":"","sources":["../src/invocation-token.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAuBD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,+BAA+B,CAqClC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
function requireText(value, field) {
|
|
3
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
4
|
+
throw new Error(`${field} is required`);
|
|
5
|
+
}
|
|
6
|
+
return value.trim();
|
|
7
|
+
}
|
|
8
|
+
function base64UrlDecode(value) {
|
|
9
|
+
const normalized = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
10
|
+
const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, "=");
|
|
11
|
+
return Buffer.from(padded, "base64");
|
|
12
|
+
}
|
|
13
|
+
function base64UrlEncode(buffer) {
|
|
14
|
+
return buffer.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
15
|
+
}
|
|
16
|
+
function signHmacSha256(input, secret) {
|
|
17
|
+
return base64UrlEncode(crypto.createHmac("sha256", secret).update(input).digest());
|
|
18
|
+
}
|
|
19
|
+
export function verifySelfHostedInvocationToken(input) {
|
|
20
|
+
const secret = requireText(input.secret, "self_hosted_invocation_secret");
|
|
21
|
+
const token = requireText(input.token, "token");
|
|
22
|
+
const parts = token.split(".");
|
|
23
|
+
if (parts.length !== 3) {
|
|
24
|
+
throw new Error("self_hosted_invocation_token_invalid");
|
|
25
|
+
}
|
|
26
|
+
const signingInput = `${parts[0]}.${parts[1]}`;
|
|
27
|
+
const expected = signHmacSha256(signingInput, secret);
|
|
28
|
+
const expectedBuffer = Buffer.from(expected);
|
|
29
|
+
const actualBuffer = Buffer.from(parts[2] || "");
|
|
30
|
+
if (expectedBuffer.length !== actualBuffer.length || !crypto.timingSafeEqual(expectedBuffer, actualBuffer)) {
|
|
31
|
+
throw new Error("self_hosted_invocation_token_invalid");
|
|
32
|
+
}
|
|
33
|
+
let payload;
|
|
34
|
+
try {
|
|
35
|
+
payload = JSON.parse(base64UrlDecode(parts[1]).toString("utf8"));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
throw new Error("self_hosted_invocation_token_invalid");
|
|
39
|
+
}
|
|
40
|
+
const nowSeconds = Math.floor(input.nowSeconds ?? Date.now() / 1000);
|
|
41
|
+
if (payload.scope !== "self_hosted.invoke") {
|
|
42
|
+
throw new Error("self_hosted_invocation_token_scope_denied");
|
|
43
|
+
}
|
|
44
|
+
if (!payload.exp || payload.exp < nowSeconds) {
|
|
45
|
+
throw new Error("self_hosted_invocation_token_expired");
|
|
46
|
+
}
|
|
47
|
+
const deadlineMs = Date.parse(payload.deadline_at);
|
|
48
|
+
if (!Number.isFinite(deadlineMs) || deadlineMs < nowSeconds * 1000) {
|
|
49
|
+
throw new Error("self_hosted_invocation_token_expired");
|
|
50
|
+
}
|
|
51
|
+
requireText(payload.node_id, "node_id");
|
|
52
|
+
requireText(payload.job_id, "job_id");
|
|
53
|
+
requireText(payload.request_id, "request_id");
|
|
54
|
+
requireText(payload.model, "model");
|
|
55
|
+
return payload;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=invocation-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-token.js","sourceRoot":"","sources":["../src/invocation-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
export type FetchLike = typeof fetch;
|
|
2
|
+
export type SelfHostedDiscoveryMode = "mcoda" | "ollama";
|
|
3
|
+
export type CommandRunner = (command: string, args: string[], options: {
|
|
4
|
+
timeoutMs: number;
|
|
5
|
+
maxBuffer: number;
|
|
6
|
+
input?: string;
|
|
7
|
+
}) => Promise<{
|
|
8
|
+
stdout: string;
|
|
9
|
+
stderr: string;
|
|
10
|
+
}>;
|
|
11
|
+
export type SelfHostedModelHealthStatus = "healthy" | "degraded" | "unreachable" | "unknown" | "blocked";
|
|
12
|
+
export interface SelfHostedModelInput {
|
|
13
|
+
name: string;
|
|
14
|
+
provider?: "mcoda" | "ollama";
|
|
15
|
+
adapter?: string | null;
|
|
16
|
+
source_agent_id?: string | null;
|
|
17
|
+
source_agent_slug?: string | null;
|
|
18
|
+
model_id?: string | null;
|
|
19
|
+
display_name?: string | null;
|
|
20
|
+
digest?: string | null;
|
|
21
|
+
exposed?: boolean;
|
|
22
|
+
family?: string | null;
|
|
23
|
+
parameter_size?: string | null;
|
|
24
|
+
quantization_level?: string | null;
|
|
25
|
+
context_window?: number | null;
|
|
26
|
+
max_output_tokens?: number | null;
|
|
27
|
+
supports_tools?: boolean;
|
|
28
|
+
supports_vision?: boolean;
|
|
29
|
+
openai_compatible?: boolean;
|
|
30
|
+
best_usage?: string | null;
|
|
31
|
+
capabilities?: string[];
|
|
32
|
+
cost_per_million?: number | null;
|
|
33
|
+
rating?: number | null;
|
|
34
|
+
rating_source?: string | null;
|
|
35
|
+
reasoning_rating?: number | null;
|
|
36
|
+
max_complexity?: number | null;
|
|
37
|
+
health_status?: SelfHostedModelHealthStatus;
|
|
38
|
+
metadata_quality?: string | null;
|
|
39
|
+
}
|
|
40
|
+
export interface SelfHostedNodeConfig {
|
|
41
|
+
gatewayBaseUrl: string;
|
|
42
|
+
nodeId: string;
|
|
43
|
+
enrollmentToken?: string | null;
|
|
44
|
+
runtimeToken?: string | null;
|
|
45
|
+
discoveryMode: SelfHostedDiscoveryMode;
|
|
46
|
+
mcodaBin: string;
|
|
47
|
+
mcodaListArgs: string[];
|
|
48
|
+
ollamaBaseUrl: string;
|
|
49
|
+
statePath: string;
|
|
50
|
+
runtimeTokenPath: string;
|
|
51
|
+
invocationSigningSecret?: string | null;
|
|
52
|
+
listenHost: string;
|
|
53
|
+
listenPort: number;
|
|
54
|
+
nodeVersion: string;
|
|
55
|
+
heartbeatIntervalSeconds: number;
|
|
56
|
+
requestTimeoutMs: number;
|
|
57
|
+
exposeAllModels: boolean;
|
|
58
|
+
modelAllowlist: string[];
|
|
59
|
+
modelBlocklist: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface SelfHostedNodeState {
|
|
62
|
+
node_id?: string;
|
|
63
|
+
runtime_token?: string;
|
|
64
|
+
config_version?: number;
|
|
65
|
+
heartbeat_interval_seconds?: number;
|
|
66
|
+
heartbeat_timeout_seconds?: number;
|
|
67
|
+
enrolled_at?: string;
|
|
68
|
+
updated_at?: string;
|
|
69
|
+
gateway_base_url?: string;
|
|
70
|
+
ollama_base_url?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface SelfHostedOpenAIChatMessage {
|
|
73
|
+
role: string;
|
|
74
|
+
content: string | Array<{
|
|
75
|
+
type: string;
|
|
76
|
+
text?: string;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
export interface SelfHostedNodeInvocationJob {
|
|
80
|
+
job_id: string;
|
|
81
|
+
request_id: string;
|
|
82
|
+
node_id: string;
|
|
83
|
+
agent_slug: string;
|
|
84
|
+
remote_slug?: string;
|
|
85
|
+
provider?: "mcoda" | "ollama";
|
|
86
|
+
adapter?: string | null;
|
|
87
|
+
source_agent_slug?: string | null;
|
|
88
|
+
model?: string | null;
|
|
89
|
+
openai_request: {
|
|
90
|
+
model: string;
|
|
91
|
+
messages: SelfHostedOpenAIChatMessage[];
|
|
92
|
+
stream?: boolean;
|
|
93
|
+
temperature?: number;
|
|
94
|
+
top_p?: number;
|
|
95
|
+
max_tokens?: number;
|
|
96
|
+
stop?: string | string[];
|
|
97
|
+
};
|
|
98
|
+
policy?: {
|
|
99
|
+
max_runtime_ms?: number;
|
|
100
|
+
max_output_tokens?: number;
|
|
101
|
+
allow_tools?: boolean;
|
|
102
|
+
allow_images?: boolean;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export interface SelfHostedNodeInvocationResult {
|
|
106
|
+
job_id: string;
|
|
107
|
+
request_id: string;
|
|
108
|
+
status: "success" | "failed";
|
|
109
|
+
openai_response?: Record<string, unknown>;
|
|
110
|
+
error?: {
|
|
111
|
+
code: string;
|
|
112
|
+
message: string;
|
|
113
|
+
};
|
|
114
|
+
timing?: {
|
|
115
|
+
local_latency_ms: number;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export interface SelfHostedNodeHeartbeatResult {
|
|
119
|
+
enrolled: boolean;
|
|
120
|
+
status: "online" | "degraded";
|
|
121
|
+
model_count: number;
|
|
122
|
+
discovery_source: "mcoda" | "ollama";
|
|
123
|
+
mcoda_agent_count?: number;
|
|
124
|
+
ollama_version?: string | null;
|
|
125
|
+
heartbeat_response: unknown;
|
|
126
|
+
}
|
|
127
|
+
export interface SelfHostedNodeDaemonHandle {
|
|
128
|
+
stop: () => void;
|
|
129
|
+
}
|
|
130
|
+
interface OllamaTagModel {
|
|
131
|
+
name?: string;
|
|
132
|
+
digest?: string | null;
|
|
133
|
+
details?: {
|
|
134
|
+
family?: string | null;
|
|
135
|
+
parameter_size?: string | null;
|
|
136
|
+
quantization_level?: string | null;
|
|
137
|
+
} | null;
|
|
138
|
+
}
|
|
139
|
+
interface McodaAgentListEntry {
|
|
140
|
+
id?: string | null;
|
|
141
|
+
slug?: string | null;
|
|
142
|
+
adapter?: string | null;
|
|
143
|
+
defaultModel?: string | null;
|
|
144
|
+
default_model?: string | null;
|
|
145
|
+
openaiCompatible?: boolean | null;
|
|
146
|
+
openai_compatible?: boolean | null;
|
|
147
|
+
contextWindow?: number | null;
|
|
148
|
+
context_window?: number | null;
|
|
149
|
+
maxOutputTokens?: number | null;
|
|
150
|
+
max_output_tokens?: number | null;
|
|
151
|
+
supportsTools?: boolean | null;
|
|
152
|
+
supports_tools?: boolean | null;
|
|
153
|
+
rating?: number | null;
|
|
154
|
+
reasoningRating?: number | null;
|
|
155
|
+
reasoning_rating?: number | null;
|
|
156
|
+
bestUsage?: string | null;
|
|
157
|
+
best_usage?: string | null;
|
|
158
|
+
costPerMillion?: number | null;
|
|
159
|
+
cost_per_million?: number | null;
|
|
160
|
+
maxComplexity?: number | null;
|
|
161
|
+
max_complexity?: number | null;
|
|
162
|
+
capabilities?: unknown;
|
|
163
|
+
health?: {
|
|
164
|
+
status?: string | null;
|
|
165
|
+
} | null;
|
|
166
|
+
config?: Record<string, unknown> | null;
|
|
167
|
+
models?: Array<{
|
|
168
|
+
modelName?: string | null;
|
|
169
|
+
model_name?: string | null;
|
|
170
|
+
isDefault?: boolean | null;
|
|
171
|
+
is_default?: boolean | null;
|
|
172
|
+
}> | null;
|
|
173
|
+
}
|
|
174
|
+
interface GatewayEnrollmentResponse {
|
|
175
|
+
runtime_token?: string;
|
|
176
|
+
heartbeat_interval_seconds?: number;
|
|
177
|
+
heartbeat_timeout_seconds?: number;
|
|
178
|
+
config_version?: number;
|
|
179
|
+
}
|
|
180
|
+
export declare function readSelfHostedNodeState(statePath: string): Promise<SelfHostedNodeState>;
|
|
181
|
+
export declare function writeSelfHostedNodeState(statePath: string, state: SelfHostedNodeState): Promise<void>;
|
|
182
|
+
export declare function readSelfHostedRuntimeToken(tokenPath: string): Promise<string | null>;
|
|
183
|
+
export declare function writeSelfHostedRuntimeToken(tokenPath: string, runtimeToken: string): Promise<void>;
|
|
184
|
+
export declare function readSelfHostedNodeConfig(env?: NodeJS.ProcessEnv): Promise<SelfHostedNodeConfig>;
|
|
185
|
+
export declare function mapOllamaModelToSelfHostedModel(model: OllamaTagModel, config: Pick<SelfHostedNodeConfig, "exposeAllModels" | "modelAllowlist" | "modelBlocklist">): SelfHostedModelInput | null;
|
|
186
|
+
export declare function mapMcodaAgentToSelfHostedModel(agent: McodaAgentListEntry, config: Pick<SelfHostedNodeConfig, "exposeAllModels" | "modelAllowlist" | "modelBlocklist">): SelfHostedModelInput | null;
|
|
187
|
+
export declare class McodaAgentInventoryClient {
|
|
188
|
+
private readonly command;
|
|
189
|
+
private readonly args;
|
|
190
|
+
private readonly timeoutMs;
|
|
191
|
+
private readonly runner;
|
|
192
|
+
constructor(input: {
|
|
193
|
+
command?: string;
|
|
194
|
+
args?: string[];
|
|
195
|
+
timeoutMs?: number;
|
|
196
|
+
runner?: CommandRunner;
|
|
197
|
+
});
|
|
198
|
+
listAgents(config: Pick<SelfHostedNodeConfig, "exposeAllModels" | "modelAllowlist" | "modelBlocklist">): Promise<SelfHostedModelInput[]>;
|
|
199
|
+
}
|
|
200
|
+
export declare class OllamaClient {
|
|
201
|
+
private readonly baseUrl;
|
|
202
|
+
private readonly fetchImpl;
|
|
203
|
+
private readonly timeoutMs;
|
|
204
|
+
constructor(input: {
|
|
205
|
+
baseUrl: string;
|
|
206
|
+
fetchImpl?: FetchLike;
|
|
207
|
+
timeoutMs?: number;
|
|
208
|
+
});
|
|
209
|
+
getVersion(): Promise<string | null>;
|
|
210
|
+
listModels(config: Pick<SelfHostedNodeConfig, "exposeAllModels" | "modelAllowlist" | "modelBlocklist">): Promise<SelfHostedModelInput[]>;
|
|
211
|
+
chat(input: {
|
|
212
|
+
model: string;
|
|
213
|
+
messages: SelfHostedOpenAIChatMessage[];
|
|
214
|
+
options?: Record<string, unknown>;
|
|
215
|
+
}): Promise<{
|
|
216
|
+
content: string;
|
|
217
|
+
promptTokens: number | null;
|
|
218
|
+
completionTokens: number | null;
|
|
219
|
+
raw: unknown;
|
|
220
|
+
}>;
|
|
221
|
+
}
|
|
222
|
+
export declare class McodaLocalAgentExecutor {
|
|
223
|
+
private readonly command;
|
|
224
|
+
private readonly timeoutMs;
|
|
225
|
+
private readonly runner;
|
|
226
|
+
constructor(input: {
|
|
227
|
+
command?: string;
|
|
228
|
+
timeoutMs?: number;
|
|
229
|
+
runner?: CommandRunner;
|
|
230
|
+
});
|
|
231
|
+
invoke(agentSlug: string, prompt: string): Promise<{
|
|
232
|
+
output: string;
|
|
233
|
+
adapter?: string;
|
|
234
|
+
model?: string;
|
|
235
|
+
metadata?: Record<string, unknown>;
|
|
236
|
+
}>;
|
|
237
|
+
}
|
|
238
|
+
export declare class MswarmSelfHostedNodeClient {
|
|
239
|
+
private readonly gatewayBaseUrl;
|
|
240
|
+
private readonly fetchImpl;
|
|
241
|
+
private readonly timeoutMs;
|
|
242
|
+
constructor(input: {
|
|
243
|
+
gatewayBaseUrl: string;
|
|
244
|
+
fetchImpl?: FetchLike;
|
|
245
|
+
timeoutMs?: number;
|
|
246
|
+
});
|
|
247
|
+
enroll(nodeId: string, enrollmentToken: string): Promise<GatewayEnrollmentResponse>;
|
|
248
|
+
heartbeat(runtimeToken: string, payload: Record<string, unknown>): Promise<unknown>;
|
|
249
|
+
pushModels(runtimeToken: string, payload: {
|
|
250
|
+
node_id: string;
|
|
251
|
+
models: SelfHostedModelInput[];
|
|
252
|
+
}): Promise<unknown>;
|
|
253
|
+
}
|
|
254
|
+
export declare class SelfHostedNodeRuntime {
|
|
255
|
+
private readonly config;
|
|
256
|
+
private readonly gateway;
|
|
257
|
+
private readonly mcoda;
|
|
258
|
+
private readonly mcodaExecutor;
|
|
259
|
+
private readonly ollama;
|
|
260
|
+
constructor(config: SelfHostedNodeConfig, deps?: {
|
|
261
|
+
gateway?: MswarmSelfHostedNodeClient;
|
|
262
|
+
mcoda?: McodaAgentInventoryClient;
|
|
263
|
+
mcodaExecutor?: McodaLocalAgentExecutor;
|
|
264
|
+
ollama?: OllamaClient;
|
|
265
|
+
fetchImpl?: FetchLike;
|
|
266
|
+
});
|
|
267
|
+
private discoverModels;
|
|
268
|
+
ensureEnrolled(): Promise<{
|
|
269
|
+
runtimeToken: string;
|
|
270
|
+
state: SelfHostedNodeState;
|
|
271
|
+
enrolled: boolean;
|
|
272
|
+
}>;
|
|
273
|
+
executeJob(job: SelfHostedNodeInvocationJob): Promise<SelfHostedNodeInvocationResult>;
|
|
274
|
+
runOnce(): Promise<SelfHostedNodeHeartbeatResult>;
|
|
275
|
+
pushModelsOnly(): Promise<{
|
|
276
|
+
count: number;
|
|
277
|
+
response: unknown;
|
|
278
|
+
}>;
|
|
279
|
+
startDaemon(): SelfHostedNodeDaemonHandle;
|
|
280
|
+
}
|
|
281
|
+
export {};
|
|
282
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|