@sema-agent/server 1.250.0 → 1.251.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/dist/fleet/subagent-tail-bus.d.ts +14 -0
- package/dist/fleet/subagent-tail-bus.d.ts.map +1 -0
- package/dist/fleet/subagent-tail-bus.js +95 -0
- package/dist/fleet/subagent-tail-bus.js.map +1 -0
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +95 -0
- package/dist/http/server.js.map +1 -1
- package/dist/runs.d.ts.map +1 -1
- package/dist/runs.js +12 -2
- package/dist/runs.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type SubagentTailFrame = Record<string, unknown> & {
|
|
2
|
+
type: string;
|
|
3
|
+
};
|
|
4
|
+
export declare function projectTailFrame(e: Record<string, unknown> & {
|
|
5
|
+
type?: string;
|
|
6
|
+
}): SubagentTailFrame | null;
|
|
7
|
+
export declare class SubagentTailBus {
|
|
8
|
+
private readonly subs;
|
|
9
|
+
publish(bgAgentId: string, frame: SubagentTailFrame): void;
|
|
10
|
+
hasSubscribers(bgAgentId: string): boolean;
|
|
11
|
+
subscribe(bgAgentId: string): AsyncIterableIterator<SubagentTailFrame>;
|
|
12
|
+
}
|
|
13
|
+
export declare const defaultSubagentTailBus: SubagentTailBus;
|
|
14
|
+
//# sourceMappingURL=subagent-tail-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-tail-bus.d.ts","sourceRoot":"","sources":["../../src/fleet/subagent-tail-bus.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAM3E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,GAAG,IAAI,CAsBzG;AAUD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0C;IAG/D,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAe1D,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI1C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;CA6CvE;AAID,eAAO,MAAM,sBAAsB,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { redactSecrets } from "../trace/redact.js";
|
|
2
|
+
import { taskProgressEventData, toolStartEventData, toolEndEventData } from "../trace/project.js";
|
|
3
|
+
const TAIL_QUEUE_CAP = 512;
|
|
4
|
+
export function projectTailFrame(e) {
|
|
5
|
+
const t = e.type;
|
|
6
|
+
if (t === "task_progress") {
|
|
7
|
+
return { type: "task_progress", ...taskProgressEventData(e) };
|
|
8
|
+
}
|
|
9
|
+
if (t === "tool_start") {
|
|
10
|
+
const tsv = e;
|
|
11
|
+
return { type: "tool_start", ...(tsv.label !== undefined ? { label: tsv.label } : {}), ...toolStartEventData(tsv) };
|
|
12
|
+
}
|
|
13
|
+
if (t === "tool_end") {
|
|
14
|
+
const te = e;
|
|
15
|
+
return { type: "tool_end", ...(te.label !== undefined ? { label: te.label } : {}), ...toolEndEventData(te) };
|
|
16
|
+
}
|
|
17
|
+
if (t === "text_delta") {
|
|
18
|
+
const td = e;
|
|
19
|
+
return { type: "text_delta", delta: td.delta, ...(td.eventId ? { eventId: td.eventId } : {}), ...(td.parentToolCallId ? { parentToolCallId: td.parentToolCallId } : {}) };
|
|
20
|
+
}
|
|
21
|
+
if (t === "reasoning_delta") {
|
|
22
|
+
const rd = e;
|
|
23
|
+
return { type: "reasoning_delta", delta: redactSecrets(rd.delta), ...(rd.eventId ? { eventId: rd.eventId } : {}), ...(rd.parentToolCallId ? { parentToolCallId: rd.parentToolCallId } : {}) };
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
export class SubagentTailBus {
|
|
28
|
+
subs = new Map();
|
|
29
|
+
publish(bgAgentId, frame) {
|
|
30
|
+
const set = this.subs.get(bgAgentId);
|
|
31
|
+
if (!set)
|
|
32
|
+
return;
|
|
33
|
+
for (const sub of set) {
|
|
34
|
+
if (sub.closed)
|
|
35
|
+
continue;
|
|
36
|
+
if (sub.queue.length >= TAIL_QUEUE_CAP) {
|
|
37
|
+
sub.queue.shift();
|
|
38
|
+
sub.dropped++;
|
|
39
|
+
}
|
|
40
|
+
sub.queue.push(frame);
|
|
41
|
+
sub.wake?.();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
hasSubscribers(bgAgentId) {
|
|
45
|
+
return (this.subs.get(bgAgentId)?.size ?? 0) > 0;
|
|
46
|
+
}
|
|
47
|
+
subscribe(bgAgentId) {
|
|
48
|
+
const sub = { queue: [], dropped: 0, closed: false };
|
|
49
|
+
let set = this.subs.get(bgAgentId);
|
|
50
|
+
if (!set) {
|
|
51
|
+
set = new Set();
|
|
52
|
+
this.subs.set(bgAgentId, set);
|
|
53
|
+
}
|
|
54
|
+
set.add(sub);
|
|
55
|
+
const cleanup = () => {
|
|
56
|
+
if (sub.closed)
|
|
57
|
+
return;
|
|
58
|
+
sub.closed = true;
|
|
59
|
+
sub.wake?.();
|
|
60
|
+
set.delete(sub);
|
|
61
|
+
if (set.size === 0 && this.subs.get(bgAgentId) === set)
|
|
62
|
+
this.subs.delete(bgAgentId);
|
|
63
|
+
};
|
|
64
|
+
const it = {
|
|
65
|
+
[Symbol.asyncIterator]() {
|
|
66
|
+
return it;
|
|
67
|
+
},
|
|
68
|
+
next: async () => {
|
|
69
|
+
for (;;) {
|
|
70
|
+
if (sub.dropped > 0) {
|
|
71
|
+
const dropped = sub.dropped;
|
|
72
|
+
sub.dropped = 0;
|
|
73
|
+
return { value: { type: "lagged", dropped }, done: false };
|
|
74
|
+
}
|
|
75
|
+
const head = sub.queue.shift();
|
|
76
|
+
if (head !== undefined)
|
|
77
|
+
return { value: head, done: false };
|
|
78
|
+
if (sub.closed)
|
|
79
|
+
return { value: undefined, done: true };
|
|
80
|
+
await new Promise((resolve) => {
|
|
81
|
+
sub.wake = resolve;
|
|
82
|
+
});
|
|
83
|
+
sub.wake = undefined;
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
return: async () => {
|
|
87
|
+
cleanup();
|
|
88
|
+
return { value: undefined, done: true };
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
return it;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export const defaultSubagentTailBus = new SubagentTailBus();
|
|
95
|
+
//# sourceMappingURL=subagent-tail-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-tail-bus.js","sourceRoot":"","sources":["../../src/fleet/subagent-tail-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAA4R,KAAK,aAAa,EAA+G,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAmB,KAAK,aAAa,EAAsB,KAAK,cAAc,EAAwB,KAAK,gBAAgB,EAAwK,KAAK,WAAW,EAAE,KAAK,eAAe,EAAsB,MAAM,kBAAkB,CAAC;AACv0B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAkB,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAiJ,KAAK,sBAAsB,EAAwB,MAAM,gBAAgB,CAAC;AAGlO,OAAO,KAAK,EAAyB,SAAS,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGrG,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGrO,OAAO,EAA0B,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAS5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAiB,KAAK,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACrG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAgI,KAAK,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAC3N,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAqC,KAAK,aAAa,EAAqF,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
|
package/dist/http/server.js
CHANGED
|
@@ -21,6 +21,7 @@ import { looksLikeJwt } from "../auth-bridge.js";
|
|
|
21
21
|
import { redactSteerIn } from "../orchestration/workflow-agent-steer.js";
|
|
22
22
|
import { emitPendingWorkflowCompletions, taskNotificationInboxEntry, taskNotificationFoldKey, taskNotificationStreamKey, NotifiedKeys } from "../orchestration/workflow-completion-inbox.js";
|
|
23
23
|
import { fleetRunPublisher, fleetRunLabels } from "../fleet/fleet-bus.js";
|
|
24
|
+
import { defaultSubagentTailBus, projectTailFrame } from "../fleet/subagent-tail-bus.js";
|
|
24
25
|
import { RateLimiter } from "../observability/rate-limit.js";
|
|
25
26
|
import { withPrincipal } from "../observability/principal-context.js";
|
|
26
27
|
import { projectEvents, runSummary, mapTraceEvent, toolStartEventData, toolEndEventData, taskProgressEventData, taskNotificationEventData, compactedEventData, diagnosticsEventData, brainStatusEventData, appendModelUsageDelta, appendPromptManifest, attachModelUsage } from "../trace/project.js";
|
|
@@ -168,6 +169,7 @@ const WORKFLOW_AGENT_STEER_RE = /^\/v1\/workflows\/([^/]+)\/agents\/([^/]+)\/ste
|
|
|
168
169
|
const RUN_SUBAGENT_STEER_RE = /^\/v1\/runs\/([^/]+)\/subagents\/([^/]+)\/steer$/;
|
|
169
170
|
const RUN_SUBAGENT_RESUME_RE = /^\/v1\/runs\/([^/]+)\/subagents\/([^/]+)\/resume$/;
|
|
170
171
|
const RUN_SUBAGENT_OUTPUT_RE = /^\/v1\/runs\/([^/]+)\/subagents\/([^/]+)\/output$/;
|
|
172
|
+
const RUN_SUBAGENT_STREAM_RE = /^\/v1\/runs\/([^/]+)\/subagents\/([^/]+)\/stream$/;
|
|
171
173
|
const RUN_TASK_OUTPUT_RE = /^\/v1\/runs\/([^/]+)\/tasks\/([^/]+)\/output$/;
|
|
172
174
|
const RUN_TASK_STOP_RE = /^\/v1\/runs\/([^/]+)\/tasks\/([^/]+)\/stop$/;
|
|
173
175
|
const HAND_TOOL_NAMES = Object.keys(HAND_TOOL_EFFECTS);
|
|
@@ -677,6 +679,7 @@ export function createHttpServer(deps) {
|
|
|
677
679
|
appendSystemPrompt: true,
|
|
678
680
|
compactionModel: true,
|
|
679
681
|
subagentOutput: Boolean(deps.subagentTaskOutput) && Boolean(deps.runStore),
|
|
682
|
+
subagentStream: Boolean(deps.subagentTaskOutput) && Boolean(deps.runStore),
|
|
680
683
|
taskHandles: Boolean(deps.taskHandleOutput) && Boolean(deps.taskHandleStop) && Boolean(deps.runStore),
|
|
681
684
|
taskAgents: deps.config.requirePrincipal !== true,
|
|
682
685
|
retainBackgroundProcesses: deps.config.requirePrincipal !== true,
|
|
@@ -982,6 +985,14 @@ export function createHttpServer(deps) {
|
|
|
982
985
|
onForwardEvent: (e) => {
|
|
983
986
|
fleetPub?.onForwardEvent(e);
|
|
984
987
|
ledgerSink?.onForwardEvent(e);
|
|
988
|
+
{
|
|
989
|
+
const bg = e.bgAgentId;
|
|
990
|
+
if (bg !== undefined && defaultSubagentTailBus.hasSubscribers(bg)) {
|
|
991
|
+
const f = projectTailFrame(e);
|
|
992
|
+
if (f)
|
|
993
|
+
defaultSubagentTailBus.publish(bg, f);
|
|
994
|
+
}
|
|
995
|
+
}
|
|
985
996
|
if (res.writableEnded)
|
|
986
997
|
return;
|
|
987
998
|
const t = e.type;
|
|
@@ -1008,6 +1019,9 @@ export function createHttpServer(deps) {
|
|
|
1008
1019
|
onTaskNotification: (n) => {
|
|
1009
1020
|
if (n.task_type === "workflow")
|
|
1010
1021
|
return;
|
|
1022
|
+
if (defaultSubagentTailBus.hasSubscribers(n.task_id)) {
|
|
1023
|
+
defaultSubagentTailBus.publish(n.task_id, { type: "task_settled", taskId: n.task_id, status: n.status, ...(n.summary ? { summary: redactSecrets(n.summary) } : {}) });
|
|
1024
|
+
}
|
|
1011
1025
|
const hadRow = fleetPub?.onChildTerminal(n.sessionId ?? n.task_id, n.status, n.task_id, n.toolUseId) ?? false;
|
|
1012
1026
|
const deliverable = syncLegLive && !res.writableEnded && !res.destroyed;
|
|
1013
1027
|
const parked = !deliverable && Boolean(deps.workflowCompletionInbox && prepared.spec.sessionId);
|
|
@@ -1975,6 +1989,76 @@ export function createHttpServer(deps) {
|
|
|
1975
1989
|
sendJson(res, 200, { taskId: runId, target, content: out.content, output: out.details });
|
|
1976
1990
|
return;
|
|
1977
1991
|
}
|
|
1992
|
+
const subStreamMatch = req.method === "GET" ? RUN_SUBAGENT_STREAM_RE.exec(url) : null;
|
|
1993
|
+
if (subStreamMatch) {
|
|
1994
|
+
if (!deps.runStore || !deps.subagentTaskOutput) {
|
|
1995
|
+
sendJson(res, 501, { error: "subagent streams require the run store" });
|
|
1996
|
+
return;
|
|
1997
|
+
}
|
|
1998
|
+
const principal = gatedPrincipal(req, deps.config);
|
|
1999
|
+
if (deps.config.requirePrincipal && principal === undefined) {
|
|
2000
|
+
sendJson(res, 401, { error: `missing principal header '${deps.config.principalHeader}'` });
|
|
2001
|
+
return;
|
|
2002
|
+
}
|
|
2003
|
+
const runId = safeDecode(subStreamMatch[1]);
|
|
2004
|
+
const target = safeDecode(subStreamMatch[2]);
|
|
2005
|
+
if (runId === null || target === null) {
|
|
2006
|
+
sendJson(res, 400, { error: "malformed subagent path (invalid percent-encoding)" });
|
|
2007
|
+
return;
|
|
2008
|
+
}
|
|
2009
|
+
const trusted = explicitOperatorOk(principal, deps.config.operatorPrincipals);
|
|
2010
|
+
const run = await deps.runStore.getRun(runId);
|
|
2011
|
+
if (!run || (!trusted && run.owner !== null && run.owner !== principal)) {
|
|
2012
|
+
sendJson(res, 404, { error: "run not found" });
|
|
2013
|
+
return;
|
|
2014
|
+
}
|
|
2015
|
+
const callerSession = new URL(req.url ?? "", "http://x").searchParams.get("session");
|
|
2016
|
+
if (!trusted && run.sessionId && callerSession !== run.sessionId) {
|
|
2017
|
+
sendJson(res, 404, { error: "run not found" });
|
|
2018
|
+
return;
|
|
2019
|
+
}
|
|
2020
|
+
const probe = await deps.subagentTaskOutput(target, { owner: runId, scope: run.owner ?? "default", ...(run.sessionId ? { sessionId: run.sessionId } : {}) });
|
|
2021
|
+
const probeDetails = probe.details;
|
|
2022
|
+
if (probeDetails?.error === "not_found" || probeDetails?.type !== "background_agent") {
|
|
2023
|
+
sendJson(res, 404, { error: `no background agent "${target}" under this run (unknown handle, not this run's child, or already reaped — bg children live in the replica-local registry for the parent's lifetime; wa… workflow-agent rows are read via the workflow journal, not this verb)` });
|
|
2024
|
+
return;
|
|
2025
|
+
}
|
|
2026
|
+
sseHeaders(res);
|
|
2027
|
+
res.write(`event: meta\ndata: ${JSON.stringify({ version: 1, runId, target, status: probeDetails.status ?? "running", live: "replica-local", replayFace: "GET /v1/runs/:id/subagents/:handle/output" })}\n\n`);
|
|
2028
|
+
if (probeDetails.status !== "running" && probeDetails.status !== "pending") {
|
|
2029
|
+
res.end();
|
|
2030
|
+
return;
|
|
2031
|
+
}
|
|
2032
|
+
const it = defaultSubagentTailBus.subscribe(target);
|
|
2033
|
+
let closed = false;
|
|
2034
|
+
const hb = setInterval(() => {
|
|
2035
|
+
if (!res.writableEnded)
|
|
2036
|
+
res.write(`event: heartbeat\ndata: {}\n\n`);
|
|
2037
|
+
}, 15_000);
|
|
2038
|
+
if (typeof hb.unref === "function")
|
|
2039
|
+
hb.unref();
|
|
2040
|
+
req.on("close", () => {
|
|
2041
|
+
closed = true;
|
|
2042
|
+
void it.return?.();
|
|
2043
|
+
});
|
|
2044
|
+
try {
|
|
2045
|
+
for (;;) {
|
|
2046
|
+
const n = await it.next();
|
|
2047
|
+
if (n.done || closed || res.writableEnded)
|
|
2048
|
+
break;
|
|
2049
|
+
res.write(`event: forward\ndata: ${JSON.stringify(n.value)}\n\n`);
|
|
2050
|
+
if (n.value.type === "task_settled")
|
|
2051
|
+
break;
|
|
2052
|
+
}
|
|
2053
|
+
}
|
|
2054
|
+
finally {
|
|
2055
|
+
clearInterval(hb);
|
|
2056
|
+
void it.return?.();
|
|
2057
|
+
if (!res.writableEnded)
|
|
2058
|
+
res.end();
|
|
2059
|
+
}
|
|
2060
|
+
return;
|
|
2061
|
+
}
|
|
1978
2062
|
const taskVerbMatch = req.method === "GET" ? RUN_TASK_OUTPUT_RE.exec(url) : req.method === "POST" ? RUN_TASK_STOP_RE.exec(url) : null;
|
|
1979
2063
|
if (taskVerbMatch) {
|
|
1980
2064
|
const stopVerb = req.method === "POST";
|
|
@@ -4875,6 +4959,14 @@ export function createHttpServer(deps) {
|
|
|
4875
4959
|
const stream = await deps.runner.resumeStream(token, outcome, { ...taskConfig, signal: cancelCtrl.signal, preemptSignal: preemptCtrl.signal }, {
|
|
4876
4960
|
onForwardEvent: (e) => {
|
|
4877
4961
|
fleetPub?.onForwardEvent(e);
|
|
4962
|
+
{
|
|
4963
|
+
const bg = e.bgAgentId;
|
|
4964
|
+
if (bg !== undefined && defaultSubagentTailBus.hasSubscribers(bg)) {
|
|
4965
|
+
const f = projectTailFrame(e);
|
|
4966
|
+
if (f)
|
|
4967
|
+
defaultSubagentTailBus.publish(bg, f);
|
|
4968
|
+
}
|
|
4969
|
+
}
|
|
4878
4970
|
if (!rs || !taskId)
|
|
4879
4971
|
return;
|
|
4880
4972
|
const t = e.type;
|
|
@@ -4891,6 +4983,9 @@ export function createHttpServer(deps) {
|
|
|
4891
4983
|
onTaskNotification: (n) => {
|
|
4892
4984
|
if (n.task_type === "workflow")
|
|
4893
4985
|
return;
|
|
4986
|
+
if (defaultSubagentTailBus.hasSubscribers(n.task_id)) {
|
|
4987
|
+
defaultSubagentTailBus.publish(n.task_id, { type: "task_settled", taskId: n.task_id, status: n.status, ...(n.summary ? { summary: redactSecrets(n.summary) } : {}) });
|
|
4988
|
+
}
|
|
4894
4989
|
const hadRow = fleetPub?.onChildTerminal(n.sessionId ?? n.task_id, n.status, n.task_id, n.toolUseId) ?? false;
|
|
4895
4990
|
const parked = !resumeLegLive && Boolean(deps.workflowCompletionInbox && sessionId);
|
|
4896
4991
|
deps.logger?.info?.("task_notification_observed", { route: "resume", taskId: n.task_id, taskType: n.task_type, status: n.status, hadFleetRow: hadRow, legLive: resumeLegLive, parkedDurable: parked });
|