@tokenfactory/acc-mcp-server 0.1.2-internal → 0.2.0-internal

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/cli.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  interface ParsedArgs {
3
3
  taskId: string | null;
4
4
  runnerId: string | null;
5
+ agentId: string | null;
5
6
  accessToken: string;
6
7
  publicUrl: string;
7
8
  }
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA0BA,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA0BpD;AAqCD,wBAAgB,kBAAkB,IAAI,OAAO,CAQ5C"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgCA,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA2BpD;AAsCD,wBAAgB,kBAAkB,IAAI,OAAO,CAQ5C"}
package/dist/cli.js CHANGED
@@ -10,6 +10,12 @@
10
10
  * argv contract:
11
11
  * --task-id <id> Optional. The ACC task this server is bound to.
12
12
  * --runner-id <id> Optional. The runner that spawned us.
13
+ * --agent-id <id> Optional. The calling agent. v0.6 mutating
14
+ * tools use this to look up tools_config /
15
+ * resolve approval mode. When omitted, the
16
+ * dispatcher falls back to deriving from the
17
+ * task's current agent_id at first mutating
18
+ * call.
13
19
  * --access-token <jwt> Optional. Falls back to ACC_MCP_ACCESS_TOKEN.
14
20
  * --public-url <url> Optional. Falls back to ACC_PUBLIC_URL.
15
21
  *
