veryfront 0.1.146 → 0.1.147
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/esm/deno.js +1 -1
- package/esm/src/internal-agents/run-stream.d.ts.map +1 -1
- package/esm/src/internal-agents/run-stream.js +60 -79
- package/esm/src/internal-agents/schema.d.ts +243 -4
- package/esm/src/internal-agents/schema.d.ts.map +1 -1
- package/esm/src/internal-agents/schema.js +219 -8
- package/esm/src/jobs/schemas.d.ts +4 -4
- package/esm/src/mcp/elicitation.d.ts +16 -0
- package/esm/src/mcp/elicitation.d.ts.map +1 -0
- package/esm/src/mcp/elicitation.js +21 -0
- package/esm/src/mcp/index.d.ts +3 -0
- package/esm/src/mcp/index.d.ts.map +1 -1
- package/esm/src/mcp/index.js +2 -0
- package/esm/src/mcp/server.d.ts +22 -0
- package/esm/src/mcp/server.d.ts.map +1 -1
- package/esm/src/mcp/server.js +163 -2
- package/esm/src/mcp/task-store.d.ts +27 -0
- package/esm/src/mcp/task-store.d.ts.map +1 -0
- package/esm/src/mcp/task-store.js +116 -0
- package/esm/src/modules/react-loader/ssr-module-loader/cache/memory.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/cache/memory.js +4 -2
- package/esm/src/server/handlers/request/agent-stream.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/agent-stream.handler.js +4 -3
- package/esm/src/tool/remote-mcp.d.ts.map +1 -1
- package/esm/src/tool/remote-mcp.js +60 -1
- package/esm/src/tool/types.d.ts +2 -0
- package/esm/src/tool/types.d.ts.map +1 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
- package/src/deno.js +1 -1
- package/src/src/internal-agents/run-stream.ts +61 -94
- package/src/src/internal-agents/schema.ts +277 -10
- package/src/src/mcp/elicitation.ts +42 -0
- package/src/src/mcp/index.ts +9 -0
- package/src/src/mcp/server.ts +185 -2
- package/src/src/mcp/task-store.ts +137 -0
- package/src/src/modules/react-loader/ssr-module-loader/cache/memory.ts +4 -2
- package/src/src/server/handlers/request/agent-stream.handler.ts +5 -3
- package/src/src/tool/remote-mcp.ts +86 -1
- package/src/src/tool/types.ts +2 -0
- package/src/src/utils/version-constant.ts +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface Task {
|
|
2
|
+
taskId: string;
|
|
3
|
+
status: "working" | "input_required" | "completed" | "failed" | "cancelled";
|
|
4
|
+
statusMessage?: string;
|
|
5
|
+
createdAt: string;
|
|
6
|
+
lastUpdatedAt: string;
|
|
7
|
+
ttl: number;
|
|
8
|
+
pollInterval?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class TaskStore {
|
|
11
|
+
private tasks;
|
|
12
|
+
private results;
|
|
13
|
+
private lastSweep;
|
|
14
|
+
create(ttl: number): Task;
|
|
15
|
+
get(taskId: string): Task | undefined;
|
|
16
|
+
complete(taskId: string, result: unknown): void;
|
|
17
|
+
fail(taskId: string, message: string): void;
|
|
18
|
+
cancel(taskId: string): boolean;
|
|
19
|
+
getResult(taskId: string): unknown | undefined;
|
|
20
|
+
list(): Task[];
|
|
21
|
+
clear(): void;
|
|
22
|
+
private isExpired;
|
|
23
|
+
private lazySweep;
|
|
24
|
+
private sweep;
|
|
25
|
+
private evictOldest;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=task-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["../../../src/src/mcp/task-store.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,SAAS,CAAK;IAEtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmBzB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAUrC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAQ/C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ3C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAS/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAM9C,IAAI,IAAI,IAAI,EAAE;IAKd,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,WAAW;CAyBpB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
2
|
+
const TERMINAL_STATUSES = new Set(["completed", "failed", "cancelled"]);
|
|
3
|
+
const DEFAULT_POLL_INTERVAL = 2000;
|
|
4
|
+
const SWEEP_INTERVAL_MS = 30_000;
|
|
5
|
+
const MAX_TASKS = 1000;
|
|
6
|
+
export class TaskStore {
|
|
7
|
+
tasks = new Map();
|
|
8
|
+
results = new Map();
|
|
9
|
+
lastSweep = 0;
|
|
10
|
+
create(ttl) {
|
|
11
|
+
this.lazySweep();
|
|
12
|
+
if (this.tasks.size >= MAX_TASKS) {
|
|
13
|
+
this.evictOldest();
|
|
14
|
+
}
|
|
15
|
+
const now = new Date().toISOString();
|
|
16
|
+
const task = {
|
|
17
|
+
taskId: dntShim.crypto.randomUUID(),
|
|
18
|
+
status: "working",
|
|
19
|
+
createdAt: now,
|
|
20
|
+
lastUpdatedAt: now,
|
|
21
|
+
ttl,
|
|
22
|
+
pollInterval: DEFAULT_POLL_INTERVAL,
|
|
23
|
+
};
|
|
24
|
+
this.tasks.set(task.taskId, task);
|
|
25
|
+
return task;
|
|
26
|
+
}
|
|
27
|
+
get(taskId) {
|
|
28
|
+
const task = this.tasks.get(taskId);
|
|
29
|
+
if (task && this.isExpired(task)) {
|
|
30
|
+
this.tasks.delete(taskId);
|
|
31
|
+
this.results.delete(taskId);
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
return task;
|
|
35
|
+
}
|
|
36
|
+
complete(taskId, result) {
|
|
37
|
+
const task = this.tasks.get(taskId);
|
|
38
|
+
if (!task || TERMINAL_STATUSES.has(task.status))
|
|
39
|
+
return;
|
|
40
|
+
task.status = "completed";
|
|
41
|
+
task.lastUpdatedAt = new Date().toISOString();
|
|
42
|
+
this.results.set(taskId, result);
|
|
43
|
+
}
|
|
44
|
+
fail(taskId, message) {
|
|
45
|
+
const task = this.tasks.get(taskId);
|
|
46
|
+
if (!task || TERMINAL_STATUSES.has(task.status))
|
|
47
|
+
return;
|
|
48
|
+
task.status = "failed";
|
|
49
|
+
task.statusMessage = message;
|
|
50
|
+
task.lastUpdatedAt = new Date().toISOString();
|
|
51
|
+
}
|
|
52
|
+
cancel(taskId) {
|
|
53
|
+
const task = this.tasks.get(taskId);
|
|
54
|
+
if (!task || TERMINAL_STATUSES.has(task.status))
|
|
55
|
+
return false;
|
|
56
|
+
task.status = "cancelled";
|
|
57
|
+
task.statusMessage = "The task was cancelled by request.";
|
|
58
|
+
task.lastUpdatedAt = new Date().toISOString();
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
getResult(taskId) {
|
|
62
|
+
const task = this.get(taskId);
|
|
63
|
+
if (!task || !TERMINAL_STATUSES.has(task.status))
|
|
64
|
+
return undefined;
|
|
65
|
+
return this.results.get(taskId);
|
|
66
|
+
}
|
|
67
|
+
list() {
|
|
68
|
+
this.lazySweep();
|
|
69
|
+
return Array.from(this.tasks.values());
|
|
70
|
+
}
|
|
71
|
+
clear() {
|
|
72
|
+
this.tasks.clear();
|
|
73
|
+
this.results.clear();
|
|
74
|
+
}
|
|
75
|
+
isExpired(task) {
|
|
76
|
+
return Date.now() - new Date(task.createdAt).getTime() > task.ttl;
|
|
77
|
+
}
|
|
78
|
+
lazySweep() {
|
|
79
|
+
const now = Date.now();
|
|
80
|
+
if (now - this.lastSweep < SWEEP_INTERVAL_MS)
|
|
81
|
+
return;
|
|
82
|
+
this.lastSweep = now;
|
|
83
|
+
this.sweep();
|
|
84
|
+
}
|
|
85
|
+
sweep() {
|
|
86
|
+
for (const [id, task] of this.tasks) {
|
|
87
|
+
if (this.isExpired(task)) {
|
|
88
|
+
this.tasks.delete(id);
|
|
89
|
+
this.results.delete(id);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
evictOldest() {
|
|
94
|
+
// Evict the oldest terminal task, or the oldest task overall
|
|
95
|
+
let oldestTerminal;
|
|
96
|
+
let oldestAny;
|
|
97
|
+
let oldestTerminalTime = Infinity;
|
|
98
|
+
let oldestAnyTime = Infinity;
|
|
99
|
+
for (const [id, task] of this.tasks) {
|
|
100
|
+
const created = new Date(task.createdAt).getTime();
|
|
101
|
+
if (created < oldestAnyTime) {
|
|
102
|
+
oldestAnyTime = created;
|
|
103
|
+
oldestAny = id;
|
|
104
|
+
}
|
|
105
|
+
if (TERMINAL_STATUSES.has(task.status) && created < oldestTerminalTime) {
|
|
106
|
+
oldestTerminalTime = created;
|
|
107
|
+
oldestTerminal = id;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const toEvict = oldestTerminal ?? oldestAny;
|
|
111
|
+
if (toEvict) {
|
|
112
|
+
this.tasks.delete(toEvict);
|
|
113
|
+
this.results.delete(toEvict);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../../../src/src/modules/react-loader/ssr-module-loader/cache/memory.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAO5D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOnE,eAAO,MAAM,iBAAiB,oCAE5B,CAAC;AAEH,eAAO,MAAM,uBAAuB,oCAElC,CAAC;AAEH,eAAO,MAAM,gBAAgB,4BAAmC,CAAC;AAEjE,eAAO,MAAM,aAAa,0BAExB,CAAC;AAEH,eAAO,MAAM,gBAAgB,4BAAmC,CAAC;AAGjE,wBAAgB,qBAAqB,IAAI,SAAS,CAKjD;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../../../src/src/modules/react-loader/ssr-module-loader/cache/memory.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAO5D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOnE,eAAO,MAAM,iBAAiB,oCAE5B,CAAC;AAEH,eAAO,MAAM,uBAAuB,oCAElC,CAAC;AAEH,eAAO,MAAM,gBAAgB,4BAAmC,CAAC;AAEjE,eAAO,MAAM,aAAa,0BAExB,CAAC;AAEH,eAAO,MAAM,gBAAgB,4BAAmC,CAAC;AAGjE,wBAAgB,qBAAqB,IAAI,SAAS,CAKjD;AAwBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAW/D;AAKD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAU5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAOA;AAiDD,wBAAgB,mBAAmB,IAAI,IAAI,CAqB1C;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAiDrE"}
|
|
@@ -55,10 +55,12 @@ const projectTransformCounts = new Map();
|
|
|
55
55
|
const RATE_LIMIT_BYPASS_PROJECTS = new Set(["__single__"]);
|
|
56
56
|
/**
|
|
57
57
|
* Project ID prefixes that bypass per-project rate limiting.
|
|
58
|
-
* - "local-": Used for compiled binary CLI, local filesystem projects
|
|
58
|
+
* - "local-": Used for compiled binary CLI, local filesystem projects
|
|
59
59
|
* where there's no multi-tenancy and noisy-neighbor protection isn't needed.
|
|
60
|
+
* - "test_": Used by integration tests (TestContext.projectId) where there's
|
|
61
|
+
* no multi-tenancy concern and rate limiting causes flaky failures under CI load.
|
|
60
62
|
*/
|
|
61
|
-
const RATE_LIMIT_BYPASS_PREFIXES = ["local-"];
|
|
63
|
+
const RATE_LIMIT_BYPASS_PREFIXES = ["local-", "test_"];
|
|
62
64
|
/**
|
|
63
65
|
* Attempt to acquire a project-level transform slot immediately.
|
|
64
66
|
* Returns true if acquired, false if project is at capacity.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-stream.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/agent-stream.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,4BAA4B,EAE7B,MAAM,2CAA2C,CAAC;AAmBnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAKnG,MAAM,WAAW,sBACf,SAAQ,yBAAyB,EAAE,+BAA+B;IAClE,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AA4ED,qBAAa,kBAAmB,SAAQ,WAAW;IAOrC,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,QAAQ,EAAE,eAAe,CAIvB;gBAE2B,IAAI,GAAE,sBAAoC;IAIvE,OAAO,CAAC,sBAAsB;IAwBxB,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAgHhF"}
|
|
@@ -5,7 +5,7 @@ import { resolveRuntimeOwnerInvokeUrl, RUNTIME_OWNER_INVOKE_URL_HEADER, } from "
|
|
|
5
5
|
import { ControlPlaneRequestError, verifyControlPlaneRequest, } from "../../../internal-agents/control-plane-auth.js";
|
|
6
6
|
import { INTERNAL_AGENT_STREAM_MAX_BODY_BYTES, InternalAgentRequestBodyTooLargeError, readInternalAgentRequestBody, } from "../../../internal-agents/request-body.js";
|
|
7
7
|
import { AgentRunAlreadyExistsError, agentRunSessionManager, } from "../../../internal-agents/session-manager.js";
|
|
8
|
-
import {
|
|
8
|
+
import { InternalAgentStreamRequestSchema, toRuntimeRunAgentInput, } from "../../../internal-agents/schema.js";
|
|
9
9
|
import { BaseHandler } from "../response/base.js";
|
|
10
10
|
import { PRIORITY_MEDIUM_API } from "../../../utils/constants/index.js";
|
|
11
11
|
import { getHostEnv } from "../../../platform/compat/process.js";
|
|
@@ -90,7 +90,7 @@ export class AgentStreamHandler extends BaseHandler {
|
|
|
90
90
|
.withSecurity(ctx.securityConfig ?? undefined, req);
|
|
91
91
|
try {
|
|
92
92
|
const rawBody = await readInternalAgentRequestBody(req, INTERNAL_AGENT_STREAM_MAX_BODY_BYTES);
|
|
93
|
-
const payload =
|
|
93
|
+
const payload = InternalAgentStreamRequestSchema.parse(JSON.parse(rawBody));
|
|
94
94
|
await verifyControlPlaneRequest(req, ctx, rawBody, {
|
|
95
95
|
expectedSubject: payload.runId,
|
|
96
96
|
expectedSurface: "studio",
|
|
@@ -117,7 +117,8 @@ export class AgentStreamHandler extends BaseHandler {
|
|
|
117
117
|
});
|
|
118
118
|
return this.respond(builder.json({ error: "Agent not found" }, 404));
|
|
119
119
|
}
|
|
120
|
-
const
|
|
120
|
+
const runtimeInput = toRuntimeRunAgentInput(payload);
|
|
121
|
+
const response = await createRuntimeAgentStreamResponse(runtimeInput, agent, this.deps);
|
|
121
122
|
logger.info("Internal agent stream response created", {
|
|
122
123
|
runId: payload.runId,
|
|
123
124
|
threadId: payload.threadId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-mcp.d.ts","sourceRoot":"","sources":["../../../src/src/tool/remote-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAkB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzF,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnF,MAAM,WAAW,yBAAyB;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC3D,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"remote-mcp.d.ts","sourceRoot":"","sources":["../../../src/src/tool/remote-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAkB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzF,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnF,MAAM,WAAW,yBAAyB;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC3D,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4RD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,yBAAyB,GAChC,gBAAgB,CA6ClB"}
|
|
@@ -87,6 +87,50 @@ function extractJsonRpcErrorMessage(payload) {
|
|
|
87
87
|
}
|
|
88
88
|
return "Remote MCP server returned an error";
|
|
89
89
|
}
|
|
90
|
+
function parseSseEvents(text) {
|
|
91
|
+
const events = [];
|
|
92
|
+
let currentEvent = { data: [] };
|
|
93
|
+
for (const rawLine of text.split(/\r?\n/)) {
|
|
94
|
+
const line = rawLine.trimEnd();
|
|
95
|
+
if (line.length === 0) {
|
|
96
|
+
if (currentEvent.data.length > 0) {
|
|
97
|
+
events.push(currentEvent);
|
|
98
|
+
}
|
|
99
|
+
currentEvent = { data: [] };
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (line.startsWith(":")) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (line.startsWith("data:")) {
|
|
106
|
+
currentEvent.data.push(line.slice(5).trimStart());
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (currentEvent.data.length > 0) {
|
|
110
|
+
events.push(currentEvent);
|
|
111
|
+
}
|
|
112
|
+
return events;
|
|
113
|
+
}
|
|
114
|
+
function parseJsonRpcSsePayload(text) {
|
|
115
|
+
const parsedPayloads = parseSseEvents(text)
|
|
116
|
+
.map((event) => parseJsonText(event.data.join("\n")))
|
|
117
|
+
.filter((payload) => payload !== undefined);
|
|
118
|
+
const jsonRpcPayload = parsedPayloads.find((payload) => isRecord(payload) && ("result" in payload || "error" in payload));
|
|
119
|
+
if (jsonRpcPayload !== undefined) {
|
|
120
|
+
return jsonRpcPayload;
|
|
121
|
+
}
|
|
122
|
+
if (parsedPayloads.length > 0) {
|
|
123
|
+
return parsedPayloads[0];
|
|
124
|
+
}
|
|
125
|
+
throw new Error("Remote MCP SSE response did not include a JSON-RPC payload");
|
|
126
|
+
}
|
|
127
|
+
async function parseJsonRpcResponse(response) {
|
|
128
|
+
const contentType = response.headers.get("content-type")?.toLowerCase() ?? "";
|
|
129
|
+
if (contentType.includes("text/event-stream")) {
|
|
130
|
+
return parseJsonRpcSsePayload(await response.text());
|
|
131
|
+
}
|
|
132
|
+
return await response.json();
|
|
133
|
+
}
|
|
90
134
|
async function resolveValue(value, context) {
|
|
91
135
|
if (isResolver(value)) {
|
|
92
136
|
return await value(context);
|
|
@@ -97,8 +141,23 @@ async function resolveHeaders(headers, context) {
|
|
|
97
141
|
const resolvedHeaders = headers ? await resolveValue(headers, context) : undefined;
|
|
98
142
|
const finalHeaders = new dntShim.Headers(resolvedHeaders);
|
|
99
143
|
finalHeaders.set("Content-Type", "application/json");
|
|
144
|
+
finalHeaders.set("Accept", mergeAcceptHeader(finalHeaders.get("Accept")));
|
|
100
145
|
return finalHeaders;
|
|
101
146
|
}
|
|
147
|
+
function mergeAcceptHeader(existingAccept) {
|
|
148
|
+
const requiredTypes = ["application/json", "text/event-stream"];
|
|
149
|
+
const existingTypes = (existingAccept ?? "")
|
|
150
|
+
.split(",")
|
|
151
|
+
.map((entry) => entry.trim())
|
|
152
|
+
.filter((entry) => entry.length > 0);
|
|
153
|
+
const existingKeys = new Set(existingTypes.map((entry) => entry.split(";")[0]?.trim().toLowerCase()).filter(Boolean));
|
|
154
|
+
for (const requiredType of requiredTypes) {
|
|
155
|
+
if (!existingKeys.has(requiredType)) {
|
|
156
|
+
existingTypes.push(requiredType);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return existingTypes.join(", ");
|
|
160
|
+
}
|
|
102
161
|
async function postJsonRpc(endpoint, headers, body, fetchImpl) {
|
|
103
162
|
const response = await fetchImpl(endpoint, {
|
|
104
163
|
method: "POST",
|
|
@@ -109,7 +168,7 @@ async function postJsonRpc(endpoint, headers, body, fetchImpl) {
|
|
|
109
168
|
const detail = await response.text();
|
|
110
169
|
throw new Error(`Remote MCP request failed (${response.status})${detail ? `: ${detail}` : ""}`);
|
|
111
170
|
}
|
|
112
|
-
return await response
|
|
171
|
+
return await parseJsonRpcResponse(response);
|
|
113
172
|
}
|
|
114
173
|
function getJsonRpcResult(payload) {
|
|
115
174
|
if (!isRecord(payload)) {
|
package/esm/src/tool/types.d.ts
CHANGED
|
@@ -48,6 +48,8 @@ export interface ToolExecutionContext {
|
|
|
48
48
|
projectId?: string;
|
|
49
49
|
/** End-user identity for per-user token resolution in integration tools */
|
|
50
50
|
endUserId?: string;
|
|
51
|
+
/** Progress token for sending progress notifications (MCP 2025-11-25) */
|
|
52
|
+
progressToken?: string | number;
|
|
51
53
|
/** Additional context */
|
|
52
54
|
[key: string]: unknown;
|
|
53
55
|
/** Blob storage access (if configured in workflow) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/tool/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/tool/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.147";
|
|
2
2
|
//# sourceMappingURL=version-constant.d.ts.map
|
package/package.json
CHANGED
package/src/deno.js
CHANGED
|
@@ -120,95 +120,60 @@ function isRecord(value: unknown): value is Record<string, unknown> {
|
|
|
120
120
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
function
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return part.input;
|
|
123
|
+
function parseToolArguments(serializedArguments: string): Record<string, unknown> {
|
|
124
|
+
try {
|
|
125
|
+
const parsed = JSON.parse(serializedArguments);
|
|
126
|
+
return isRecord(parsed) ? parsed : {};
|
|
127
|
+
} catch {
|
|
128
|
+
return {};
|
|
130
129
|
}
|
|
131
|
-
|
|
132
|
-
return {};
|
|
133
130
|
}
|
|
134
131
|
|
|
135
|
-
function
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
typeof part.toolName === "string"
|
|
172
|
-
) {
|
|
173
|
-
return {
|
|
174
|
-
type: part.type,
|
|
175
|
-
toolCallId: part.toolCallId,
|
|
176
|
-
toolName: part.toolName,
|
|
177
|
-
args: normalizeToolArgs(part),
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
if (part.type === "tool_result" && typeof part.tool_call_id === "string") {
|
|
182
|
-
return {
|
|
183
|
-
type: "tool-result",
|
|
184
|
-
toolCallId: part.tool_call_id,
|
|
185
|
-
toolName: typeof part.tool_name === "string" ? part.tool_name : "unknown",
|
|
186
|
-
result: "output" in part ? part.output : undefined,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
132
|
+
function normalizeRuntimeMessages(messages: RuntimeRunAgentInput["messages"]): Message[] {
|
|
133
|
+
return messages.map((message) => {
|
|
134
|
+
const parts: Message["parts"] = [];
|
|
135
|
+
|
|
136
|
+
switch (message.role) {
|
|
137
|
+
case "system":
|
|
138
|
+
case "user":
|
|
139
|
+
parts.push({ type: "text", text: message.content });
|
|
140
|
+
break;
|
|
141
|
+
case "assistant":
|
|
142
|
+
if (typeof message.content === "string" && message.content.length > 0) {
|
|
143
|
+
parts.push({ type: "text", text: message.content });
|
|
144
|
+
}
|
|
145
|
+
for (const toolCall of message.toolCalls ?? []) {
|
|
146
|
+
parts.push({
|
|
147
|
+
type: "tool-call",
|
|
148
|
+
toolCallId: toolCall.id,
|
|
149
|
+
toolName: toolCall.function.name,
|
|
150
|
+
args: parseToolArguments(toolCall.function.arguments),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
break;
|
|
154
|
+
case "tool":
|
|
155
|
+
parts.push({
|
|
156
|
+
type: "tool-result",
|
|
157
|
+
toolCallId: message.toolCallId,
|
|
158
|
+
toolName: "unknown",
|
|
159
|
+
result: message.error
|
|
160
|
+
? {
|
|
161
|
+
content: message.content,
|
|
162
|
+
error: message.error,
|
|
163
|
+
}
|
|
164
|
+
: message.content,
|
|
165
|
+
});
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
189
168
|
|
|
190
|
-
if (part.type === "tool-result" && typeof part.toolCallId === "string") {
|
|
191
169
|
return {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
170
|
+
id: message.id,
|
|
171
|
+
role: message.role,
|
|
172
|
+
parts,
|
|
173
|
+
...(message.createdAt ? { timestamp: Date.parse(message.createdAt) || undefined } : {}),
|
|
174
|
+
...(message.metadata ? { metadata: message.metadata } : {}),
|
|
196
175
|
};
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
function normalizeRuntimeMessages(messages: RuntimeRunAgentInput["messages"]): Message[] {
|
|
203
|
-
return messages.map((message) => ({
|
|
204
|
-
id: message.id,
|
|
205
|
-
role: message.role,
|
|
206
|
-
parts: message.parts
|
|
207
|
-
.map((part) => isRecord(part) ? normalizeMessagePart(part) : null)
|
|
208
|
-
.filter((part): part is Message["parts"][number] => part !== null),
|
|
209
|
-
...(message.createdAt ? { timestamp: Date.parse(message.createdAt) || undefined } : {}),
|
|
210
|
-
...(message.metadata ? { metadata: message.metadata } : {}),
|
|
211
|
-
}));
|
|
176
|
+
});
|
|
212
177
|
}
|
|
213
178
|
|
|
214
179
|
function getAllowedRemoteToolNames(
|
|
@@ -235,7 +200,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
235
200
|
logger.info("Starting internal agent runtime stream", {
|
|
236
201
|
runId: input.runId,
|
|
237
202
|
threadId: input.threadId,
|
|
238
|
-
agentId:
|
|
203
|
+
agentId: agent.id,
|
|
239
204
|
messageCount: input.messages.length,
|
|
240
205
|
toolCount: input.tools.length,
|
|
241
206
|
contextCount: input.context.length,
|
|
@@ -270,6 +235,8 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
270
235
|
{
|
|
271
236
|
threadId: input.threadId,
|
|
272
237
|
runId: input.runId,
|
|
238
|
+
...(input.parentRunId ? { parentRunId: input.parentRunId } : {}),
|
|
239
|
+
...(input.state !== undefined ? { state: input.state } : {}),
|
|
273
240
|
context: input.context,
|
|
274
241
|
forwardedProps: input.forwardedProps,
|
|
275
242
|
},
|
|
@@ -285,14 +252,14 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
285
252
|
logger.info("Internal agent runtime stream attached", {
|
|
286
253
|
runId: input.runId,
|
|
287
254
|
threadId: input.threadId,
|
|
288
|
-
agentId:
|
|
255
|
+
agentId: agent.id,
|
|
289
256
|
});
|
|
290
257
|
} catch (error) {
|
|
291
258
|
deps.sessionManager.failRun(input.runId);
|
|
292
259
|
logger.error("Internal agent runtime stream setup failed", {
|
|
293
260
|
runId: input.runId,
|
|
294
261
|
threadId: input.threadId,
|
|
295
|
-
agentId:
|
|
262
|
+
agentId: agent.id,
|
|
296
263
|
error: error instanceof Error ? error.message : String(error),
|
|
297
264
|
});
|
|
298
265
|
throw error;
|
|
@@ -330,7 +297,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
330
297
|
logger.warn("Internal agent runtime stream aborted", {
|
|
331
298
|
runId: input.runId,
|
|
332
299
|
threadId: input.threadId,
|
|
333
|
-
agentId:
|
|
300
|
+
agentId: agent.id,
|
|
334
301
|
});
|
|
335
302
|
reader.cancel(new AgentRunCancelledError()).catch(() => {});
|
|
336
303
|
};
|
|
@@ -339,7 +306,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
339
306
|
enqueueIfAttached("RunStarted", {
|
|
340
307
|
runId: input.runId,
|
|
341
308
|
threadId: input.threadId,
|
|
342
|
-
agentId:
|
|
309
|
+
agentId: agent.id,
|
|
343
310
|
});
|
|
344
311
|
|
|
345
312
|
try {
|
|
@@ -353,7 +320,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
353
320
|
logger.info("Internal agent runtime stream reader completed", {
|
|
354
321
|
runId: input.runId,
|
|
355
322
|
threadId: input.threadId,
|
|
356
|
-
agentId:
|
|
323
|
+
agentId: agent.id,
|
|
357
324
|
});
|
|
358
325
|
break;
|
|
359
326
|
}
|
|
@@ -387,7 +354,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
387
354
|
logger.info("Internal agent runtime stream finalized", {
|
|
388
355
|
runId: input.runId,
|
|
389
356
|
threadId: input.threadId,
|
|
390
|
-
agentId:
|
|
357
|
+
agentId: agent.id,
|
|
391
358
|
sawVisibleOutput: state.sawVisibleOutput,
|
|
392
359
|
sawTerminalError: state.sawTerminalError,
|
|
393
360
|
finishReason: state.metadata.finishReason,
|
|
@@ -398,7 +365,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
398
365
|
logger.warn("Internal agent runtime stream cancelled", {
|
|
399
366
|
runId: input.runId,
|
|
400
367
|
threadId: input.threadId,
|
|
401
|
-
agentId:
|
|
368
|
+
agentId: agent.id,
|
|
402
369
|
error: error.message,
|
|
403
370
|
});
|
|
404
371
|
enqueueIfAttached("RunError", {
|
|
@@ -410,7 +377,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
410
377
|
logger.error("Internal agent runtime stream failed", {
|
|
411
378
|
runId: input.runId,
|
|
412
379
|
threadId: input.threadId,
|
|
413
|
-
agentId:
|
|
380
|
+
agentId: agent.id,
|
|
414
381
|
error: error instanceof Error ? error.message : String(error),
|
|
415
382
|
});
|
|
416
383
|
enqueueIfAttached("RunError", {
|
|
@@ -426,7 +393,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
426
393
|
logger.debug("Internal agent runtime stream response closed", {
|
|
427
394
|
runId: input.runId,
|
|
428
395
|
threadId: input.threadId,
|
|
429
|
-
agentId:
|
|
396
|
+
agentId: agent.id,
|
|
430
397
|
clientAttached,
|
|
431
398
|
});
|
|
432
399
|
}
|
|
@@ -436,7 +403,7 @@ export async function createRuntimeAgentStreamResponse(
|
|
|
436
403
|
logger.info("Internal agent runtime client detached", {
|
|
437
404
|
runId: input.runId,
|
|
438
405
|
threadId: input.threadId,
|
|
439
|
-
agentId:
|
|
406
|
+
agentId: agent.id,
|
|
440
407
|
});
|
|
441
408
|
return Promise.resolve();
|
|
442
409
|
},
|