agenthub-multiagent-mcp 1.20.0 → 1.20.2
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/dist/client.d.ts +13 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -1
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +37 -1
- package/dist/client.test.js.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/server-time.d.ts +13 -0
- package/dist/lib/server-time.d.ts.map +1 -0
- package/dist/lib/server-time.js +65 -0
- package/dist/lib/server-time.js.map +1 -0
- package/dist/lib/server-time.test.d.ts +2 -0
- package/dist/lib/server-time.test.d.ts.map +1 -0
- package/dist/lib/server-time.test.js +83 -0
- package/dist/lib/server-time.test.js.map +1 -0
- package/dist/state.d.ts +8 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +19 -0
- package/dist/state.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +173 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/openspec-viz/diagram-generator.d.ts.map +1 -1
- package/dist/tools/openspec-viz/diagram-generator.js +2 -1
- package/dist/tools/openspec-viz/diagram-generator.js.map +1 -1
- package/dist/tools/openspec-viz/html-generator.d.ts.map +1 -1
- package/dist/tools/openspec-viz/html-generator.js +2 -1
- package/dist/tools/openspec-viz/html-generator.js.map +1 -1
- package/dist/tools/openspec-viz/parser.d.ts +1 -0
- package/dist/tools/openspec-viz/parser.d.ts.map +1 -1
- package/dist/tools/openspec-viz/parser.js +14 -2
- package/dist/tools/openspec-viz/parser.js.map +1 -1
- package/dist/tools/tools.test.js +77 -2
- package/dist/tools/tools.test.js.map +1 -1
- package/package.json +1 -1
- package/skills/catalog.json +33 -33
package/dist/state.js
CHANGED
|
@@ -165,4 +165,23 @@ export function stateExists(workingDir) {
|
|
|
165
165
|
export function getCurrentOwner() {
|
|
166
166
|
return os.userInfo().username;
|
|
167
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Read the plaintext hook-agent-id file written alongside the state file.
|
|
170
|
+
* Returns null if the file doesn't exist or can't be read.
|
|
171
|
+
* Used as a fallback in gracefulShutdown when currentAgentId is null (i.e.,
|
|
172
|
+
* agent_register was never called in this session but a prior session left
|
|
173
|
+
* the hook file behind).
|
|
174
|
+
*/
|
|
175
|
+
export function readHookAgentId(workingDir) {
|
|
176
|
+
try {
|
|
177
|
+
const hookPath = path.join(getStateDir(workingDir), "hook-agent-id");
|
|
178
|
+
if (!fs.existsSync(hookPath))
|
|
179
|
+
return null;
|
|
180
|
+
const id = fs.readFileSync(hookPath, "utf8").trim();
|
|
181
|
+
return id || null;
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
168
187
|
//# sourceMappingURL=state.js.map
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAqD,MAAM,cAAc,CAAC;AACrG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAqD,MAAM,cAAc,CAAC;AACrG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AA6B/D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,MAAM,WAAW,CAAC;CACnC;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAwJD,wBAAgB,aAAa,IAAI,IAAI,EAAE,CA4xDtC;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CA+1DlB"}
|
package/dist/tools/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import * as brainCapture from "../hooks/brainCapture.js";
|
|
|
8
8
|
import { getBrain } from "../brain/backend.js";
|
|
9
9
|
import open from "open";
|
|
10
10
|
import { registerOpenSpecVizTools, handleOpenSpecVizToolCall } from "./openspec-viz/index.js";
|
|
11
|
+
import { getServerTime, useTimeInjection } from "../lib/server-time.js";
|
|
11
12
|
/**
|
|
12
13
|
* Background sync: pushes local context to server after every save.
|
|
13
14
|
* Non-blocking — logs errors but never throws.
|
|
@@ -92,7 +93,7 @@ async function wrapWithPendingItems(client, agentId, result, context) {
|
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
95
|
}
|
|
95
|
-
|
|
96
|
+
const wrapped = {
|
|
96
97
|
result,
|
|
97
98
|
pending_messages: messages,
|
|
98
99
|
pending_messages_count: messages.length,
|
|
@@ -100,6 +101,15 @@ async function wrapWithPendingItems(client, agentId, result, context) {
|
|
|
100
101
|
pending_tasks_count: tasks.length,
|
|
101
102
|
urgent_action: urgentAction,
|
|
102
103
|
};
|
|
104
|
+
if (useTimeInjection()) {
|
|
105
|
+
try {
|
|
106
|
+
wrapped.server_time = await getServerTime(client.getBaseUrl());
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
console.warn("server_time injection failed:", err);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return wrapped;
|
|
103
113
|
}
|
|
104
114
|
catch (error) {
|
|
105
115
|
// Don't break tool call if fetch fails
|
|
@@ -229,6 +239,56 @@ export function registerTools() {
|
|
|
229
239
|
properties: {},
|
|
230
240
|
},
|
|
231
241
|
},
|
|
242
|
+
// Time orientation (add-time-aware-agents §1.3)
|
|
243
|
+
{
|
|
244
|
+
name: "now",
|
|
245
|
+
description: "Get the current canonical AgentHub server time. Force-refreshes past the 60-second cache used by automatic response injection. Use this when stamping anything time-sensitive (commit messages, brain knowledge, audit notes) — gives wall-clock truth from the server, not the LLM's guess. No registration required.",
|
|
246
|
+
inputSchema: {
|
|
247
|
+
type: "object",
|
|
248
|
+
properties: {},
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
// Cron correlation (add-time-aware-agents §4)
|
|
252
|
+
{
|
|
253
|
+
name: "cron_next_fire",
|
|
254
|
+
description: "Look up when a named cron job will next fire. Returns next_run_utc, seconds_until, schedule, and enabled status. Use this to answer 'when does X run next?' without parsing cron expressions yourself. (requires agent_register first)",
|
|
255
|
+
inputSchema: {
|
|
256
|
+
type: "object",
|
|
257
|
+
properties: {
|
|
258
|
+
name: {
|
|
259
|
+
type: "string",
|
|
260
|
+
description: "Cron job name (matches cron_jobs.name in the agent's org)",
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
required: ["name"],
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
name: "cron_time_until",
|
|
268
|
+
description: "Convenience wrapper over cron_next_fire — returns just the integer seconds until the next firing (negative if past). Useful for quick 'is X due?' checks. (requires agent_register first)",
|
|
269
|
+
inputSchema: {
|
|
270
|
+
type: "object",
|
|
271
|
+
properties: {
|
|
272
|
+
name: { type: "string", description: "Cron job name" },
|
|
273
|
+
},
|
|
274
|
+
required: ["name"],
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
name: "cron_fired_since",
|
|
279
|
+
description: "Check whether a cron actually fired in a given window. Returns executions_in_window, fired (bool), last_run_advanced (bool), and scheduler_recorded_run_without_execution — the diagnostic for the brain-consolidate-style bug where last_run advances but no cron_executions row gets written. Use this to debug 'did the cron run or not?' (requires agent_register first)",
|
|
280
|
+
inputSchema: {
|
|
281
|
+
type: "object",
|
|
282
|
+
properties: {
|
|
283
|
+
name: { type: "string", description: "Cron job name" },
|
|
284
|
+
since: {
|
|
285
|
+
type: "string",
|
|
286
|
+
description: "ISO-8601 / RFC 3339 timestamp; the start of the inspection window",
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
required: ["name", "since"],
|
|
290
|
+
},
|
|
291
|
+
},
|
|
232
292
|
// Event subscription tools
|
|
233
293
|
{
|
|
234
294
|
name: "agent_subscribe_event",
|
|
@@ -1832,6 +1892,46 @@ export function registerTools() {
|
|
|
1832
1892
|
required: ["project_id"],
|
|
1833
1893
|
},
|
|
1834
1894
|
},
|
|
1895
|
+
// ── Secrets Vault ──
|
|
1896
|
+
{
|
|
1897
|
+
name: "secret_set",
|
|
1898
|
+
description: "Create or update a secret in the vault. Returns { secret, rotated } where rotated=true if the secret already existed.",
|
|
1899
|
+
inputSchema: {
|
|
1900
|
+
type: "object",
|
|
1901
|
+
properties: {
|
|
1902
|
+
name: { type: "string", description: "Secret name (unique per scope+project)" },
|
|
1903
|
+
value: { type: "string", description: "Secret value (encrypted at rest)" },
|
|
1904
|
+
scope: { type: "string", enum: ["org", "project", "agent"], description: "Visibility scope (default: org)" },
|
|
1905
|
+
project_id: { type: "string", description: "Project ID (required if scope=project)" },
|
|
1906
|
+
tags: { type: "string", description: "JSON array of tags for categorization" },
|
|
1907
|
+
},
|
|
1908
|
+
required: ["name", "value"],
|
|
1909
|
+
},
|
|
1910
|
+
},
|
|
1911
|
+
{
|
|
1912
|
+
name: "secret_get",
|
|
1913
|
+
description: "Retrieve a secret value from the vault. Access is enforced by scope: org secrets are visible to all agents, project secrets require matching project, agent secrets are private to the creator.",
|
|
1914
|
+
inputSchema: {
|
|
1915
|
+
type: "object",
|
|
1916
|
+
properties: {
|
|
1917
|
+
name: { type: "string", description: "Secret name" },
|
|
1918
|
+
scope: { type: "string", enum: ["org", "project", "agent"], description: "Scope to look in (default: org)" },
|
|
1919
|
+
project_id: { type: "string", description: "Project ID for project-scoped lookups" },
|
|
1920
|
+
},
|
|
1921
|
+
required: ["name"],
|
|
1922
|
+
},
|
|
1923
|
+
},
|
|
1924
|
+
{
|
|
1925
|
+
name: "secret_list",
|
|
1926
|
+
description: "List secret names and metadata (never values). Filter by scope or project.",
|
|
1927
|
+
inputSchema: {
|
|
1928
|
+
type: "object",
|
|
1929
|
+
properties: {
|
|
1930
|
+
scope: { type: "string", enum: ["org", "project", "agent"], description: "Filter by scope" },
|
|
1931
|
+
project_id: { type: "string", description: "Filter by project ID" },
|
|
1932
|
+
},
|
|
1933
|
+
},
|
|
1934
|
+
},
|
|
1835
1935
|
];
|
|
1836
1936
|
}
|
|
1837
1937
|
export async function handleToolCall(name, args, client, context) {
|
|
@@ -2231,6 +2331,46 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
2231
2331
|
} : null,
|
|
2232
2332
|
};
|
|
2233
2333
|
}
|
|
2334
|
+
case "now": {
|
|
2335
|
+
// No wrapping — server_time would otherwise overshadow the explicit
|
|
2336
|
+
// tool result. Force-refresh past the cache so the agent gets a fresh
|
|
2337
|
+
// server timestamp every time it asks.
|
|
2338
|
+
return await getServerTime(client.getBaseUrl(), { force: true });
|
|
2339
|
+
}
|
|
2340
|
+
case "cron_next_fire":
|
|
2341
|
+
case "cron_time_until": {
|
|
2342
|
+
const cronName = args.name;
|
|
2343
|
+
if (!cronName)
|
|
2344
|
+
throw new Error("name is required");
|
|
2345
|
+
const url = `${client.getBaseUrl()}/cron/by-name/${encodeURIComponent(cronName)}`;
|
|
2346
|
+
const res = await fetch(url, {
|
|
2347
|
+
headers: { "X-API-Key": client.getApiKey() },
|
|
2348
|
+
});
|
|
2349
|
+
if (!res.ok) {
|
|
2350
|
+
return { ok: false, status: res.status, error: await res.text() };
|
|
2351
|
+
}
|
|
2352
|
+
const body = (await res.json());
|
|
2353
|
+
if (name === "cron_time_until") {
|
|
2354
|
+
return { name: cronName, seconds_until: body.seconds_until };
|
|
2355
|
+
}
|
|
2356
|
+
return body;
|
|
2357
|
+
}
|
|
2358
|
+
case "cron_fired_since": {
|
|
2359
|
+
const cronName = args.name;
|
|
2360
|
+
const since = args.since;
|
|
2361
|
+
if (!cronName)
|
|
2362
|
+
throw new Error("name is required");
|
|
2363
|
+
if (!since)
|
|
2364
|
+
throw new Error("since is required");
|
|
2365
|
+
const url = `${client.getBaseUrl()}/cron/by-name/${encodeURIComponent(cronName)}/fired-since?since=${encodeURIComponent(since)}`;
|
|
2366
|
+
const res = await fetch(url, {
|
|
2367
|
+
headers: { "X-API-Key": client.getApiKey() },
|
|
2368
|
+
});
|
|
2369
|
+
if (!res.ok) {
|
|
2370
|
+
return { ok: false, status: res.status, error: await res.text() };
|
|
2371
|
+
}
|
|
2372
|
+
return await res.json();
|
|
2373
|
+
}
|
|
2234
2374
|
// Event subscriptions
|
|
2235
2375
|
case "agent_subscribe_event": {
|
|
2236
2376
|
if (!agentId)
|
|
@@ -3455,6 +3595,38 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
3455
3595
|
const projectId = args.project_id;
|
|
3456
3596
|
return client.post(`/projects/${projectId}/features/sync-openspec`, {});
|
|
3457
3597
|
}
|
|
3598
|
+
// ── Secrets Vault ──
|
|
3599
|
+
case "secret_set": {
|
|
3600
|
+
const body = {
|
|
3601
|
+
name: args.name,
|
|
3602
|
+
value: args.value,
|
|
3603
|
+
scope: args.scope || "org",
|
|
3604
|
+
};
|
|
3605
|
+
if (args.project_id)
|
|
3606
|
+
body.project_id = args.project_id;
|
|
3607
|
+
if (args.tags)
|
|
3608
|
+
body.tags = args.tags;
|
|
3609
|
+
return client.post("/secrets", body);
|
|
3610
|
+
}
|
|
3611
|
+
case "secret_get": {
|
|
3612
|
+
const name = encodeURIComponent(args.name);
|
|
3613
|
+
const scope = args.scope || "org";
|
|
3614
|
+
let url = `/secrets/${name}?scope=${scope}`;
|
|
3615
|
+
if (args.project_id)
|
|
3616
|
+
url += `&project_id=${encodeURIComponent(args.project_id)}`;
|
|
3617
|
+
return client.get(url);
|
|
3618
|
+
}
|
|
3619
|
+
case "secret_list": {
|
|
3620
|
+
let url = "/secrets";
|
|
3621
|
+
const params = [];
|
|
3622
|
+
if (args.scope)
|
|
3623
|
+
params.push(`scope=${encodeURIComponent(args.scope)}`);
|
|
3624
|
+
if (args.project_id)
|
|
3625
|
+
params.push(`project_id=${encodeURIComponent(args.project_id)}`);
|
|
3626
|
+
if (params.length)
|
|
3627
|
+
url += "?" + params.join("&");
|
|
3628
|
+
return client.get(url);
|
|
3629
|
+
}
|
|
3458
3630
|
default:
|
|
3459
3631
|
throw new Error(`Unknown tool: ${name}`);
|
|
3460
3632
|
}
|