@agentistics/mcp 2.132.6 → 2.134.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.
@@ -1024,7 +1024,7 @@ var AGENT_TOOL_POLICY = {
1024
1024
  agentistics_session_away: {
1025
1025
  ...GROUPS,
1026
1026
  risk: "W",
1027
- routes: ["GET /api/away", "PUT /api/away", "POST /api/away/notice"],
1027
+ routes: ["GET /api/away", "PUT /api/away", "PUT /api/away/session", "POST /api/away/notice"],
1028
1028
  reason: "reads or switches away mode (what newly started sessions are told about the owner being out) and lets a leader raise a notice in the owner's bell; reversible by switching it off; the server accepts writes only from a verified LEADER session"
1029
1029
  },
1030
1030
  agentistics_summary: { ...DATA, capability: "localTranscripts", host: true, risk: "R", routes: ["GET /api/data", "GET /api/runtime/metrics"], reason: "reads computed metrics" },
@@ -2322,7 +2322,7 @@ var TOOLS = [
2322
2322
  },
2323
2323
  {
2324
2324
  name: "agentistics_session_away",
2325
- description: "Read or switch AWAY MODE, or send the owner a notice while away — the owner is out (asleep, travelling) and the fleet carries on without asking them. With no `on` it reports the state (`active`, `until`, what is pre-authorised). With `on: true` it switches it on: `until` is an ISO instant (omit = until the owner says they are back), `authorised` lists what the owner pre-approved (releases = publish releases the leader approved; workers = open worker sessions within the plan limits; merges = merge PRs the leader reviewed), `note` is free text. `on: false` switches it off. Every session started while it is active is told in its briefing. Only a LEADER session may switch it; use it when the owner tells you they are leaving or are back.",
2325
+ description: "Read or switch AWAY MODE, or send the owner a notice while away — the owner is out (asleep, travelling) and the fleet carries on without asking them. With no `on` it reports the state (`active`, `until`, what is pre-authorised). With `on: true` it switches it on: `until` is an ISO instant (omit = until the owner says they are back), `authorised` lists what the owner pre-approved (releases = publish releases the leader approved; workers = open worker sessions within the plan limits; merges = merge PRs the leader reviewed), `note` is free text. `on: false` switches it off. Every session started while it is active is told in its briefing. With `target` (a session's managed id or conversation id) `on` switches THAT session's own away mode instead — it alone is told the owner is out, even with the global switch off, and a running one is told the change; sessions it starts inherit it. Ceilings are per PROVIDER: `topCaps` maps a harness (claude, codex, gemini, copilot, antigravity, kimi, opencode) to how many workers may run on its top model tier at once. Only a LEADER session may switch it; use it when the owner tells you they are leaving or are back.",
2326
2326
  inputSchema: {
2327
2327
  type: "object",
2328
2328
  properties: {
@@ -2331,7 +2331,8 @@ var TOOLS = [
2331
2331
  authorised: { type: "array", items: { type: "string", enum: ["releases", "workers", "merges"] } },
2332
2332
  note: { type: "string", description: "Free text from the owner (max 500 chars)." },
2333
2333
  maxWorkers: { type: "number", description: "Ceiling of worker sessions at once while away (default 6)." },
2334
- maxOpus: { type: "number", description: "Ceiling of those on Opus at once (default 2)." },
2334
+ topCaps: { type: "object", additionalProperties: { type: "number" }, description: "Per provider (harness id → number): ceiling of workers on that provider's top model tier at once (Opus, top GPT tier, Gemini Pro, …). A provider with no entry gets 2." },
2335
+ target: { type: "string", description: "A session's managed id or conversation id: switch only that session's own away mode (with `on`)." },
2335
2336
  notice: { type: "string", description: "While away: a warning or decision that cannot wait, sent to the owner's bell/Nay as a notice (max 500 chars) instead of a question that blocks your turn. Leaders only; ignores the other fields." }
2336
2337
  },
2337
2338
  required: []
@@ -2801,13 +2802,17 @@ async function callTool(req) {
2801
2802
  const body = await apiGet("/api/away");
2802
2803
  return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
2803
2804
  }
2805
+ if (typeof a.target === "string" && a.target.trim() !== "") {
2806
+ const body = await apiSend("PUT", "/api/away/session", { target: a.target, on: a.on, session: sessionProof(process.env) });
2807
+ return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
2808
+ }
2804
2809
  const body = await apiSend("PUT", "/api/away", {
2805
2810
  on: a.on,
2806
2811
  ...a.until !== undefined ? { until: a.until } : {},
2807
2812
  ...a.authorised !== undefined ? { authorised: a.authorised } : {},
2808
2813
  ...a.note !== undefined ? { note: a.note } : {},
2809
2814
  ...a.maxWorkers !== undefined ? { maxWorkers: a.maxWorkers } : {},
2810
- ...a.maxOpus !== undefined ? { maxOpus: a.maxOpus } : {},
2815
+ ...a.topCaps !== undefined ? { topCaps: a.topCaps } : {},
2811
2816
  session: sessionProof(process.env)
2812
2817
  });
2813
2818
  return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentistics/mcp",
3
- "version": "2.132.6",
3
+ "version": "2.134.0",
4
4
  "description": "Agentistics MCP server — Claude Code analytics for Claude Desktop and Claude Code",
5
5
  "type": "module",
6
6
  "main": "./dist/agentistics-mcp.js",