@minicor/mcp-server 4.11.0 → 4.12.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/README.md +13 -0
- package/dist/__tests__/agent-harness-tools.test.d.ts +2 -0
- package/dist/__tests__/agent-harness-tools.test.d.ts.map +1 -0
- package/dist/__tests__/agent-harness-tools.test.js +86 -0
- package/dist/__tests__/agent-harness-tools.test.js.map +1 -0
- package/dist/agent-service-client.d.ts +7 -1
- package/dist/agent-service-client.d.ts.map +1 -1
- package/dist/agent-service-client.js +24 -5
- package/dist/agent-service-client.js.map +1 -1
- package/dist/server-surface.d.ts.map +1 -1
- package/dist/server-surface.js +12 -1
- package/dist/server-surface.js.map +1 -1
- package/dist/tools/agent-harness.d.ts +3 -0
- package/dist/tools/agent-harness.d.ts.map +1 -0
- package/dist/tools/agent-harness.js +143 -0
- package/dist/tools/agent-harness.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -740,6 +740,19 @@ Read it before building or debugging workflows; write to it when you learn somet
|
|
|
740
740
|
|
|
741
741
|
Agents are autonomous runners that execute tasks on VMs using MCP tools. After building a workflow, the `build-rpa-workflow` prompt offers to create a monitoring agent that watches for failures and auto-recovers.
|
|
742
742
|
|
|
743
|
+
### Agent Harness (staff)
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
| Tool | What it does |
|
|
747
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
748
|
+
| `list_agent_catalog` | Discover what is spawnable: catalog agents (runMode + input schema), session task manifests like `worker`, and the informational session runtimes |
|
|
749
|
+
| `spawn_agent` | Spawn a catalog agent (background run) or `worker`/session manifest (task run) into a workspace, with optional per-run `model`/`budgets`/`promptAddendum` overrides and thread lineage |
|
|
750
|
+
| `agent_thread` | Compact thread chronology: every run on the thread (agent, status, terminal reason, cost, parked question) plus an optional task run's activity |
|
|
751
|
+
| `answer_agent` | Answer a parked (`needs_input`) engine run positionally; the run resumes in the background |
|
|
752
|
+
| `await_agent` | Poll a run or task run to terminal (default 300s, max 1800s) and return the compact result; returns early when a run parks on `needs_input` |
|
|
753
|
+
|
|
754
|
+
Spawns are staff-gated and spend-guarded server-side; every harness spawn carries `source: "mcp"` and lands on a thread visible in the staff console.
|
|
755
|
+
|
|
743
756
|
### Skills
|
|
744
757
|
|
|
745
758
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-harness-tools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-harness-tools.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness tool tests: the spawn payload contract (idempotency key, source marker, nested overrides,
|
|
3
|
+
* thread stamp), worker routing via the task door, the answers body shape, await_agent's needs_input
|
|
4
|
+
* early return, and the catalog merge. Mirrors jobs-tools.test.ts (in-memory transport, routed fetch).
|
|
5
|
+
*/
|
|
6
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
7
|
+
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
8
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
9
|
+
import { createMinicorServer } from "../lib.js";
|
|
10
|
+
const WORKER_TASKS = { tasks: [{ slug: "worker", name: "Worker", description: "d", input_schema: {} }] };
|
|
11
|
+
const jsonResponse = (body) => new Response(JSON.stringify(body), { status: 200, headers: { "Content-Type": "application/json" } });
|
|
12
|
+
function routedFetch(routes) {
|
|
13
|
+
return vi.fn(async (input, _init) => {
|
|
14
|
+
const path = new URL(String(input)).pathname;
|
|
15
|
+
for (const [suffix, body] of Object.entries(routes))
|
|
16
|
+
if (path.endsWith(suffix))
|
|
17
|
+
return jsonResponse(body);
|
|
18
|
+
throw new Error(`Unexpected fetch: ${String(input)}`);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async function startServer() {
|
|
22
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
23
|
+
const embedded = await createMinicorServer(serverTransport, {
|
|
24
|
+
localTools: false,
|
|
25
|
+
credentials: { access_token: "test-token", refresh_token: "r", expires_at: Date.now() + 3_600_000 },
|
|
26
|
+
baseUrl: "https://api.test.com",
|
|
27
|
+
codeMode: false,
|
|
28
|
+
});
|
|
29
|
+
const client = new Client({ name: "test-client", version: "1.0.0" });
|
|
30
|
+
await client.connect(clientTransport);
|
|
31
|
+
return { client, embedded };
|
|
32
|
+
}
|
|
33
|
+
const parse = (result) => JSON.parse(result.content[0].text);
|
|
34
|
+
const bodyOf = (fetchMock, suffix) => JSON.parse(String(fetchMock.mock.calls.find(([u]) => String(u).endsWith(suffix))[1].body));
|
|
35
|
+
async function callTool(routes, name, args) {
|
|
36
|
+
const fetchMock = routedFetch(routes);
|
|
37
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
38
|
+
const { client, embedded } = await startServer();
|
|
39
|
+
try {
|
|
40
|
+
return { payload: parse(await client.callTool({ name, arguments: args })), fetchMock };
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
await client.close();
|
|
44
|
+
await embedded.close();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
afterEach(() => vi.unstubAllGlobals());
|
|
48
|
+
describe("agent harness tools", () => {
|
|
49
|
+
it("spawn_agent posts the plan's run-door contract for catalog agents", async () => {
|
|
50
|
+
const { payload, fetchMock } = await callTool({ "/api/agents/tasks": WORKER_TASKS, "/agents/job-builder/run": { run: { id: "run-1", status: "queued", thread_id: "th-1" } } }, "spawn_agent", { workspaceId: 11, agentId: "job-builder", input: { goal: "g" }, region: "us", model: "gpt-x", budgets: { maxSteps: 5, maxCostUsd: 2 }, promptAddendum: "care", thread: { threadId: "th-1", parentRunId: "run-0" } });
|
|
51
|
+
const body = bodyOf(fetchMock, "/run");
|
|
52
|
+
expect(body).toMatchObject({
|
|
53
|
+
workspace_id: 11, input: { goal: "g" }, region: "us", source: "mcp", thread: { thread_id: "th-1", parent_run_id: "run-0" },
|
|
54
|
+
overrides: { model: "gpt-x", budgets: { maxSteps: 5, maxCostUsd: 2 }, promptAddendum: "care" },
|
|
55
|
+
});
|
|
56
|
+
expect(body.model).toBeUndefined(); // harness-contract nests every override
|
|
57
|
+
expect(body.idempotency_key).toMatch(/^mcp:[0-9a-f-]{36}$/);
|
|
58
|
+
expect(payload).toMatchObject({ runId: "run-1", threadId: "th-1", status: "queued" });
|
|
59
|
+
});
|
|
60
|
+
it("spawn_agent routes session manifests through the task door with source: mcp", async () => {
|
|
61
|
+
const { payload, fetchMock } = await callTool({ "/api/agents/tasks": WORKER_TASKS, "/tasks/worker/runs": { run_id: "trun-1", session_id: "sess-1", run: { thread_id: "th-9", status: "running" } } }, "spawn_agent", { workspaceId: 11, agentId: "worker", brief: "do x", toolProfile: "readonly", budgets: { maxSteps: 9 }, region: "us" });
|
|
62
|
+
// Worker budgets ride input (workerInputSchema), not overrides:
|
|
63
|
+
expect(bodyOf(fetchMock, "/tasks/worker/runs")).toEqual({ workspaceId: 11, region: "us", source: "mcp", input: { brief: "do x", toolProfile: "readonly", budgets: { maxSteps: 9 } } });
|
|
64
|
+
expect(payload).toMatchObject({ taskRunId: "trun-1", sessionId: "sess-1", threadId: "th-9" });
|
|
65
|
+
});
|
|
66
|
+
it("answer_agent posts positional answers then reports the run compactly", async () => {
|
|
67
|
+
const { payload, fetchMock } = await callTool({ "/runs/run-1/answers": {}, "/api/agents/runs/run-1": { run: { id: "run-1", agent_id: "job-builder", status: "queued", created_at: 1 } } }, "answer_agent", { runId: "run-1", answers: ["yes", "42"], region: "us" });
|
|
68
|
+
expect(bodyOf(fetchMock, "/answers")).toEqual({ answers: ["yes", "42"], region: "us" });
|
|
69
|
+
expect(payload).toMatchObject({ answered: true, run: { runId: "run-1", status: "queued" } });
|
|
70
|
+
});
|
|
71
|
+
it("await_agent returns early with the parked question on needs_input", async () => {
|
|
72
|
+
const { payload, fetchMock } = await callTool({ "/api/agents/runs/run-1": { run: { id: "run-1", agent_id: "job-builder", status: "needs_input", needs_input_json: JSON.stringify({ questions: ["Which env?"] }), result_text: null } } }, "await_agent", { runId: "run-1", timeoutSeconds: 1 });
|
|
73
|
+
expect(payload).toMatchObject({ status: "needs_input", parkedQuestion: "Which env?" });
|
|
74
|
+
expect(fetchMock).toHaveBeenCalledTimes(1);
|
|
75
|
+
});
|
|
76
|
+
it("list_agent_catalog merges catalog, tasks, and session runtimes", async () => {
|
|
77
|
+
const { payload } = await callTool({
|
|
78
|
+
"/api/agents/agent-catalog": { agents: [{ id: "job-builder", run_mode: "background-job", input_schema: { type: "object" } }] },
|
|
79
|
+
"/api/agents/session-runtimes": { runtimes: [{ id: "session-copilot" }] },
|
|
80
|
+
"/api/agents/tasks": WORKER_TASKS,
|
|
81
|
+
}, "list_agent_catalog", {});
|
|
82
|
+
expect(payload.spawnable.map((s) => [s.id, s.kind])).toEqual([["job-builder", "run"], ["worker", "task"]]);
|
|
83
|
+
expect(payload.sessionRuntimes).toEqual([{ id: "session-copilot" }]);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=agent-harness-tools.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-harness-tools.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-harness-tools.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,13 @@ export declare class AgentServiceClient {
|
|
|
31
31
|
slack_channel?: string;
|
|
32
32
|
}): Promise<any>;
|
|
33
33
|
listTasks(): Promise<any>;
|
|
34
|
-
runTask(slug: string, workspaceId: number, input: Record<string, unknown>, region?: string): Promise<any>;
|
|
34
|
+
runTask(slug: string, workspaceId: number, input: Record<string, unknown>, region?: string, extra?: Record<string, unknown>): Promise<any>;
|
|
35
|
+
getAgentCatalog(): Promise<any>;
|
|
36
|
+
getSessionRuntimes(): Promise<any>;
|
|
37
|
+
runAgent(agentId: string, body: Record<string, unknown>): Promise<any>;
|
|
38
|
+
listRuns(query: Record<string, string | number | undefined>): Promise<any>;
|
|
39
|
+
getRun(runId: string): Promise<any>;
|
|
40
|
+
answerRun(runId: string, answers: string[], region?: string): Promise<void>;
|
|
35
41
|
listTaskRuns(slug: string, workspaceId?: number): Promise<any>;
|
|
36
42
|
getTaskRun(runId: string): Promise<any>;
|
|
37
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-service-client.d.ts","sourceRoot":"","sources":["../src/agent-service-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAK5B,OAAO;IAoCf,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM;IAS/B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAIxB,WAAW,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;QAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAMK,SAAS;IAIT,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"agent-service-client.d.ts","sourceRoot":"","sources":["../src/agent-service-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAK5B,OAAO;IAoCf,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM;IAS/B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAIxB,WAAW,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;QAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAMK,SAAS;IAIT,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAM3H,eAAe;IAEf,kBAAkB;IAElB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE3D,MAAM,CAAC,KAAK,EAAE,MAAM;IAKpB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAS/C,UAAU,CAAC,KAAK,EAAE,MAAM;IAI9B;;;;OAIG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAiD9E"}
|
|
@@ -64,12 +64,31 @@ export class AgentServiceClient {
|
|
|
64
64
|
async listTasks() {
|
|
65
65
|
return this.request("GET", "/tasks");
|
|
66
66
|
}
|
|
67
|
-
async runTask(slug, workspaceId, input, region) {
|
|
68
|
-
return this.request("POST", `/tasks/${encodeURIComponent(slug)}/runs`, {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
async runTask(slug, workspaceId, input, region, extra) {
|
|
68
|
+
return this.request("POST", `/tasks/${encodeURIComponent(slug)}/runs`, { workspaceId, input, region, ...(extra ?? {}) });
|
|
69
|
+
}
|
|
70
|
+
// ── Harness verbs (engine runs + catalog) ──
|
|
71
|
+
async getAgentCatalog() { return this.request("GET", "/agent-catalog"); }
|
|
72
|
+
async getSessionRuntimes() { return this.request("GET", "/session-runtimes"); }
|
|
73
|
+
async runAgent(agentId, body) { return this.request("POST", `/agents/${encodeURIComponent(agentId)}/run`, body); }
|
|
74
|
+
async listRuns(query) { return this.request("GET", "/runs", undefined, query); }
|
|
75
|
+
async getRun(runId) { return this.request("GET", `/runs/${encodeURIComponent(runId)}`); }
|
|
76
|
+
// Answer a parked (needs_input) run. The success response is an SSE tail of the
|
|
77
|
+
// resumed execution; the resume is committed server-side before the tail
|
|
78
|
+
// starts, so detach immediately — await_agent is the blocking verb.
|
|
79
|
+
async answerRun(runId, answers, region) {
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
const res = await fetch(`${this.platformBase}/api/agents/runs/${encodeURIComponent(runId)}/answers`, {
|
|
82
|
+
method: "POST",
|
|
83
|
+
headers: { "Content-Type": "application/json", Authorization: `Bearer ${this.token}` },
|
|
84
|
+
body: JSON.stringify({ answers, ...(region ? { region } : {}) }),
|
|
85
|
+
signal: controller.signal,
|
|
72
86
|
});
|
|
87
|
+
if (!res.ok) {
|
|
88
|
+
const detail = await res.text().catch(() => "");
|
|
89
|
+
throw new Error(`Answer run ${runId} failed (${res.status}): ${detail.slice(0, 300)}`);
|
|
90
|
+
}
|
|
91
|
+
controller.abort();
|
|
73
92
|
}
|
|
74
93
|
async listTaskRuns(slug, workspaceId) {
|
|
75
94
|
return this.request("GET", `/tasks/${encodeURIComponent(slug)}/runs`, undefined, workspaceId ? { workspace_id: workspaceId } : undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-service-client.js","sourceRoot":"","sources":["../src/agent-service-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-service-client.js","sourceRoot":"","sources":["../src/agent-service-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-surface.d.ts","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server-surface.d.ts","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2B3C,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA4GD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAI7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,QAmCnE"}
|
package/dist/server-surface.js
CHANGED
|
@@ -14,6 +14,7 @@ import { register as registerBlueprints } from "./tools/blueprints.js";
|
|
|
14
14
|
import { register as registerRecording } from "./tools/recording.js";
|
|
15
15
|
import { register as registerContext } from "./tools/context.js";
|
|
16
16
|
import { register as registerTasks } from "./tools/tasks.js";
|
|
17
|
+
import { register as registerAgentHarness } from "./tools/agent-harness.js";
|
|
17
18
|
import { register as registerSession } from "./tools/session.js";
|
|
18
19
|
import { register as registerWorkflowGuide } from "./prompts/workflow-guide.js";
|
|
19
20
|
import { register as registerDebugExecution } from "./prompts/debug-execution.js";
|
|
@@ -104,6 +105,15 @@ execute PUBLISHED workflows, not unpublished Dev Mode branches.
|
|
|
104
105
|
|
|
105
106
|
For the microscope details, load get_skill("job-build-loop") and
|
|
106
107
|
get_skill("rpa-testing-workflow").`;
|
|
108
|
+
const HARNESS_LOOP = `THE AGENT HARNESS (staff: spawn and drive platform agents from here):
|
|
109
|
+
|
|
110
|
+
list_agent_catalog -> spawn_agent (catalog agents run in the background; the
|
|
111
|
+
'worker' task takes a freeform brief + toolProfile and converses via
|
|
112
|
+
send_task_message) -> agent_thread to observe -> answer_agent un-parks a
|
|
113
|
+
needs_input run -> await_agent blocks to the terminal result. Spawns are
|
|
114
|
+
staff-gated and spend-guarded server-side; per-run model / budgets /
|
|
115
|
+
promptAddendum overrides are clamped by the platform's caps.
|
|
116
|
+
`;
|
|
107
117
|
const SESSION_PREAMBLE = `CRITICAL: If the current directory contains a minicor.json file, you are in a workspace clone.
|
|
108
118
|
You MUST call session_start(directory) as your FIRST action. It returns the workspace rules
|
|
109
119
|
(AGENTS.md), prior session state for resuming, and all context you need. Follow the phase loop
|
|
@@ -117,7 +127,7 @@ If you are NOT in a workspace clone, use the tools freely - list_workspaces, clo
|
|
|
117
127
|
`;
|
|
118
128
|
export function buildInstructions(localTools) {
|
|
119
129
|
const header = "You are connected to the Minicor MCP server for RPA workflow automation.\n\n";
|
|
120
|
-
return header + (localTools ? SESSION_PREAMBLE : "") + BLUEPRINT_LOOP + JOBS_LOOP;
|
|
130
|
+
return header + (localTools ? SESSION_PREAMBLE : "") + BLUEPRINT_LOOP + HARNESS_LOOP + JOBS_LOOP;
|
|
121
131
|
}
|
|
122
132
|
export function registerSurface(deps, opts) {
|
|
123
133
|
const directVmTools = opts.directVmTools ?? true;
|
|
@@ -136,6 +146,7 @@ export function registerSurface(deps, opts) {
|
|
|
136
146
|
registerRecording(deps);
|
|
137
147
|
registerContext(deps);
|
|
138
148
|
registerTasks(deps);
|
|
149
|
+
registerAgentHarness(deps);
|
|
139
150
|
if (opts.localTools) {
|
|
140
151
|
registerSyncTools(deps);
|
|
141
152
|
registerSession(deps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-surface.js","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,QAAQ,IAAI,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,QAAQ,IAAI,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAEtF,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAarC;;;;GAIG;AACH;;;;GAIG;AACH,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBtB,CAAC;AAEF,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAiDiB,CAAC;AAEpC,MAAM,gBAAgB,GAAG;;;;;;;;;;CAUxB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,MAAM,MAAM,GACV,8EAA8E,CAAC;IACjF,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server-surface.js","sourceRoot":"","sources":["../src/server-surface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-harness.d.ts","sourceRoot":"","sources":["../../src/tools/agent-harness.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAuB5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAuItC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// The agent harness: staff spawn platform agents (catalog runs or the generic "worker"), read their
|
|
2
|
+
// threads, answer parked questions, and block on results. Wire shapes mirror agent-service's
|
|
3
|
+
// src/http/harness-contract.ts (node 1): overrides { model, budgets, promptAddendum } nested on both
|
|
4
|
+
// doors, source: "mcp" top-level, worker input { brief, toolProfile, budgets }, mcp:{uuid} idempotency.
|
|
5
|
+
import { randomUUID } from "node:crypto";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { safe } from "../helpers.js";
|
|
8
|
+
import { AgentServiceClient } from "../agent-service-client.js";
|
|
9
|
+
const regionParam = z.enum(["us", "ca"]).optional().describe("Region (us or ca). Auto-detected from workspace if omitted.");
|
|
10
|
+
// Terminal engine-run statuses; needs_input is parked, not finished — the await/answer split hinges on that.
|
|
11
|
+
const RUN_TERMINAL = new Set(["succeeded", "failed", "gave_up", "budget_exhausted", "cancelled"]);
|
|
12
|
+
const POLL_MS = 5_000;
|
|
13
|
+
/** Strip undefined values so wire payloads carry only what the caller sent. */
|
|
14
|
+
function prune(obj) {
|
|
15
|
+
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined));
|
|
16
|
+
}
|
|
17
|
+
/** One compact chronology row from a run summary or full run record. */
|
|
18
|
+
function compactRun(run) {
|
|
19
|
+
let parkedQuestion = run.needs_input?.first_question ?? null;
|
|
20
|
+
if (!parkedQuestion && run.status === "needs_input" && typeof run.needs_input_json === "string") {
|
|
21
|
+
try {
|
|
22
|
+
parkedQuestion = JSON.parse(run.needs_input_json)?.questions?.[0] ?? null;
|
|
23
|
+
}
|
|
24
|
+
catch { /* questionless */ }
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
runId: run.id, agent: run.agent_id, status: run.status, terminalReason: run.terminal_reason ?? null,
|
|
28
|
+
costUsd: run.cost_usd ?? null, createdAt: run.created_at ?? null, parentRunId: run.thread?.parent_run_id ?? null, parkedQuestion,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function register(deps) {
|
|
32
|
+
const { server } = deps;
|
|
33
|
+
const getClient = (region) => new AgentServiceClient(deps.getApiBase(region), deps.getAuthToken?.(region) || "");
|
|
34
|
+
server.tool("spawn_agent", "Spawn a platform agent into a workspace (staff harness). Catalog agents (job-builder, job-debugger, build-supervisor...) start as background runs; the generic 'worker' and other session manifests start as task runs you converse with via send_task_message. Call list_agent_catalog first for ids and input shapes. Returns run/task ids + thread id; then agent_thread to observe, answer_agent to un-park, await_agent to block.", {
|
|
35
|
+
workspaceId: z.number().describe("Workspace the agent acts on"),
|
|
36
|
+
agentId: z.string().describe("Catalog agent id or task slug (e.g. 'worker') from list_agent_catalog"),
|
|
37
|
+
input: z.record(z.string(), z.unknown()).optional().describe("Input matching the agent's input schema (catalog agents)"),
|
|
38
|
+
brief: z.string().optional().describe("Freeform brief for the 'worker' agent (merged into its input)"),
|
|
39
|
+
toolProfile: z.enum(["readonly", "builder", "full"]).optional().describe("Worker tool allowlist profile"),
|
|
40
|
+
model: z.string().optional().describe("Per-run model override (validated server-side)"),
|
|
41
|
+
budgets: z.object({ maxSteps: z.number().int().positive().optional(), maxTokens: z.number().int().positive().optional(), maxCostUsd: z.number().positive().optional(), wallClockMs: z.number().int().positive().optional() })
|
|
42
|
+
.optional().describe("Per-run budget overrides, clamped server-side by the platform caps"),
|
|
43
|
+
promptAddendum: z.string().min(1).max(4_000).optional().describe("Operator instructions APPENDED to the resolved prompt (never replaces it; 4k cap)"),
|
|
44
|
+
thread: z.object({ threadId: z.string().optional().describe("Attach to an existing thread"), parentRunId: z.string().optional().describe("Lineage: the run that spawned this one") })
|
|
45
|
+
.optional().describe("Thread lineage stamp; omitted = server auto-stamps mcp:{userId}"),
|
|
46
|
+
region: regionParam,
|
|
47
|
+
}, async ({ workspaceId, agentId, input, brief, toolProfile, model, budgets, promptAddendum, thread, region }) => {
|
|
48
|
+
const r = region ?? deps.state.getWorkspaceRegion(workspaceId);
|
|
49
|
+
return safe(async () => {
|
|
50
|
+
const client = getClient(r);
|
|
51
|
+
const isWorker = agentId === "worker"; // the worker carries budgets inside its input (workerInputSchema)
|
|
52
|
+
const ovr = prune({ model, budgets: isWorker ? undefined : budgets, promptAddendum });
|
|
53
|
+
const overrides = Object.keys(ovr).length ? ovr : undefined;
|
|
54
|
+
const tasks = (await client.listTasks())?.tasks ?? [];
|
|
55
|
+
if (tasks.some((t) => t.slug === agentId)) {
|
|
56
|
+
const res = await client.runTask(agentId, workspaceId, prune({ ...(input ?? {}), brief, toolProfile, budgets: isWorker ? budgets : undefined }), r, prune({ source: "mcp", overrides }));
|
|
57
|
+
return { taskRunId: res.run_id, sessionId: res.session_id ?? null, threadId: res.run?.thread_id ?? null, status: res.run?.status ?? "running" };
|
|
58
|
+
}
|
|
59
|
+
const res = await client.runAgent(agentId, prune({
|
|
60
|
+
workspace_id: workspaceId, input, region: r, idempotency_key: `mcp:${randomUUID()}`, source: "mcp", overrides,
|
|
61
|
+
thread: thread ? prune({ thread_id: thread.threadId, parent_run_id: thread.parentRunId }) : undefined,
|
|
62
|
+
}));
|
|
63
|
+
const run = res.run ?? res;
|
|
64
|
+
return { runId: run.id, threadId: run.thread_id ?? run.thread?.thread_id ?? thread?.threadId ?? null, status: run.status };
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
server.tool("agent_thread", "Read a thread's chronology: every engine run stamped with this thread id, compact (agent, status, terminal reason, cost, parked question when needs_input). Pass taskRunId too when the thread includes a worker/task conversation — its activity is merged in.", {
|
|
68
|
+
workspaceId: z.number().describe("Workspace ID (region detection)"),
|
|
69
|
+
threadId: z.string().min(1).describe("Thread ID (from spawn_agent or the console)"),
|
|
70
|
+
taskRunId: z.string().optional().describe("Also include this task run's activity (worker conversations)"),
|
|
71
|
+
region: regionParam,
|
|
72
|
+
}, async ({ workspaceId, threadId, taskRunId, region }) => {
|
|
73
|
+
const r = region ?? deps.state.getWorkspaceRegion(workspaceId);
|
|
74
|
+
return safe(async () => {
|
|
75
|
+
const client = getClient(r);
|
|
76
|
+
const runs = ((await client.listRuns({ thread_id: threadId }))?.runs ?? []).map(compactRun).sort((a, b) => new Date(a.createdAt ?? 0).getTime() - new Date(b.createdAt ?? 0).getTime());
|
|
77
|
+
return { threadId, runs, ...(taskRunId ? { taskRun: (await client.getTaskRun(taskRunId))?.run ?? null } : {}) };
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
server.tool("answer_agent", "Answer a parked engine run (status needs_input). Answers are positional against the run's parked questions. The run resumes in the background — follow with await_agent. Session/task conversations use send_task_message instead.", {
|
|
81
|
+
runId: z.string().min(1).describe("Engine run ID (not a task run)"),
|
|
82
|
+
answers: z.array(z.string()).min(1).describe("Positional answers to the parked questions"),
|
|
83
|
+
region: regionParam,
|
|
84
|
+
}, async ({ runId, answers, region }) => safe(async () => {
|
|
85
|
+
const client = getClient(region);
|
|
86
|
+
await client.answerRun(runId, answers, region);
|
|
87
|
+
const run = (await client.getRun(runId))?.run;
|
|
88
|
+
return { answered: true, run: run ? compactRun(run) : null };
|
|
89
|
+
}));
|
|
90
|
+
server.tool("await_agent", "Block until an agent finishes: polls a run (or task run) to a terminal state and returns the compact result (status, terminal reason, result text, cost). Returns early when a run parks on needs_input — answer_agent is then the next verb. On timeout returns the current status with timedOut: true.", {
|
|
91
|
+
runId: z.string().optional().describe("Engine run ID (exactly one of runId/taskRunId)"),
|
|
92
|
+
taskRunId: z.string().optional().describe("Task run ID (worker/session spawns)"),
|
|
93
|
+
timeoutSeconds: z.number().int().min(1).max(1800).default(300).describe("Max seconds to wait (default 300, max 1800)"),
|
|
94
|
+
region: regionParam,
|
|
95
|
+
}, async ({ runId, taskRunId, timeoutSeconds, region }) => safe(async () => {
|
|
96
|
+
if (!runId === !taskRunId)
|
|
97
|
+
throw new Error("Pass exactly one of runId or taskRunId");
|
|
98
|
+
const client = getClient(region), deadline = Date.now() + timeoutSeconds * 1000;
|
|
99
|
+
for (;;) {
|
|
100
|
+
if (runId) {
|
|
101
|
+
const run = (await client.getRun(runId))?.run;
|
|
102
|
+
if (!run)
|
|
103
|
+
throw new Error(`Run ${runId} not found`);
|
|
104
|
+
if (RUN_TERMINAL.has(run.status) || run.status === "needs_input") {
|
|
105
|
+
return { ...compactRun(run), resultText: typeof run.result_text === "string" ? run.result_text.slice(0, 2000) : null };
|
|
106
|
+
}
|
|
107
|
+
if (Date.now() >= deadline)
|
|
108
|
+
return { ...compactRun(run), timedOut: true };
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const run = (await client.getTaskRun(taskRunId))?.run;
|
|
112
|
+
if (!run)
|
|
113
|
+
throw new Error(`Task run ${taskRunId} not found`);
|
|
114
|
+
// Task runs are conversational: idle = turn complete (their rest state).
|
|
115
|
+
if (run.status === "idle" || run.status === "error")
|
|
116
|
+
return { taskRunId, status: run.status, activity: (run.activity ?? []).slice(-5) };
|
|
117
|
+
if (Date.now() >= deadline)
|
|
118
|
+
return { taskRunId, status: run.status, timedOut: true };
|
|
119
|
+
}
|
|
120
|
+
await new Promise((resolve) => setTimeout(resolve, Math.min(POLL_MS, deadline - Date.now())));
|
|
121
|
+
}
|
|
122
|
+
}));
|
|
123
|
+
server.tool("list_agent_catalog", "Discover what the harness can spawn: registry catalog agents (with runMode + input schema), session task manifests like 'worker' (spawned through the task door), and the non-spawnable session runtimes for context. Call before spawn_agent.", { region: regionParam }, async ({ region }) => safe(async () => {
|
|
124
|
+
const client = getClient(region);
|
|
125
|
+
const [catalog, runtimes, tasks] = await Promise.all([client.getAgentCatalog(), client.getSessionRuntimes(), client.listTasks()]);
|
|
126
|
+
const taskList = tasks?.tasks ?? [];
|
|
127
|
+
const taskSlugs = new Set(taskList.map((t) => t.slug));
|
|
128
|
+
return {
|
|
129
|
+
spawnable: [
|
|
130
|
+
...(catalog?.agents ?? []).filter((a) => !taskSlugs.has(a.id)).map((a) => ({
|
|
131
|
+
id: a.id, kind: "run", runMode: a.run_mode, name: a.name ?? null, description: a.description ?? null,
|
|
132
|
+
model: a.model ?? null, budgets: a.budgets ?? null, inputSchema: a.input_schema ?? null,
|
|
133
|
+
})),
|
|
134
|
+
...taskList.map((t) => ({
|
|
135
|
+
id: t.slug, kind: "task", runMode: "session", name: t.name ?? null,
|
|
136
|
+
description: t.description ?? null, inputSchema: t.input_schema ?? null,
|
|
137
|
+
})),
|
|
138
|
+
],
|
|
139
|
+
sessionRuntimes: runtimes?.runtimes ?? [],
|
|
140
|
+
};
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=agent-harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-harness.js","sourceRoot":"","sources":["../../src/tools/agent-harness.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minicor/mcp-server",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.12.0",
|
|
4
4
|
"description": "Desktop and browser RPA automation, workflow management, and AI-powered debugging for the Minicor platform. Formerly Laminar.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/lib.js",
|