@tokenfactory/acc-mcp-server 0.1.1-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 +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -1
- package/dist/cli.js.map +1 -1
- package/dist/policy.d.ts +35 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +55 -0
- package/dist/policy.js.map +1 -0
- package/dist/server.d.ts +7 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -4
- package/dist/server.js.map +1 -1
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +15 -0
- package/dist/supabase.js.map +1 -1
- package/dist/tools.d.ts +16 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +260 -1
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -2
package/dist/cli.d.ts
CHANGED
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
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":";AACA
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/policy.d.ts
ADDED
|
@@ -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
|
|
4
|
-
*
|
|
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.
|
|
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>;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
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
|
|
4
|
-
*
|
|
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.
|
|
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
|
-
|
|
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
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/supabase.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAcD,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAYnE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAYzE"}
|
package/dist/supabase.js
CHANGED
|
@@ -12,14 +12,29 @@
|
|
|
12
12
|
* when spawning us.
|
|
13
13
|
*/
|
|
14
14
|
import { createClient } from "@supabase/supabase-js";
|
|
15
|
+
import WebSocket from "ws";
|
|
15
16
|
// The MCP server speaks the acc schema. Supabase's generic types model
|
|
16
17
|
// the default schema name in their type parameters, so we cast through
|
|
17
18
|
// `unknown` to land on the canonical SupabaseClient<...> type that the
|
|
18
19
|
// tool impls consume.
|
|
20
|
+
//
|
|
21
|
+
// `realtime.transport` is pinned to the `ws` package because
|
|
22
|
+
// @supabase/supabase-js's RealtimeClient initializes eagerly at
|
|
23
|
+
// createClient() time and Node 20 lacks a Supabase-recognized WebSocket
|
|
24
|
+
// global — without an explicit transport, construction throws
|
|
25
|
+
// "Node.js 20 detected without native WebSocket support" and the whole
|
|
26
|
+
// MCP subprocess dies before stdio is wired. Same fix as
|
|
27
|
+
// @tokenfactory/acc-runner v0.2.2.
|
|
19
28
|
export function createMcpClient(cfg) {
|
|
20
29
|
return createClient(cfg.supabaseUrl, cfg.anonKey, {
|
|
21
30
|
db: { schema: "acc" },
|
|
22
31
|
auth: { persistSession: false, autoRefreshToken: false },
|
|
32
|
+
realtime: {
|
|
33
|
+
// any-allowed: ws's type matches Node, not the browser WebSocket
|
|
34
|
+
// interface Supabase's option signature is declared against.
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
transport: WebSocket,
|
|
37
|
+
},
|
|
23
38
|
global: { headers: { Authorization: `Bearer ${cfg.accessToken}` } },
|
|
24
39
|
});
|
|
25
40
|
}
|
package/dist/supabase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,SAAS,MAAM,IAAI,CAAC;AAQ3B,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,sBAAsB;AACtB,EAAE;AACF,6DAA6D;AAC7D,gEAAgE;AAChE,wEAAwE;AACxE,8DAA8D;AAC9D,uEAAuE;AACvE,yDAAyD;AACzD,mCAAmC;AACnC,MAAM,UAAU,eAAe,CAAC,GAAmB;IACjD,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE;QAChD,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QACrB,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE;QACxD,QAAQ,EAAE;YACR,iEAAiE;YACjE,6DAA6D;YAC7D,8DAA8D;YAC9D,SAAS,EAAE,SAAgB;SAC5B;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE;KACpE,CAA8B,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACnF,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,EAAE,CAAC;IACL,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC"}
|
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
|
-
|
|
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
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -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;
|
|
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":"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"}
|
|
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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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,
|
|
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.
|
|
4
|
-
"description": "Agent Control Center MCP server. Stdio-transport subprocess spawned by acc-runner alongside Claude Code; exposes read-only
|
|
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",
|
|
@@ -24,10 +24,12 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
26
26
|
"@supabase/supabase-js": "^2.105.3",
|
|
27
|
+
"ws": "^8.20.0",
|
|
27
28
|
"zod": "^3.25.28"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
31
|
"@types/node": "^25.6.0",
|
|
32
|
+
"@types/ws": "^8.18.1",
|
|
31
33
|
"typescript": "^5.6.3",
|
|
32
34
|
"vitest": "^1.6.1"
|
|
33
35
|
}
|