agenthub-multiagent-mcp 1.74.0 → 1.76.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/dist/client.d.ts +37 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/setup-shell.js +11 -11
- package/dist/employee.d.ts +11 -0
- package/dist/employee.d.ts.map +1 -1
- package/dist/employee.js +64 -1
- package/dist/employee.js.map +1 -1
- package/dist/employee.test.js +88 -1
- package/dist/employee.test.js.map +1 -1
- package/dist/goshtiChannel/client.d.ts +9 -0
- package/dist/goshtiChannel/client.d.ts.map +1 -0
- package/dist/goshtiChannel/client.js +63 -0
- package/dist/goshtiChannel/client.js.map +1 -0
- package/dist/goshtiChannel/config.d.ts +42 -0
- package/dist/goshtiChannel/config.d.ts.map +1 -0
- package/dist/goshtiChannel/config.js +129 -0
- package/dist/goshtiChannel/config.js.map +1 -0
- package/dist/goshtiChannel/config.test.d.ts +2 -0
- package/dist/goshtiChannel/config.test.d.ts.map +1 -0
- package/dist/goshtiChannel/config.test.js +73 -0
- package/dist/goshtiChannel/config.test.js.map +1 -0
- package/dist/goshtiChannel/core.d.ts +63 -0
- package/dist/goshtiChannel/core.d.ts.map +1 -0
- package/dist/goshtiChannel/core.js +237 -0
- package/dist/goshtiChannel/core.js.map +1 -0
- package/dist/goshtiChannel/core.test.d.ts +2 -0
- package/dist/goshtiChannel/core.test.d.ts.map +1 -0
- package/dist/goshtiChannel/core.test.js +250 -0
- package/dist/goshtiChannel/core.test.js.map +1 -0
- package/dist/goshtiChannel/credential.d.ts +29 -0
- package/dist/goshtiChannel/credential.d.ts.map +1 -0
- package/dist/goshtiChannel/credential.js +160 -0
- package/dist/goshtiChannel/credential.js.map +1 -0
- package/dist/goshtiChannel/credential.test.d.ts +2 -0
- package/dist/goshtiChannel/credential.test.d.ts.map +1 -0
- package/dist/goshtiChannel/credential.test.js +127 -0
- package/dist/goshtiChannel/credential.test.js.map +1 -0
- package/dist/goshtiChannel/e2e.test.d.ts +2 -0
- package/dist/goshtiChannel/e2e.test.d.ts.map +1 -0
- package/dist/goshtiChannel/e2e.test.js +163 -0
- package/dist/goshtiChannel/e2e.test.js.map +1 -0
- package/dist/goshtiChannel/policy.d.ts +154 -0
- package/dist/goshtiChannel/policy.d.ts.map +1 -0
- package/dist/goshtiChannel/policy.js +240 -0
- package/dist/goshtiChannel/policy.js.map +1 -0
- package/dist/goshtiChannel/policy.test.d.ts +2 -0
- package/dist/goshtiChannel/policy.test.d.ts.map +1 -0
- package/dist/goshtiChannel/policy.test.js +263 -0
- package/dist/goshtiChannel/policy.test.js.map +1 -0
- package/dist/goshtiChannel/setup.d.ts +15 -0
- package/dist/goshtiChannel/setup.d.ts.map +1 -0
- package/dist/goshtiChannel/setup.js +125 -0
- package/dist/goshtiChannel/setup.js.map +1 -0
- package/dist/goshtiChannel/setup.test.d.ts +2 -0
- package/dist/goshtiChannel/setup.test.d.ts.map +1 -0
- package/dist/goshtiChannel/setup.test.js +96 -0
- package/dist/goshtiChannel/setup.test.js.map +1 -0
- package/dist/goshtiChannel/stream.d.ts +39 -0
- package/dist/goshtiChannel/stream.d.ts.map +1 -0
- package/dist/goshtiChannel/stream.js +174 -0
- package/dist/goshtiChannel/stream.js.map +1 -0
- package/dist/goshtiChannel/stream.test.d.ts +2 -0
- package/dist/goshtiChannel/stream.test.d.ts.map +1 -0
- package/dist/goshtiChannel/stream.test.js +164 -0
- package/dist/goshtiChannel/stream.test.js.map +1 -0
- package/dist/goshtiChannel.d.ts +22 -0
- package/dist/goshtiChannel.d.ts.map +1 -0
- package/dist/goshtiChannel.js +193 -0
- package/dist/goshtiChannel.js.map +1 -0
- package/dist/state.d.ts +2 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js.map +1 -1
- package/dist/tools/brainWriteCheck.test.d.ts +10 -0
- package/dist/tools/brainWriteCheck.test.d.ts.map +1 -0
- package/dist/tools/brainWriteCheck.test.js +67 -0
- package/dist/tools/brainWriteCheck.test.js.map +1 -0
- package/dist/tools/brainstormTurnAnnotations.test.d.ts +8 -0
- package/dist/tools/brainstormTurnAnnotations.test.d.ts.map +1 -0
- package/dist/tools/brainstormTurnAnnotations.test.js +93 -0
- package/dist/tools/brainstormTurnAnnotations.test.js.map +1 -0
- package/dist/tools/employeeTraining.d.ts +46 -0
- package/dist/tools/employeeTraining.d.ts.map +1 -0
- package/dist/tools/employeeTraining.js +329 -0
- package/dist/tools/employeeTraining.js.map +1 -0
- package/dist/tools/employeeTraining.test.d.ts +7 -0
- package/dist/tools/employeeTraining.test.d.ts.map +1 -0
- package/dist/tools/employeeTraining.test.js +190 -0
- package/dist/tools/employeeTraining.test.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +231 -6
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/runs.d.ts +43 -0
- package/dist/tools/runs.d.ts.map +1 -0
- package/dist/tools/runs.js +280 -0
- package/dist/tools/runs.js.map +1 -0
- package/dist/tools/runs.test.d.ts +9 -0
- package/dist/tools/runs.test.d.ts.map +1 -0
- package/dist/tools/runs.test.js +114 -0
- package/dist/tools/runs.test.js.map +1 -0
- package/dist/tools/tools.test.js +153 -2
- package/dist/tools/tools.test.js.map +1 -1
- package/package.json +79 -78
- package/skills/catalog.json +3 -2
- package/skills/manifest.json +2 -1
- package/skills/skills/multiagent-brainstorm/SKILL.md +50 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"employeeTraining.js","sourceRoot":"","sources":["../../src/tools/employeeTraining.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Employee training MCP tools (add-employee-training-loops §1.3 manual trigger,
|
|
3
|
+
* §2–§3). Handlers against a mocked ApiClient for result/refusal shaping, and
|
|
4
|
+
* the real ApiClient with fetch stubbed for the wire contract.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=employeeTraining.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"employeeTraining.test.d.ts","sourceRoot":"","sources":["../../src/tools/employeeTraining.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Employee training MCP tools (add-employee-training-loops §1.3 manual trigger,
|
|
3
|
+
* §2–§3). Handlers against a mocked ApiClient for result/refusal shaping, and
|
|
4
|
+
* the real ApiClient with fetch stubbed for the wire contract.
|
|
5
|
+
*/
|
|
6
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
7
|
+
import { EMPLOYEE_TRAINING_TOOLS, handleEmployeeTrainingToolCall, isEmployeeTrainingTool, registerEmployeeTrainingTools, } from "./employeeTraining.js";
|
|
8
|
+
import { ApiClient } from "../client.js";
|
|
9
|
+
function mockClient(overrides = {}) {
|
|
10
|
+
return {
|
|
11
|
+
getTrainingObservations: vi.fn(),
|
|
12
|
+
runTrainingPass: vi.fn(),
|
|
13
|
+
listTrainingRecords: vi.fn(),
|
|
14
|
+
getTrainingCurriculum: vi.fn(),
|
|
15
|
+
...overrides,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const ok = (data, status = 200) => ({ ok: true, status, data });
|
|
19
|
+
const fail = (status, error, message) => ({
|
|
20
|
+
ok: false,
|
|
21
|
+
status,
|
|
22
|
+
error,
|
|
23
|
+
message,
|
|
24
|
+
data: { error, message },
|
|
25
|
+
});
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
vi.unstubAllGlobals();
|
|
28
|
+
vi.restoreAllMocks();
|
|
29
|
+
});
|
|
30
|
+
describe("employee training tool registration", () => {
|
|
31
|
+
it("registers the four training tools", () => {
|
|
32
|
+
expect(registerEmployeeTrainingTools().map((t) => t.name)).toEqual([...EMPLOYEE_TRAINING_TOOLS]);
|
|
33
|
+
expect(EMPLOYEE_TRAINING_TOOLS).toEqual([
|
|
34
|
+
"employee_training_observe",
|
|
35
|
+
"employee_training_run",
|
|
36
|
+
"employee_training_history",
|
|
37
|
+
"employee_training_curriculum",
|
|
38
|
+
]);
|
|
39
|
+
expect(isEmployeeTrainingTool("employee_training_run")).toBe(true);
|
|
40
|
+
expect(isEmployeeTrainingTool("employee_get")).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
it("offers only the charter fields the server accepts", () => {
|
|
43
|
+
const run = registerEmployeeTrainingTools().find((t) => t.name === "employee_training_run");
|
|
44
|
+
const edits = run.inputSchema.properties.charter_edits;
|
|
45
|
+
expect(edits.items.properties.field.enum).toEqual(["mission", "responsibilities", "scope", "success_metrics"]);
|
|
46
|
+
expect(run.inputSchema.required).toEqual(["agent_id"]);
|
|
47
|
+
});
|
|
48
|
+
it("says a charter edit is only a proposal", () => {
|
|
49
|
+
const run = registerEmployeeTrainingTools().find((t) => t.name === "employee_training_run");
|
|
50
|
+
expect(run.description).toMatch(/person/i);
|
|
51
|
+
expect(run.description).toMatch(/not applied|never applied|nothing changes/i);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe("employee_training_run", () => {
|
|
55
|
+
it("passes lessons, edits and spend through and summarises the record", async () => {
|
|
56
|
+
const runTrainingPass = vi.fn().mockResolvedValue(ok({
|
|
57
|
+
record: {
|
|
58
|
+
id: "rec-1",
|
|
59
|
+
status: "completed",
|
|
60
|
+
lessons: [{ text: "a", duplicate: false }, { text: "b", duplicate: true }],
|
|
61
|
+
proposed_charter_edits: [{ field: "scope", review_id: "rev-1", state: "pending" }],
|
|
62
|
+
budget_spent: 900,
|
|
63
|
+
budget_limit: 50000,
|
|
64
|
+
},
|
|
65
|
+
scorecard: { score: 72, ladder: { decision: "hold" } },
|
|
66
|
+
}));
|
|
67
|
+
const client = mockClient({ runTrainingPass });
|
|
68
|
+
const out = (await handleEmployeeTrainingToolCall("employee_training_run", {
|
|
69
|
+
agent_id: "eng-ic-test",
|
|
70
|
+
lessons: ["a", "b"],
|
|
71
|
+
charter_edits: [{ field: "scope", after: "x", rationale: "y" }],
|
|
72
|
+
tokens_spent: 900,
|
|
73
|
+
window_days: 7,
|
|
74
|
+
}, client));
|
|
75
|
+
expect(runTrainingPass).toHaveBeenCalledWith("eng-ic-test", {
|
|
76
|
+
lessons: ["a", "b"],
|
|
77
|
+
charter_edits: [{ field: "scope", after: "x", rationale: "y" }],
|
|
78
|
+
tokens_spent: 900,
|
|
79
|
+
window_days: 7,
|
|
80
|
+
});
|
|
81
|
+
expect(out.ok).toBe(true);
|
|
82
|
+
expect(out.record_id).toBe("rec-1");
|
|
83
|
+
expect(out.message).toContain("1 new lesson");
|
|
84
|
+
expect(out.message).toContain("1 already known");
|
|
85
|
+
expect(out.message).toContain("rev-1");
|
|
86
|
+
expect(out.message).toMatch(/person/i);
|
|
87
|
+
});
|
|
88
|
+
it("passes practice and skills through and summarises them", async () => {
|
|
89
|
+
const runTrainingPass = vi.fn().mockResolvedValue(ok({
|
|
90
|
+
record: {
|
|
91
|
+
id: "rec-3",
|
|
92
|
+
status: "partial",
|
|
93
|
+
stop_reason: "budget_exhausted",
|
|
94
|
+
lessons: [],
|
|
95
|
+
proposed_charter_edits: [],
|
|
96
|
+
practice_scores: [
|
|
97
|
+
{ item_id: "cur-blocked", state: "graded", passed: true },
|
|
98
|
+
{ item_id: "cur-planning", state: "assigned" },
|
|
99
|
+
{ item_id: "cur-guardrails", state: "skipped_budget" },
|
|
100
|
+
],
|
|
101
|
+
skills_added: [
|
|
102
|
+
{ name: "brag", state: "install_sent" },
|
|
103
|
+
{ name: "cybersecurity", state: "pending_approval", review_id: "rev-s" },
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
scorecard: {},
|
|
107
|
+
}));
|
|
108
|
+
const client = mockClient({ runTrainingPass });
|
|
109
|
+
const practice = { item_ids: ["cur-blocked", "cur-planning", "cur-guardrails"] };
|
|
110
|
+
const skills = [{ pack: "brag" }, { pack: "cybersecurity", gap: "secrets" }];
|
|
111
|
+
const out = (await handleEmployeeTrainingToolCall("employee_training_run", { agent_id: "e", practice, skills }, client));
|
|
112
|
+
expect(runTrainingPass).toHaveBeenCalledWith("e", { practice, skills });
|
|
113
|
+
expect(out.message).toContain("1 graded (1 passed), 1 sent");
|
|
114
|
+
expect(out.message).toContain("1 not sent (budget)");
|
|
115
|
+
expect(out.message).toContain("rev-s");
|
|
116
|
+
expect(out.message).toMatch(/person/i);
|
|
117
|
+
});
|
|
118
|
+
it("describes the governed skill install", () => {
|
|
119
|
+
const run = registerEmployeeTrainingTools().find((t) => t.name === "employee_training_run");
|
|
120
|
+
const skills = run.inputSchema.properties.skills;
|
|
121
|
+
expect(skills.description).toMatch(/skill-pack:<name>/);
|
|
122
|
+
expect(skills.description).toMatch(/No agent can approve/);
|
|
123
|
+
});
|
|
124
|
+
it("reports a partial pass as stopped by the budget", async () => {
|
|
125
|
+
const client = mockClient({
|
|
126
|
+
runTrainingPass: vi.fn().mockResolvedValue(ok({
|
|
127
|
+
record: { id: "rec-2", status: "partial", stop_reason: "budget_exhausted", lessons: [], proposed_charter_edits: [] },
|
|
128
|
+
scorecard: {},
|
|
129
|
+
})),
|
|
130
|
+
});
|
|
131
|
+
const out = (await handleEmployeeTrainingToolCall("employee_training_run", { agent_id: "e" }, client));
|
|
132
|
+
expect(out.status).toBe("partial");
|
|
133
|
+
expect(out.message).toMatch(/budget/i);
|
|
134
|
+
});
|
|
135
|
+
it.each([
|
|
136
|
+
["training_disabled", 503, /AGENTHUB_EMPLOYEE_TRAINING_ENABLED/],
|
|
137
|
+
["self_training", 403, /cannot train itself/i],
|
|
138
|
+
["trainer_required", 403, /trainer/i],
|
|
139
|
+
["not_employee", 404, /not an employee/i],
|
|
140
|
+
])("turns %s into an actionable refusal", async (code, status, pattern) => {
|
|
141
|
+
const client = mockClient({ runTrainingPass: vi.fn().mockResolvedValue(fail(status, code)) });
|
|
142
|
+
const out = (await handleEmployeeTrainingToolCall("employee_training_run", { agent_id: "e" }, client));
|
|
143
|
+
expect(out.ok).toBe(false);
|
|
144
|
+
expect(out.error).toBe(code);
|
|
145
|
+
expect(out.message).toMatch(pattern);
|
|
146
|
+
});
|
|
147
|
+
it("requires agent_id", async () => {
|
|
148
|
+
await expect(handleEmployeeTrainingToolCall("employee_training_run", {}, mockClient())).rejects.toThrow(/agent_id/);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
describe("observe and history", () => {
|
|
152
|
+
it("returns observations unchanged", async () => {
|
|
153
|
+
const obs = { agent_id: "e", shifts: [{ message_id: "m1" }] };
|
|
154
|
+
const client = mockClient({ getTrainingObservations: vi.fn().mockResolvedValue(ok(obs)) });
|
|
155
|
+
const out = (await handleEmployeeTrainingToolCall("employee_training_observe", { agent_id: "e", window_days: 3 }, client));
|
|
156
|
+
expect(client.getTrainingObservations).toHaveBeenCalledWith("e", 3);
|
|
157
|
+
expect(out.ok).toBe(true);
|
|
158
|
+
expect(out.observations).toEqual(obs);
|
|
159
|
+
});
|
|
160
|
+
it("lists history", async () => {
|
|
161
|
+
const client = mockClient({ listTrainingRecords: vi.fn().mockResolvedValue(ok({ records: [{ id: "r" }], total: 1 })) });
|
|
162
|
+
const out = (await handleEmployeeTrainingToolCall("employee_training_history", { agent_id: "e" }, client));
|
|
163
|
+
expect(client.listTrainingRecords).toHaveBeenCalledWith("e", undefined);
|
|
164
|
+
expect(out.records).toEqual([{ id: "r" }]);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe("wire contract", () => {
|
|
168
|
+
it("hits the employee training routes", async () => {
|
|
169
|
+
const fetchSpy = vi.fn(async () => ({
|
|
170
|
+
ok: true,
|
|
171
|
+
status: 200,
|
|
172
|
+
text: async () => JSON.stringify({ record: { id: "r" } }),
|
|
173
|
+
}));
|
|
174
|
+
vi.stubGlobal("fetch", fetchSpy);
|
|
175
|
+
const client = new ApiClient("https://hub.example/api", "key");
|
|
176
|
+
await client.runTrainingPass("eng ic", { lessons: ["x"] });
|
|
177
|
+
await client.getTrainingObservations("eng ic", 5);
|
|
178
|
+
await client.listTrainingRecords("eng ic", 10);
|
|
179
|
+
await client.getTrainingCurriculum("eng ic", 2);
|
|
180
|
+
const calls = fetchSpy.mock.calls;
|
|
181
|
+
expect(calls[0][0]).toBe("https://hub.example/api/employees/eng%20ic/training");
|
|
182
|
+
expect(calls[0][1].method).toBe("POST");
|
|
183
|
+
expect(JSON.parse(String(calls[0][1].body))).toEqual({ lessons: ["x"] });
|
|
184
|
+
expect(calls[1][0]).toBe("https://hub.example/api/employees/eng%20ic/training/observations?window_days=5");
|
|
185
|
+
expect(calls[1][1].method).toBe("GET");
|
|
186
|
+
expect(calls[2][0]).toBe("https://hub.example/api/employees/eng%20ic/training?limit=10");
|
|
187
|
+
expect(calls[3][0]).toBe("https://hub.example/api/employees/eng%20ic/training/curriculum?tickets=2");
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=employeeTraining.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"employeeTraining.test.js","sourceRoot":"","sources":["../../src/tools/employeeTraining.test.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;AAOrG,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;AAOrG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAkH/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;;;OAGG;IACH,cAAc,EAAE,MAAM,WAAW,CAAC;IAClC,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,WAAW,CAAC;IACpC,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,KAAK,IAAI,CAAC;CACZ;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;AAyLD,wBAAgB,aAAa,IAAI,IAAI,EAAE,CAohGtC;AAqCD,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,CAwyFlB"}
|
package/dist/tools/index.js
CHANGED
|
@@ -12,8 +12,10 @@ import open from "open";
|
|
|
12
12
|
import { registerOpenSpecVizTools, handleOpenSpecVizToolCall } from "./openspec-viz/index.js";
|
|
13
13
|
import { syncTaskGroups, describeTaskSync } from "./openspec-viz/taskSync.js";
|
|
14
14
|
import { registerIntakeRequestTools, handleIntakeRequestToolCall, isIntakeRequestTool, } from "./intakeRequests.js";
|
|
15
|
+
import { handleEmployeeTrainingToolCall, isEmployeeTrainingTool, registerEmployeeTrainingTools, } from "./employeeTraining.js";
|
|
15
16
|
import { registerSessionControlTools, handleSessionControlToolCall, isSessionControlTool, } from "./sessionControl.js";
|
|
16
17
|
import { registerGoshtiReadTools, handleGoshtiReadToolCall, isGoshtiReadTool, } from "./goshtiRead.js";
|
|
18
|
+
import { registerRunTools, handleRunToolCall, isRunTool } from "./runs.js";
|
|
17
19
|
import { installPackFromArchive } from "../skillPackInstaller.js";
|
|
18
20
|
import { getServerTime, useTimeInjection } from "../lib/server-time.js";
|
|
19
21
|
import { getPendingItems } from "../lib/pending-items.js";
|
|
@@ -1744,7 +1746,22 @@ export function registerTools() {
|
|
|
1744
1746
|
inputSchema: {
|
|
1745
1747
|
type: "object",
|
|
1746
1748
|
properties: {
|
|
1747
|
-
peer: { type: "string", description: "The peer agent id to brainstorm with (e.g. 'sumit-mobile')." },
|
|
1749
|
+
peer: { type: "string", description: "The peer agent id to brainstorm with (e.g. 'sumit-mobile'). For a group, use participants instead." },
|
|
1750
|
+
participants: {
|
|
1751
|
+
type: "array",
|
|
1752
|
+
items: { type: "string" },
|
|
1753
|
+
description: "Group brainstorm (add-multi-agent-conversations): the agent ids to invite, at most 5 besides you. One id behaves like peer. More than one needs AGENTHUB_GROUP_CONVERSATIONS_ENABLED on the server (else group_conversations_disabled).",
|
|
1754
|
+
},
|
|
1755
|
+
turn_policy: {
|
|
1756
|
+
type: "string",
|
|
1757
|
+
enum: ["round_robin", "free", "moderated"],
|
|
1758
|
+
description: "Group only. round_robin (default): the server names next_speaker in order of joining. free: anyone, but not twice in a row. moderated: the moderator speaks and hands the floor with brainstorm_yield.",
|
|
1759
|
+
},
|
|
1760
|
+
moderator: { type: "string", description: "moderated only: you (default) or one of the participants." },
|
|
1761
|
+
mirror_channel: {
|
|
1762
|
+
type: "string",
|
|
1763
|
+
description: "Group only: a Goshti channel (e.g. '#winery') to mirror every turn to as one thread; people's replies there become human_note turns.",
|
|
1764
|
+
},
|
|
1748
1765
|
topic: { type: "string", description: "One-line subject of the brainstorm." },
|
|
1749
1766
|
escalation: {
|
|
1750
1767
|
type: "string",
|
|
@@ -1757,7 +1774,7 @@ export function registerTools() {
|
|
|
1757
1774
|
description: "Peer-silence backstop in seconds (default 600).",
|
|
1758
1775
|
},
|
|
1759
1776
|
},
|
|
1760
|
-
required: ["
|
|
1777
|
+
required: ["topic"],
|
|
1761
1778
|
},
|
|
1762
1779
|
},
|
|
1763
1780
|
{
|
|
@@ -1784,6 +1801,17 @@ export function registerTools() {
|
|
|
1784
1801
|
enum: ["message", "propose_conclude", "human_note", "system"],
|
|
1785
1802
|
description: "Turn kind (default 'message').",
|
|
1786
1803
|
},
|
|
1804
|
+
// add-live-work-graphs: these are what the brainstorm graph is drawn from.
|
|
1805
|
+
tag: {
|
|
1806
|
+
type: "string",
|
|
1807
|
+
enum: ["idea", "question", "objection", "decision", "summary"],
|
|
1808
|
+
description: "What this turn is for. Tag every turn you can: an untagged turn is drawn as a plain message.",
|
|
1809
|
+
},
|
|
1810
|
+
refs: {
|
|
1811
|
+
type: "array",
|
|
1812
|
+
items: { type: "integer" },
|
|
1813
|
+
description: "The seq numbers of earlier turns in this session that this turn answers or objects to (at most 20). A turn not yet written is refused with invalid_ref.",
|
|
1814
|
+
},
|
|
1787
1815
|
},
|
|
1788
1816
|
required: ["session_id", "body"],
|
|
1789
1817
|
},
|
|
@@ -1800,6 +1828,18 @@ export function registerTools() {
|
|
|
1800
1828
|
required: ["session_id"],
|
|
1801
1829
|
},
|
|
1802
1830
|
},
|
|
1831
|
+
{
|
|
1832
|
+
name: "brainstorm_yield",
|
|
1833
|
+
description: "Moderated group brainstorm only: as the moderator, hand the floor to a joined participant (yield to yourself to take it back). Refusals: not_moderated, not_moderator, yield_target_not_joined. (requires agent_register first)",
|
|
1834
|
+
inputSchema: {
|
|
1835
|
+
type: "object",
|
|
1836
|
+
properties: {
|
|
1837
|
+
session_id: { type: "string", description: "The brainstorm session id." },
|
|
1838
|
+
to: { type: "string", description: "The agent id that gets the floor." },
|
|
1839
|
+
},
|
|
1840
|
+
required: ["session_id", "to"],
|
|
1841
|
+
},
|
|
1842
|
+
},
|
|
1803
1843
|
{
|
|
1804
1844
|
name: "brainstorm_conclude",
|
|
1805
1845
|
description: "Conclude a brainstorm with a structured outcome (mutual consensus). Succeeds ONLY when the peer's last turn was a propose_conclude — else returns conclusion_not_confirmed. The outcome seeds an OpenSpec change. (requires agent_register first)",
|
|
@@ -2178,8 +2218,11 @@ export function registerTools() {
|
|
|
2178
2218
|
...registerSessionControlTools(),
|
|
2179
2219
|
// Intake requests: file, triage, scope check (add-intake-requests §6.1)
|
|
2180
2220
|
...registerIntakeRequestTools(),
|
|
2221
|
+
...registerEmployeeTrainingTools(),
|
|
2181
2222
|
// Reading Goshti as the agent's owner (add-agent-goshti-read §3.1)
|
|
2182
2223
|
...registerGoshtiReadTools(),
|
|
2224
|
+
// Orchestrated runs for the dashboard Run view (add-live-animated-views §1.8)
|
|
2225
|
+
...registerRunTools(),
|
|
2183
2226
|
// OpenSpec Visualizer tools
|
|
2184
2227
|
...registerOpenSpecVizTools(),
|
|
2185
2228
|
// Intel layer tools (§2.5 — read-only MCP surface for intel.search + source catalog)
|
|
@@ -2335,7 +2378,7 @@ export function registerTools() {
|
|
|
2335
2378
|
},
|
|
2336
2379
|
{
|
|
2337
2380
|
name: "brain_write_knowledge",
|
|
2338
|
-
description: "Write an org knowledge fact (decision, convention, architecture insight, blocker, or alert) to the shared org brain.",
|
|
2381
|
+
description: "Write an org knowledge fact (decision, convention, architecture insight, blocker, or alert) to the shared org brain. The result carries `check`: `created` for a new row (with its `id`), or `deduped` when an identical active fact already exists — then `canonical_id` names the existing row if it is your organization's, and nothing is named if the match belongs to another organization. A refusal (missing fact, unknown category) is an error.",
|
|
2339
2382
|
inputSchema: {
|
|
2340
2383
|
type: "object",
|
|
2341
2384
|
properties: {
|
|
@@ -2789,6 +2832,86 @@ export function registerTools() {
|
|
|
2789
2832
|
required: ["project_id"],
|
|
2790
2833
|
},
|
|
2791
2834
|
},
|
|
2835
|
+
// ── Scheduled Reporting (add-scheduled-reporting §6.2) ──
|
|
2836
|
+
// Report schedules are their own rows — create_cron_job cannot express a
|
|
2837
|
+
// report (its schema has no action field). Every tool answers
|
|
2838
|
+
// 503 reporting_disabled while AGENTHUB_REPORTING_ENABLED is off.
|
|
2839
|
+
{
|
|
2840
|
+
name: "report_schedule_create",
|
|
2841
|
+
description: "Create a recurring report schedule. The report composes the chosen sections (shipped_tickets, meeting_decisions, session_digests, roadmap, brain_knowledge, token_usage) over a lookback window, filters them for the audience, and delivers to Slack/chat channels and/or email. Members may deliver to channels and their own email; any other email recipient needs an org owner/admin (a person). Returns the schedule.",
|
|
2842
|
+
inputSchema: {
|
|
2843
|
+
type: "object",
|
|
2844
|
+
properties: {
|
|
2845
|
+
name: { type: "string", description: "Unique name within the org" },
|
|
2846
|
+
schedule: { type: "string", description: "5-field cron, evaluated in UTC (e.g. '0 9 * * 1' = Mondays 09:00)" },
|
|
2847
|
+
sections: {
|
|
2848
|
+
type: "array",
|
|
2849
|
+
items: {
|
|
2850
|
+
type: "string",
|
|
2851
|
+
enum: ["shipped_tickets", "meeting_decisions", "session_digests", "roadmap", "brain_knowledge", "token_usage"],
|
|
2852
|
+
},
|
|
2853
|
+
description: "Sections to include (at least one)",
|
|
2854
|
+
},
|
|
2855
|
+
delivery_targets: {
|
|
2856
|
+
type: "array",
|
|
2857
|
+
items: {
|
|
2858
|
+
type: "object",
|
|
2859
|
+
properties: {
|
|
2860
|
+
kind: { type: "string", enum: ["slack", "email"] },
|
|
2861
|
+
target: { type: "string", description: "Channel (e.g. #leadership) or email address" },
|
|
2862
|
+
},
|
|
2863
|
+
required: ["kind", "target"],
|
|
2864
|
+
},
|
|
2865
|
+
description: "Where to deliver (at least one)",
|
|
2866
|
+
},
|
|
2867
|
+
project_id: { type: "string", description: "Optional project (required for the roadmap section)" },
|
|
2868
|
+
window: { type: "string", description: "Lookback as a Go duration, default 168h, at most 2160h" },
|
|
2869
|
+
audience: {
|
|
2870
|
+
type: "string",
|
|
2871
|
+
enum: ["investor", "leadership", "customer", "product"],
|
|
2872
|
+
description: "Audience filter. Omit for internal. customer/product strip sensitive entries (finance, partners, token spend).",
|
|
2873
|
+
},
|
|
2874
|
+
enabled: { type: "boolean", description: "Default true" },
|
|
2875
|
+
},
|
|
2876
|
+
required: ["name", "schedule", "sections", "delivery_targets"],
|
|
2877
|
+
},
|
|
2878
|
+
},
|
|
2879
|
+
{
|
|
2880
|
+
name: "report_schedule_list",
|
|
2881
|
+
description: "List your org's report schedules (enabled flag, watermark, consecutive failures).",
|
|
2882
|
+
inputSchema: { type: "object", properties: {} },
|
|
2883
|
+
},
|
|
2884
|
+
{
|
|
2885
|
+
name: "report_schedule_delete",
|
|
2886
|
+
description: "Delete a report schedule. Past runs stay readable only while the schedule exists.",
|
|
2887
|
+
inputSchema: {
|
|
2888
|
+
type: "object",
|
|
2889
|
+
properties: { schedule_id: { type: "string", description: "Schedule id" } },
|
|
2890
|
+
required: ["schedule_id"],
|
|
2891
|
+
},
|
|
2892
|
+
},
|
|
2893
|
+
{
|
|
2894
|
+
name: "report_run_now",
|
|
2895
|
+
description: "Force a run of a schedule now, through the same code the cron uses (it delivers, and advances the watermark on delivery). Returns the run: status success|partial|failed, window, per-source availability, per-channel delivery outcome, token accounting.",
|
|
2896
|
+
inputSchema: {
|
|
2897
|
+
type: "object",
|
|
2898
|
+
properties: { schedule_id: { type: "string", description: "Schedule id" } },
|
|
2899
|
+
required: ["schedule_id"],
|
|
2900
|
+
},
|
|
2901
|
+
},
|
|
2902
|
+
{
|
|
2903
|
+
name: "report_get",
|
|
2904
|
+
description: "Read report runs. With run_id: one run, its snapshot, and (format=markdown, the default) the report as delivered. With schedule_id: that schedule's run history, newest first.",
|
|
2905
|
+
inputSchema: {
|
|
2906
|
+
type: "object",
|
|
2907
|
+
properties: {
|
|
2908
|
+
run_id: { type: "string", description: "Run id" },
|
|
2909
|
+
schedule_id: { type: "string", description: "Schedule id (lists runs)" },
|
|
2910
|
+
format: { type: "string", enum: ["json", "markdown"], description: "For run_id: include the rendered markdown (default markdown)" },
|
|
2911
|
+
limit: { type: "number", description: "For schedule_id: max runs (default 50)" },
|
|
2912
|
+
},
|
|
2913
|
+
},
|
|
2914
|
+
},
|
|
2792
2915
|
// ── Secrets Vault ──
|
|
2793
2916
|
{
|
|
2794
2917
|
name: "secret_set",
|
|
@@ -3084,6 +3207,17 @@ function requireBrainstormProject(context) {
|
|
|
3084
3207
|
}
|
|
3085
3208
|
return agentState.project_id;
|
|
3086
3209
|
}
|
|
3210
|
+
// brainstormTurnAnnotations picks brainstorm_turn's tag and refs out of the
|
|
3211
|
+
// tool arguments (add-live-work-graphs). Absent ones are left out of the body;
|
|
3212
|
+
// the server validates both and refuses a bad ref with 400 invalid_ref.
|
|
3213
|
+
function brainstormTurnAnnotations(args) {
|
|
3214
|
+
const out = {};
|
|
3215
|
+
if (typeof args.tag === "string" && args.tag !== "")
|
|
3216
|
+
out.tag = args.tag;
|
|
3217
|
+
if (Array.isArray(args.refs) && args.refs.length > 0)
|
|
3218
|
+
out.refs = args.refs.map((r) => Number(r));
|
|
3219
|
+
return out;
|
|
3220
|
+
}
|
|
3087
3221
|
// brainstormError formats a structured (non-throwing) failure result for a
|
|
3088
3222
|
// brainstorm tool, mirroring the ticket_get error shape.
|
|
3089
3223
|
function brainstormError(tool, result) {
|
|
@@ -3106,6 +3240,10 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
3106
3240
|
if (isIntakeRequestTool(name)) {
|
|
3107
3241
|
return handleIntakeRequestToolCall(name, args, client, () => state.loadState(context.getWorkingDir())?.project_id);
|
|
3108
3242
|
}
|
|
3243
|
+
// Employee training (add-employee-training-loops). Same module pattern.
|
|
3244
|
+
if (isEmployeeTrainingTool(name)) {
|
|
3245
|
+
return handleEmployeeTrainingToolCall(name, args, client);
|
|
3246
|
+
}
|
|
3109
3247
|
// Goshti reads (add-agent-goshti-read §3.1). Same module pattern. The owner's
|
|
3110
3248
|
// grant, the per-agent switch and the fixed tool list are all the server's
|
|
3111
3249
|
// decisions; this only shapes the call and labels the answer as other
|
|
@@ -3113,6 +3251,20 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
3113
3251
|
if (isGoshtiReadTool(name)) {
|
|
3114
3252
|
return handleGoshtiReadToolCall(name, args, client);
|
|
3115
3253
|
}
|
|
3254
|
+
// Orchestrated runs (add-live-animated-views §1.8). Same module pattern. The
|
|
3255
|
+
// run id run_open returns is kept in .agenthub/state, so the other run tools
|
|
3256
|
+
// (and sub-agents sharing the checkout's state) default to it.
|
|
3257
|
+
if (isRunTool(name)) {
|
|
3258
|
+
const workingDir = context.getWorkingDir();
|
|
3259
|
+
return handleRunToolCall(name, args, client, {
|
|
3260
|
+
get: () => state.loadState(workingDir)?.run_id,
|
|
3261
|
+
set: (runId) => {
|
|
3262
|
+
const current = state.loadState(workingDir);
|
|
3263
|
+
if (current)
|
|
3264
|
+
state.saveState(workingDir, { ...current, run_id: runId });
|
|
3265
|
+
},
|
|
3266
|
+
});
|
|
3267
|
+
}
|
|
3116
3268
|
switch (name) {
|
|
3117
3269
|
// Registration
|
|
3118
3270
|
case "agent_register": {
|
|
@@ -4515,21 +4667,31 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
4515
4667
|
// =============================================================================
|
|
4516
4668
|
case "brainstorm_open": {
|
|
4517
4669
|
const projectId = requireBrainstormProject(context);
|
|
4670
|
+
const participants = Array.isArray(args.participants) ? args.participants : undefined;
|
|
4518
4671
|
const result = await client.brainstormOpen(projectId, {
|
|
4519
4672
|
peer: args.peer,
|
|
4520
4673
|
topic: args.topic,
|
|
4521
4674
|
escalation: args.escalation,
|
|
4522
4675
|
max_turns: args.max_turns,
|
|
4523
4676
|
silence_deadline_secs: args.silence_deadline_secs,
|
|
4677
|
+
participants,
|
|
4678
|
+
turn_policy: args.turn_policy,
|
|
4679
|
+
moderator: args.moderator,
|
|
4680
|
+
mirror_channel: args.mirror_channel,
|
|
4524
4681
|
});
|
|
4525
4682
|
if (!result.ok)
|
|
4526
4683
|
return brainstormError("brainstorm_open", result);
|
|
4684
|
+
const invitees = [args.peer, ...(participants ?? [])].filter(Boolean).join(", ");
|
|
4527
4685
|
return {
|
|
4528
4686
|
ok: true,
|
|
4529
4687
|
session_id: result.data.session_id,
|
|
4530
4688
|
display_number: result.data.display_number,
|
|
4531
4689
|
invite_delivered: result.data.invite_delivered ?? true,
|
|
4532
|
-
|
|
4690
|
+
turn_policy: result.data.turn_policy,
|
|
4691
|
+
invites: result.data.invites,
|
|
4692
|
+
mirror_thread_id: result.data.mirror_thread_id,
|
|
4693
|
+
mirror_warning: result.data.mirror_warning,
|
|
4694
|
+
message: `Brainstorm ${result.data.display_number} opened with ${invitees}. Invite delivered${result.data.invite_delivered === false ? " FAILED" : ""}.`,
|
|
4533
4695
|
};
|
|
4534
4696
|
}
|
|
4535
4697
|
case "brainstorm_accept": {
|
|
@@ -4553,7 +4715,8 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
4553
4715
|
}
|
|
4554
4716
|
case "brainstorm_turn": {
|
|
4555
4717
|
const projectId = requireBrainstormProject(context);
|
|
4556
|
-
const result = await client.brainstormTurn(projectId, args.session_id, args.body, args.kind)
|
|
4718
|
+
const result = await client.brainstormTurn(projectId, args.session_id, args.body, args.kind, brainstormTurnAnnotations(args) // add-live-work-graphs
|
|
4719
|
+
);
|
|
4557
4720
|
if (!result.ok)
|
|
4558
4721
|
return brainstormError("brainstorm_turn", result);
|
|
4559
4722
|
return { ok: true, turn: result.data, message: `Turn ${result.data.seq} posted.` };
|
|
@@ -4564,12 +4727,32 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
4564
4727
|
if (!result.ok)
|
|
4565
4728
|
return brainstormError("brainstorm_poll", result);
|
|
4566
4729
|
const turns = Array.isArray(result.data.turns) ? result.data.turns : [];
|
|
4730
|
+
// add-multi-agent-conversations: a group session names who speaks next;
|
|
4731
|
+
// your_turn is set only when it does (undefined for two-agent and free).
|
|
4732
|
+
const nextSpeaker = result.data.next_speaker || undefined;
|
|
4567
4733
|
return {
|
|
4568
4734
|
ok: true,
|
|
4569
4735
|
state: result.data.state,
|
|
4570
4736
|
turn_count: result.data.turn_count,
|
|
4571
4737
|
turns,
|
|
4572
|
-
|
|
4738
|
+
next_speaker: nextSpeaker,
|
|
4739
|
+
your_turn: nextSpeaker ? nextSpeaker === agentId : undefined,
|
|
4740
|
+
turn_policy: result.data.turn_policy || undefined,
|
|
4741
|
+
conclusion_pending: result.data.conclusion_pending,
|
|
4742
|
+
participants: result.data.participants,
|
|
4743
|
+
message: `${turns.length} new turn(s); state=${result.data.state}${nextSpeaker ? `; next speaker ${nextSpeaker}` : ""}.`,
|
|
4744
|
+
};
|
|
4745
|
+
}
|
|
4746
|
+
case "brainstorm_yield": {
|
|
4747
|
+
const projectId = requireBrainstormProject(context);
|
|
4748
|
+
const result = await client.brainstormYield(projectId, args.session_id, args.to);
|
|
4749
|
+
if (!result.ok)
|
|
4750
|
+
return brainstormError("brainstorm_yield", result);
|
|
4751
|
+
return {
|
|
4752
|
+
ok: true,
|
|
4753
|
+
floor: result.data.floor,
|
|
4754
|
+
next_speaker: result.data.next_speaker,
|
|
4755
|
+
message: `Floor handed to ${result.data.next_speaker}.`,
|
|
4573
4756
|
};
|
|
4574
4757
|
}
|
|
4575
4758
|
case "brainstorm_conclude": {
|
|
@@ -5381,6 +5564,48 @@ export async function handleToolCall(name, args, client, context) {
|
|
|
5381
5564
|
body.audience = args.audience;
|
|
5382
5565
|
return client.post(`/projects/${projectId}/roadmap/share/slack`, body);
|
|
5383
5566
|
}
|
|
5567
|
+
// ── Scheduled Reporting (add-scheduled-reporting §6.2) ──
|
|
5568
|
+
case "report_schedule_create": {
|
|
5569
|
+
const body = {
|
|
5570
|
+
name: args.name,
|
|
5571
|
+
schedule: args.schedule,
|
|
5572
|
+
sections: args.sections,
|
|
5573
|
+
delivery_targets: args.delivery_targets,
|
|
5574
|
+
};
|
|
5575
|
+
for (const k of ["project_id", "window", "audience", "enabled"]) {
|
|
5576
|
+
if (args[k] !== undefined)
|
|
5577
|
+
body[k] = args[k];
|
|
5578
|
+
}
|
|
5579
|
+
return client.post("/reports/schedules", body);
|
|
5580
|
+
}
|
|
5581
|
+
case "report_schedule_list":
|
|
5582
|
+
return client.get("/reports/schedules");
|
|
5583
|
+
case "report_schedule_delete": {
|
|
5584
|
+
const id = args.schedule_id;
|
|
5585
|
+
if (!id)
|
|
5586
|
+
throw new Error("schedule_id is required");
|
|
5587
|
+
return client.del(`/reports/schedules/${encodeURIComponent(id)}`);
|
|
5588
|
+
}
|
|
5589
|
+
case "report_run_now": {
|
|
5590
|
+
const id = args.schedule_id;
|
|
5591
|
+
if (!id)
|
|
5592
|
+
throw new Error("schedule_id is required");
|
|
5593
|
+
return client.post(`/reports/schedules/${encodeURIComponent(id)}/run`, {});
|
|
5594
|
+
}
|
|
5595
|
+
case "report_get": {
|
|
5596
|
+
const runId = args.run_id;
|
|
5597
|
+
const scheduleId = args.schedule_id;
|
|
5598
|
+
if (runId) {
|
|
5599
|
+
const format = (args.format || "markdown").toLowerCase();
|
|
5600
|
+
const suffix = format === "markdown" ? "?format=markdown" : "";
|
|
5601
|
+
return client.get(`/reports/runs/${encodeURIComponent(runId)}${suffix}`);
|
|
5602
|
+
}
|
|
5603
|
+
if (scheduleId) {
|
|
5604
|
+
const limit = args.limit !== undefined ? `?limit=${Number(args.limit)}` : "";
|
|
5605
|
+
return client.get(`/reports/schedules/${encodeURIComponent(scheduleId)}/runs${limit}`);
|
|
5606
|
+
}
|
|
5607
|
+
throw new Error("run_id or schedule_id is required");
|
|
5608
|
+
}
|
|
5384
5609
|
// ── Capabilities (add-agent-capabilities Phase 2 §2.3) ──
|
|
5385
5610
|
case "capability_list": {
|
|
5386
5611
|
if (!agentId) {
|