@@ -45,6 +51,7 @@ export function parseArgs(argv) {
45
51
  return {
46
52
  taskId: out["task-id"] || null,
47
53
  runnerId: out["runner-id"] || null,
54
+ agentId: out["agent-id"] || null,
48
55
  accessToken,
49
56
  publicUrl,
50
57
  };
@@ -58,6 +65,7 @@ async function main() {
58
65
  const ctx = {
59
66
  taskId: args.taskId,
60
67
  runnerId: args.runnerId,
68
+ agentId: args.agentId,
61
69
  publicUrl: args.publicUrl,
62
70
  accessToken: args.accessToken,
63
71
  };
@@ -66,7 +74,7 @@ async function main() {
66
74
  const server = buildServer(ctx, sb);
67
75
  const transport = new StdioServerTransport();
68
76
  await server.connect(transport);
69
- process.stderr.write(`[acc-mcp-server] online (task=${ctx.taskId ?? "-"} runner=${ctx.runnerId ?? "-"})\n`);
77
+ process.stderr.write(`[acc-mcp-server] online (task=${ctx.taskId ?? "-"} runner=${ctx.runnerId ?? "-"} agent=${ctx.agentId ?? "-"})\n`);
70
78
  }
71
79
  // Only run when executed directly. Importers (tests) get the parse helper
72
80
  // and `main` without side effects.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Per-tool risk-tier + approval-mode policy.
3
+ *
4
+ * Each mutating MCP tool carries a static risk tier (set in code, not
5
+ * agent-overridable). The calling agent's `tools_config` may override
6
+ * the default approval mode per-tool — the resolution rule:
7
+ *
8
+ * agent.tools_config[tool].approval_mode ← explicit per-agent override
9
+ * else 'auto' ← green tools default to auto
10
+ * else 'require' ← amber/red default to require
11
+ *
12
+ * 'blocked' is also a valid mode an operator can set per-agent to
13
+ * deny a tool outright. There is no global block list — anything not
14
+ * in TOOL_RISK_TIERS is treated as an unknown tool by the dispatcher
15
+ * and rejected with `unknown_tool` (handled in src/tools.ts).
16
+ *
17
+ * NOTE on file location: planning/v0.6-B-mutating-mcp-backend.md
18
+ * directed adding this at `api/_lib/mcp-tool-policy.ts`, but the MCP
19
+ * server is published as a standalone npm package and cannot import
20
+ * from `api/_lib/` at runtime (workspaces don't survive `npm publish`
21
+ * — same constraint the read-only catalog comments call out in
22
+ * tools.ts). The policy lives here so the runtime dispatcher can
23
+ * reach it; api/chat/_tools.ts mirrors the catalog only.
24
+ */
25
+ export type RiskTier = "green" | "amber" | "red";
26
+ export type ApprovalMode = "auto" | "require" | "blocked";
27
+ export declare const TOOL_RISK_TIERS: Record<string, RiskTier>;
28
+ export declare const MUTATING_TOOLS: Set<string>;
29
+ export declare function isMutatingTool(name: string): boolean;
30
+ interface ToolApprovalConfig {
31
+ approval_mode?: ApprovalMode;
32
+ }
33
+ export declare function resolveApprovalMode(toolName: string, agentToolsConfig: Record<string, ToolApprovalConfig> | null | undefined): ApprovalMode;
34
+ export {};
35
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAapD,CAAC;AAEF,eAAO,MAAM,cAAc,aAKzB,CAAC;AAEH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,UAAU,kBAAkB;IAC1B,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,IAAI,GAAG,SAAS,GACtE,YAAY,CAMd"}
package/dist/policy.js ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Per-tool risk-tier + approval-mode policy.
3
+ *
4
+ * Each mutating MCP tool carries a static risk tier (set in code, not
5
+ * agent-overridable). The calling agent's `tools_config` may override
6
+ * the default approval mode per-tool — the resolution rule:
7
+ *
8
+ * agent.tools_config[tool].approval_mode ← explicit per-agent override
9
+ * else 'auto' ← green tools default to auto
10
+ * else 'require' ← amber/red default to require
11
+ *
12
+ * 'blocked' is also a valid mode an operator can set per-agent to
13
+ * deny a tool outright. There is no global block list — anything not
14
+ * in TOOL_RISK_TIERS is treated as an unknown tool by the dispatcher
15
+ * and rejected with `unknown_tool` (handled in src/tools.ts).
16
+ *
17
+ * NOTE on file location: planning/v0.6-B-mutating-mcp-backend.md
18
+ * directed adding this at `api/_lib/mcp-tool-policy.ts`, but the MCP
19
+ * server is published as a standalone npm package and cannot import
20
+ * from `api/_lib/` at runtime (workspaces don't survive `npm publish`
21
+ * — same constraint the read-only catalog comments call out in
22
+ * tools.ts). The policy lives here so the runtime dispatcher can
23
+ * reach it; api/chat/_tools.ts mirrors the catalog only.
24
+ */
25
+ export const TOOL_RISK_TIERS = {
26
+ // v0.5 read-only — all green.
27
+ query_tasks: "green",
28
+ query_prs: "green",
29
+ query_cost: "green",
30
+ query_decisions: "green",
31
+ query_runners: "green",
32
+ query_approvals: "green",
33
+ // v0.6 mutating — risk tier matches Design-M Part 2a color guidance.
34
+ transition_task: "amber", // state machine; reversible
35
+ record_progress: "green", // append-only annotation
36
+ request_approval: "green", // creates a new approval row; reversible
37
+ propose_agent: "amber", // creates a draft; reviewable before publish
38
+ };
39
+ export const MUTATING_TOOLS = new Set([
40
+ "transition_task",
41
+ "record_progress",
42
+ "request_approval",
43
+ "propose_agent",
44
+ ]);
45
+ export function isMutatingTool(name) {
46
+ return MUTATING_TOOLS.has(name);
47
+ }
48
+ export function resolveApprovalMode(toolName, agentToolsConfig) {
49
+ const override = agentToolsConfig?.[toolName]?.approval_mode;
50
+ if (override === "auto" || override === "require" || override === "blocked") {
51
+ return override;
52
+ }
53
+ return TOOL_RISK_TIERS[toolName] === "green" ? "auto" : "require";
54
+ }
55
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,8BAA8B;IAC9B,WAAW,EAAE,OAAO;IACpB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,OAAO;IACnB,eAAe,EAAE,OAAO;IACxB,aAAa,EAAE,OAAO;IACtB,eAAe,EAAE,OAAO;IACxB,qEAAqE;IACrE,eAAe,EAAE,OAAO,EAAE,4BAA4B;IACtD,eAAe,EAAE,OAAO,EAAE,yBAAyB;IACnD,gBAAgB,EAAE,OAAO,EAAE,yCAAyC;IACpE,aAAa,EAAE,OAAO,EAAE,6CAA6C;CACtE,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS;IAC5C,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;CAChB,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAMD,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,gBAAuE;IAEvE,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAC7D,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * MCP server wiring. Builds an @modelcontextprotocol/sdk Server with
3
- * two request handlers — tools/list returns our 6-tool catalog;
4
- * tools/call dispatches to runTool() and telemeters the outcome.
3
+ * two request handlers — tools/list returns our 10-tool catalog
4
+ * (6 read-only from v0.5-C1 + 4 mutating from v0.6-B); tools/call
5
+ * dispatches to runTool() and telemeters the outcome.
6
+ *
7
+ * v0.6-B threads ctx to runTool so mutating tools can resolve the
8
+ * calling agent's approval policy + submit pending calls.
5
9
  *
6
10
  * Exposed as a factory so tests can drive the protocol surface
7
11
  * in-process (StdioServerTransport ↔ Client) without spawning a real
@@ -12,7 +16,7 @@ import type { SupabaseClient } from "@supabase/supabase-js";
12
16
  import { type RecordPayload } from "./telemetry.js";
13
17
  import type { ServerContext } from "./types.js";
14
18
  export declare const SERVER_NAME = "acc-mcp-server";
15
- export declare const SERVER_VERSION = "0.1.0";
19
+ export declare const SERVER_VERSION = "0.2.0";
16
20
  export interface BuildServerOptions {
17
21
  /** Override the telemetry sink — tests pass an in-memory collector. */
18
22
  recordCall?: (ctx: ServerContext, payload: RecordPayload) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAC5C,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE,kBAAuB,GAC5B,MAAM,CAgDR"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAC5C,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE,kBAAuB,GAC5B,MAAM,CAkDR"}
package/dist/server.js CHANGED
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * MCP server wiring. Builds an @modelcontextprotocol/sdk Server with
3
- * two request handlers — tools/list returns our 6-tool catalog;
4
- * tools/call dispatches to runTool() and telemeters the outcome.
3
+ * two request handlers — tools/list returns our 10-tool catalog
4
+ * (6 read-only from v0.5-C1 + 4 mutating from v0.6-B); tools/call
5
+ * dispatches to runTool() and telemeters the outcome.
6
+ *
7
+ * v0.6-B threads ctx to runTool so mutating tools can resolve the
8
+ * calling agent's approval policy + submit pending calls.
5
9
  *
6
10
  * Exposed as a factory so tests can drive the protocol surface
7
11
  * in-process (StdioServerTransport ↔ Client) without spawning a real
@@ -12,7 +16,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
12
16
  import { TOOLS, runTool } from "./tools.js";
13
17
  import { buildResponseSummary, recordToolCall, safeArgsJson, } from "./telemetry.js";
14
18
  export const SERVER_NAME = "acc-mcp-server";
15
- export const SERVER_VERSION = "0.1.0";
19
+ export const SERVER_VERSION = "0.2.0";
16
20
  export function buildServer(ctx, sb, opts = {}) {
17
21
  const record = opts.recordCall ?? recordToolCall;
18
22
  const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {} } });
@@ -30,7 +34,9 @@ export function buildServer(ctx, sb, opts = {}) {
30
34
  let output;
31
35
  let errorMsg = null;
32
36
  try {
33
- output = await runTool(toolName, rawArgs, sb);
37
+ // ctx is threaded for v0.6 mutating tools (approval gate +
38
+ // pending-call submission); read-only tools ignore it.
39
+ output = await runTool(toolName, rawArgs, sb, ctx);
34
40
  if (output && typeof output === "object" && "error" in output) {
35
41
  errorMsg = String(output.error);
36
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,GAEb,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAOtC,MAAM,UAAU,WAAW,CACzB,GAAkB,EAClB,EAAkB,EAClB,OAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,MAAe,CAAC;QACpB,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAK,MAAkC,EAAE,CAAC;gBAC3F,QAAQ,GAAG,MAAM,CAAE,MAA6B,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,GAAI,GAAa,CAAC,OAAO,IAAI,aAAa,CAAC;YACnD,MAAM,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACvF,uDAAuD;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE;YACf,OAAO,EAAE,GAAG,CAAC,MAAM;YACnB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC;YACnC,gBAAgB,EAAE,OAAO;YACzB,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,OAAO,EAAE,QAAQ,KAAK,IAAI;SAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -15,7 +15,21 @@
15
15
  * so we keep two source-of-truth copies and enforce parity via test.
16
16
  */
17
17
  import type { SupabaseClient } from "@supabase/supabase-js";
18
- import type { ToolDef } from "./types.js";
18
+ import type { ServerContext, ToolDef } from "./types.js";
19
19
  export declare const TOOLS: ToolDef[];
20
- export declare function runTool(name: string, rawArgs: unknown, sb: SupabaseClient): Promise<unknown>;
20
+ /**
21
+ * Optional tunables threaded through the mutating-tool dispatcher.
22
+ * Production callers leave these undefined; tests pass small values
23
+ * so the wait-for-resolution loop completes synchronously.
24
+ */
25
+ export interface RunMutatingOpts {
26
+ pollIntervalMs?: number;
27
+ timeoutMs?: number;
28
+ }
29
+ export declare function runTool(name: string, rawArgs: unknown, sb: SupabaseClient, ctx?: ServerContext, opts?: RunMutatingOpts): Promise<unknown>;
30
+ export interface PendingResolution {
31
+ state: "approved_executed" | "declined" | "expired" | "pending" | "errored";
32
+ resolution_reason: string | null;
33
+ }
34
+ export declare function waitForPendingResolution(sb: SupabaseClient, pendingId: string, opts: RunMutatingOpts): Promise<PendingResolution>;
21
35
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAQ1C,eAAO,MAAM,KAAK,EAAE,OAAO,EAwD1B,CAAC;AAQF,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,cAAc,GACjB,OAAO,CAAC,OAAO,CAAC,CAqFlB"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAO5D,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAQzD,eAAO,MAAM,KAAK,EAAE,OAAO,EAuH1B,CAAC;AAQF;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,cAAc,EAClB,GAAG,CAAC,EAAE,aAAa,EACnB,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,OAAO,CAAC,CA4FlB;AAqID,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,mBAAmB,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5E,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAwB5B"}
package/dist/tools.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { isMutatingTool, resolveApprovalMode, TOOL_RISK_TIERS, } from "./policy.js";
1
2
  const obj = (properties, required = []) => ({
2
3
  type: "object",
3
4
  properties,
@@ -52,6 +53,53 @@ export const TOOLS = [
52
53
  description: "List approval requests. Filter by state ('pending', 'approved', 'denied').",
53
54
  inputSchema: obj({ state: { type: "string" } }),
54
55
  },
56
+ // v0.6 mutating tools — each routes through resolveApprovalMode().
57
+ // Any call that resolves to 'require' lands in acc.mcp_pending_calls
58
+ // and the dispatcher polls for operator approval (60s timeout).
59
+ {
60
+ name: "transition_task",
61
+ description: "Move a task to a new status. Valid statuses: 'draft','ready','queued','running','blocked','needs-review','changes-requested','done','merged','failed'. Reversible; risk tier=amber so this requires approval unless the agent's tools_config overrides to auto.",
62
+ inputSchema: obj({
63
+ task_id: { type: "string" },
64
+ to_state: { type: "string", description: "Target acc.task_status value" },
65
+ reason: { type: "string" },
66
+ }, ["task_id", "to_state"]),
67
+ },
68
+ {
69
+ name: "record_progress",
70
+ description: "Append a free-form progress note to the task's event log. Append-only; risk tier=green so this auto-approves by default.",
71
+ inputSchema: obj({
72
+ task_id: { type: "string" },
73
+ note: { type: "string" },
74
+ }, ["task_id", "note"]),
75
+ },
76
+ {
77
+ name: "request_approval",
78
+ description: "Open a new approval row on the task. kind must be one of 'merge','contract','bypass','cost'; severity one of 'low','med','high'. Creates a pending acc.approvals row; risk tier=green so this auto-approves by default.",
79
+ inputSchema: obj({
80
+ task_id: { type: "string" },
81
+ kind: { type: "string", enum: ["merge", "contract", "bypass", "cost"] },
82
+ severity: { type: "string", enum: ["low", "med", "high"] },
83
+ title: { type: "string" },
84
+ reason: { type: "string" },
85
+ }, ["task_id", "kind", "severity", "title", "reason"]),
86
+ },
87
+ {
88
+ name: "propose_agent",
89
+ description: "Draft a new agent for human review. Backed by acc.create_agent_draft (v0.6-A). If the calling agent's sandbox_tier is 'trusted' AND authoring_permissions.auto_publish_drafts is on, the draft auto-publishes; otherwise it lands in the Drafts UI as pending. Risk tier=amber so this requires approval unless the agent's tools_config overrides to auto.",
90
+ inputSchema: obj({
91
+ parent_task_id: { type: "string", description: "Nullable" },
92
+ proposed_name: { type: "string" },
93
+ proposed_description: { type: "string" },
94
+ proposed_system_prompt: { type: "string" },
95
+ proposed_model: { type: "string" },
96
+ proposed_capabilities: { type: "array", items: { type: "string" } },
97
+ proposed_tools_config: { type: "object" },
98
+ proposed_triggers_config: { type: "object" },
99
+ proposed_safety_config: { type: "object" },
100
+ reasoning_text: { type: "string" },
101
+ }, ["proposed_name", "reasoning_text"]),
102
+ },
55
103
  ];
56
104
  function clampInt(raw, min, max, fallback) {
57
105
  const n = typeof raw === "number" ? raw : Number(raw);
@@ -59,10 +107,16 @@ function clampInt(raw, min, max, fallback) {
59
107
  return fallback;
60
108
  return Math.max(min, Math.min(max, Math.floor(n)));
61
109
  }
62
- export async function runTool(name, rawArgs, sb) {
110
+ export async function runTool(name, rawArgs, sb, ctx, opts) {
63
111
  const args = (rawArgs && typeof rawArgs === "object"
64
112
  ? rawArgs
65
113
  : {});
114
+ if (isMutatingTool(name)) {
115
+ if (!ctx) {
116
+ return { error: "context_required: mutating tools need a ServerContext" };
117
+ }
118
+ return runMutatingTool(name, args, sb, ctx, opts ?? {});
119
+ }
66
120
  switch (name) {
67
121
  case "query_tasks": {
68
122
  let q = sb
@@ -151,4 +205,209 @@ export async function runTool(name, rawArgs, sb) {
151
205
  }
152
206
  return { error: `unknown_tool: ${name}` };
153
207
  }
208
+ const DEFAULT_POLL_MS = 1000;
209
+ const DEFAULT_TIMEOUT_MS = 60_000;
210
+ async function runMutatingTool(name, args, sb, ctx, opts) {
211
+ const agentId = await resolveAgentId(sb, ctx);
212
+ const toolsConfig = await loadAgentToolsConfig(sb, agentId);
213
+ const mode = resolveApprovalMode(name, toolsConfig);
214
+ if (mode === "blocked") {
215
+ return { error: `tool_blocked: ${name} is blocked for this agent` };
216
+ }
217
+ let pendingId = null;
218
+ if (mode === "require") {
219
+ if (!agentId) {
220
+ return { error: "agent_id_required: cannot submit pending call without agent_id" };
221
+ }
222
+ const { data, error } = await sb.rpc("submit_mcp_pending_call", {
223
+ p_task_id: ctx.taskId,
224
+ p_runner_id: ctx.runnerId,
225
+ p_agent_id: agentId,
226
+ p_tool_name: name,
227
+ p_request_args: args,
228
+ p_risk_tier: TOOL_RISK_TIERS[name] ?? "amber",
229
+ });
230
+ if (error || !data) {
231
+ return { error: `submit_pending_failed: ${error?.message ?? "no row returned"}` };
232
+ }
233
+ pendingId = data.id;
234
+ const resolution = await waitForPendingResolution(sb, pendingId, opts);
235
+ if (resolution.state === "declined") {
236
+ return {
237
+ error: `operator_declined: ${resolution.resolution_reason ?? "no reason given"}`,
238
+ };
239
+ }
240
+ if (resolution.state === "expired") {
241
+ return { error: "approval_expired: pending call expired before resolution" };
242
+ }
243
+ if (resolution.state !== "approved_executed") {
244
+ return {
245
+ error: `approval_unresolved: state=${resolution.state} after ${opts.timeoutMs ?? DEFAULT_TIMEOUT_MS}ms`,
246
+ };
247
+ }
248
+ }
249
+ let output;
250
+ let errored = false;
251
+ try {
252
+ output = await dispatchMutatingImpl(name, args, sb, agentId);
253
+ }
254
+ catch (err) {
255
+ errored = true;
256
+ output = { error: err.message ?? "impl_failed" };
257
+ }
258
+ // We don't have the mcp_tool_calls id here (the server.ts wrapper
259
+ // owns telemetry). Pass null for executed_tool_call_id; the M1 UI
260
+ // can correlate by tool_name + agent + window when it matters.
261
+ if (mode === "require" && pendingId) {
262
+ await sb.rpc("complete_mcp_pending_call", {
263
+ p_call_id: pendingId,
264
+ p_tool_call_id: null,
265
+ p_errored: errored,
266
+ });
267
+ }
268
+ return output;
269
+ }
270
+ async function resolveAgentId(sb, ctx) {
271
+ if (ctx.agentId)
272
+ return ctx.agentId;
273
+ if (!ctx.taskId)
274
+ return null;
275
+ const { data } = await sb
276
+ .from("tasks")
277
+ .select("agent_id")
278
+ .eq("id", ctx.taskId)
279
+ .maybeSingle();
280
+ const v = data?.agent_id;
281
+ return typeof v === "string" && v.length > 0 ? v : null;
282
+ }
283
+ async function loadAgentToolsConfig(sb, agentId) {
284
+ if (!agentId)
285
+ return {};
286
+ const { data } = await sb
287
+ .from("agents")
288
+ .select("tools_config")
289
+ .eq("id", agentId)
290
+ .maybeSingle();
291
+ const tc = data?.tools_config;
292
+ if (tc && typeof tc === "object") {
293
+ return tc;
294
+ }
295
+ return {};
296
+ }
297
+ export async function waitForPendingResolution(sb, pendingId, opts) {
298
+ // Short-poll the row state. Realtime would be lighter network-wise
299
+ // but harder to test deterministically, and the polling cost is
300
+ // negligible (1 SELECT per second per concurrent pending call).
301
+ const pollMs = opts.pollIntervalMs ?? DEFAULT_POLL_MS;
302
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
303
+ const deadline = Date.now() + timeoutMs;
304
+ while (Date.now() < deadline) {
305
+ const { data } = await sb
306
+ .from("mcp_pending_calls")
307
+ .select("state, resolution_reason")
308
+ .eq("id", pendingId)
309
+ .maybeSingle();
310
+ const row = data;
311
+ const state = row?.state ?? "pending";
312
+ if (state !== "pending") {
313
+ return {
314
+ state: state,
315
+ resolution_reason: row?.resolution_reason ?? null,
316
+ };
317
+ }
318
+ await sleep(pollMs);
319
+ }
320
+ return { state: "expired", resolution_reason: "timeout: dispatcher gave up waiting" };
321
+ }
322
+ function sleep(ms) {
323
+ return new Promise((resolve) => setTimeout(resolve, ms));
324
+ }
325
+ async function dispatchMutatingImpl(name, args, sb, agentId) {
326
+ switch (name) {
327
+ case "transition_task": {
328
+ const taskId = String(args.task_id ?? "");
329
+ const toState = String(args.to_state ?? "");
330
+ if (!taskId || !toState) {
331
+ return { error: "task_id and to_state required" };
332
+ }
333
+ const { data, error } = await sb.rpc("transition_task", {
334
+ p_task_id: taskId,
335
+ p_new_status: toState,
336
+ p_reason: typeof args.reason === "string" ? args.reason : null,
337
+ });
338
+ return error ? { error: error.message } : data;
339
+ }
340
+ case "record_progress": {
341
+ const taskId = String(args.task_id ?? "");
342
+ const note = String(args.note ?? "");
343
+ if (!taskId || !note) {
344
+ return { error: "task_id and note required" };
345
+ }
346
+ const { data, error } = await sb.rpc("append_task_event", {
347
+ p_task_id: taskId,
348
+ p_kind: "progress",
349
+ p_payload: { note },
350
+ });
351
+ return error ? { error: error.message } : data;
352
+ }
353
+ case "request_approval": {
354
+ const taskId = String(args.task_id ?? "");
355
+ const kind = String(args.kind ?? "");
356
+ const severity = String(args.severity ?? "");
357
+ const title = String(args.title ?? "");
358
+ const reason = String(args.reason ?? "");
359
+ if (!taskId || !kind || !severity || !title || !reason) {
360
+ return { error: "task_id, kind, severity, title, reason all required" };
361
+ }
362
+ const { data, error } = await sb.rpc("request_approval", {
363
+ p_task_id: taskId,
364
+ p_kind: kind,
365
+ p_severity: severity,
366
+ p_title: title,
367
+ p_reason: reason,
368
+ });
369
+ return error ? { error: error.message } : data;
370
+ }
371
+ case "propose_agent": {
372
+ // parent_agent_id is always the calling agent — agents can't
373
+ // forge proposals on behalf of others. Injected by the
374
+ // dispatcher from ctx (or task lookup); never read from args.
375
+ if (!agentId) {
376
+ return { error: "agent_id_required: propose_agent needs a resolved calling agent" };
377
+ }
378
+ const parentAgentId = agentId;
379
+ const { data, error } = await sb.rpc("create_agent_draft", {
380
+ p_parent_agent_id: parentAgentId,
381
+ p_parent_task_id: typeof args.parent_task_id === "string" ? args.parent_task_id : null,
382
+ p_proposed_name: String(args.proposed_name ?? ""),
383
+ p_proposed_description: typeof args.proposed_description === "string"
384
+ ? args.proposed_description
385
+ : null,
386
+ p_proposed_system_prompt: typeof args.proposed_system_prompt === "string"
387
+ ? args.proposed_system_prompt
388
+ : "",
389
+ p_proposed_model: typeof args.proposed_model === "string"
390
+ ? args.proposed_model
391
+ : "claude-sonnet-4-6",
392
+ p_proposed_capabilities: Array.isArray(args.proposed_capabilities)
393
+ ? args.proposed_capabilities
394
+ : [],
395
+ p_proposed_tools_config: args.proposed_tools_config && typeof args.proposed_tools_config === "object"
396
+ ? args.proposed_tools_config
397
+ : {},
398
+ p_proposed_triggers_config: args.proposed_triggers_config &&
399
+ typeof args.proposed_triggers_config === "object"
400
+ ? args.proposed_triggers_config
401
+ : {},
402
+ p_proposed_safety_config: args.proposed_safety_config &&
403
+ typeof args.proposed_safety_config === "object"
404
+ ? args.proposed_safety_config
405
+ : {},
406
+ p_reasoning_text: String(args.reasoning_text ?? ""),
407
+ });
408
+ return error ? { error: error.message } : data;
409
+ }
410
+ }
411
+ return { error: `unknown_mutating_tool: ${name}` };
412
+ }
154
413
  //# sourceMappingURL=tools.js.map
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAmBA,MAAM,GAAG,GAAG,CAAC,UAAmC,EAAE,WAAqB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,QAAQ;IACd,UAAU;IACV,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAc;IAC9B;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,gIAAgI;QAClI,WAAW,EAAE,GAAG,CAAC;YACf,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;YAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;SACrD,CAAC;KACH;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,uHAAuH;QACzH,WAAW,EAAE,GAAG,CAAC;YACf,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,CAAC;KACH;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,0IAA0I;QAC5I,WAAW,EAAE,GAAG,CACd;YACE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;YACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,EACD,CAAC,OAAO,CAAC,CACV;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,+GAA+G;QACjH,WAAW,EAAE,GAAG,CAAC;YACf,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,CAAC;KACH;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;KACrB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;KAChD;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAY,EAAE,GAAW,EAAE,GAAW,EAAE,QAAgB;IACxE,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAY,EACZ,OAAgB,EAChB,EAAkB;IAElB,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAClD,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,EAAE,CAA4B,CAAC;IAEnC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,GAAG,EAAE;iBACP,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CACL,yGAAyG,CAC1G;iBACA,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;iBACzC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3C,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACrE,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9E,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,EAAE;iBACP,IAAI,CAAC,KAAK,CAAC;iBACX,MAAM,CACL,gHAAgH,CACjH;iBACA,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;iBACzC,KAAK,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;YAChF,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;oBACnC,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;gBACvD,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;YAChC,IAAI,KAAK;gBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAiC,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9D,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,EAAE;iBACP,IAAI,CAAC,WAAW,CAAC;iBACjB,MAAM,CAAC,2EAA2E,CAAC;iBACnF,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;iBACzC,KAAK,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7E,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,kEAAkE;YAClE,sEAAsE;YACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE;iBAC7B,IAAI,CAAC,SAAS,CAAC;iBACf,MAAM,CACL,iFAAiF,CAClF;iBACA,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnB,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,EAAE;iBACP,IAAI,CAAC,WAAW,CAAC;iBACjB,MAAM,CAAC,gEAAgE,CAAC;iBACxE,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;iBACzC,KAAK,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAClE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -8,10 +8,18 @@
8
8
  export interface ServerContext {
9
9
  taskId: string | null;
10
10
  runnerId: string | null;
11
+ /**
12
+ * Calling agent. v0.6-B mutating tools need this to look up
13
+ * tools_config / safety_config. May be null when the spawning
14
+ * runner hasn't been upgraded to pass `--agent-id` yet; the
15
+ * mutating-tool dispatcher falls back to a `acc.tasks` lookup
16
+ * keyed by taskId.
17
+ */
18
+ agentId: string | null;
11
19
  publicUrl: string;
12
20
  accessToken: string;
13
21
  }
14
- export type ToolName = "query_tasks" | "query_prs" | "query_cost" | "query_decisions" | "query_runners" | "query_approvals";
22
+ export type ToolName = "query_tasks" | "query_prs" | "query_cost" | "query_decisions" | "query_runners" | "query_approvals" | "transition_task" | "record_progress" | "request_approval" | "propose_agent";
15
23
  export interface ToolDef {
16
24
  name: ToolName;
17
25
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,QAAQ,GAChB,aAAa,GACb,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,iBAAiB,CAAC;AAEtB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,QAAQ,GAEhB,aAAa,GACb,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GAEjB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,CAAC;AAEpB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tokenfactory/acc-mcp-server",
3
- "version": "0.1.2-internal",
4
- "description": "Agent Control Center MCP server. Stdio-transport subprocess spawned by acc-runner alongside Claude Code; exposes read-only ACC tools and telemeters every call to acc.mcp_tool_calls.",
3
+ "version": "0.2.0-internal",
4
+ "description": "Agent Control Center MCP server. Stdio-transport subprocess spawned by acc-runner alongside Claude Code; exposes ACC tools (6 read-only + 4 mutating with approval gating) and telemeters every call to acc.mcp_tool_calls.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
7
7
  "type": "module",