@sema-agent/core 1.315.0 → 1.317.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/agents/roster-store.d.ts +39 -0
- package/dist/agents/roster-store.d.ts.map +1 -0
- package/dist/agents/roster-store.js +0 -0
- package/dist/agents/roster-store.js.map +1 -0
- package/dist/agents/subagent.d.ts +7 -0
- package/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +82 -5
- package/dist/agents/subagent.js.map +1 -1
- package/dist/core/auto-compaction.d.ts +1 -0
- package/dist/core/auto-compaction.d.ts.map +1 -1
- package/dist/core/auto-compaction.js +1 -1
- package/dist/core/auto-compaction.js.map +1 -1
- package/dist/core/runner/prepare-task.d.ts +6 -0
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +32 -20
- package/dist/core/runner/prepare-task.js.map +1 -1
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +56 -14
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/runner/turn-attachments.d.ts +8 -0
- package/dist/core/runner/turn-attachments.d.ts.map +1 -1
- package/dist/core/runner/turn-attachments.js +60 -2
- package/dist/core/runner/turn-attachments.js.map +1 -1
- package/dist/core/types.d.ts +4 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/prompt-assembly/assemble.d.ts.map +1 -1
- package/dist/prompt-assembly/assemble.js +3 -1
- package/dist/prompt-assembly/assemble.js.map +1 -1
- package/dist/prompt-assembly/composer.d.ts.map +1 -1
- package/dist/prompt-assembly/composer.js +1 -0
- package/dist/prompt-assembly/composer.js.map +1 -1
- package/dist/prompt-assembly/epoch.d.ts +10 -4
- package/dist/prompt-assembly/epoch.d.ts.map +1 -1
- package/dist/prompt-assembly/epoch.js +0 -0
- package/dist/prompt-assembly/epoch.js.map +1 -1
- package/dist/prompt-assembly/packs/sema-default.d.ts.map +1 -1
- package/dist/prompt-assembly/packs/sema-default.js +2 -0
- package/dist/prompt-assembly/packs/sema-default.js.map +1 -1
- package/dist/prompt-assembly/types.d.ts +3 -0
- package/dist/prompt-assembly/types.d.ts.map +1 -1
- package/dist/prompts/coordinator.d.ts +3 -0
- package/dist/prompts/coordinator.d.ts.map +1 -0
- package/dist/prompts/coordinator.js +200 -0
- package/dist/prompts/coordinator.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface RosterEntry {
|
|
2
|
+
name: string;
|
|
3
|
+
agentId: string;
|
|
4
|
+
sessionId?: string;
|
|
5
|
+
toolUseId?: string;
|
|
6
|
+
owner?: string;
|
|
7
|
+
scope?: string;
|
|
8
|
+
sessionScoped?: boolean;
|
|
9
|
+
createdAt: number;
|
|
10
|
+
}
|
|
11
|
+
export interface RosterAccess {
|
|
12
|
+
owner?: string;
|
|
13
|
+
scope?: string;
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RosterStore {
|
|
17
|
+
record(entry: RosterEntry): void | Promise<void>;
|
|
18
|
+
resolve(name: string, access: RosterAccess): RosterEntry | undefined | Promise<RosterEntry | undefined>;
|
|
19
|
+
list(): RosterEntry[] | Promise<RosterEntry[]>;
|
|
20
|
+
releaseAgent(agentId: string): void | Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare class MemoryRosterStore implements RosterStore {
|
|
23
|
+
private entries;
|
|
24
|
+
record(entry: RosterEntry): void;
|
|
25
|
+
resolve(name: string, access: RosterAccess): RosterEntry | undefined;
|
|
26
|
+
list(): RosterEntry[];
|
|
27
|
+
releaseAgent(agentId: string): void;
|
|
28
|
+
}
|
|
29
|
+
export declare class FileRosterStore implements RosterStore {
|
|
30
|
+
private readonly path;
|
|
31
|
+
constructor(path: string);
|
|
32
|
+
private read;
|
|
33
|
+
private write;
|
|
34
|
+
record(entry: RosterEntry): void;
|
|
35
|
+
resolve(name: string, access: RosterAccess): RosterEntry | undefined;
|
|
36
|
+
list(): RosterEntry[];
|
|
37
|
+
releaseAgent(agentId: string): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=roster-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roster-store.d.ts","sourceRoot":"","sources":["../../src/agents/roster-store.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,MAAM,WAAW,WAAW;IAE1B,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAExG,IAAI,IAAI,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAiBD,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,OAAO,CAAqB;IACpC,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAGhC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS;IAGpE,IAAI,IAAI,WAAW,EAAE;IAGrB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGpC;AAcD,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAClB,IAAI,EAAE,MAAM;IAOxB,OAAO,CAAC,IAAI;IAuBZ,OAAO,CAAC,KAAK;IAMb,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAQhC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS;IAGpE,IAAI,IAAI,WAAW,EAAE;IAGrB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGpC"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roster-store.js","sourceRoot":"","sources":["../../src/agents/roster-store.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAsC9D,SAAS,eAAe,CAAC,CAAc,EAAE,MAAoB;IAC3D,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAE1C,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC5G,OAAO,KAAK,CAAC;AACf,CAAC;AA0BD,SAAS,QAAQ,CAAC,IAAmB;IACnC,IAAI,IAA6B,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,GAAG,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,SAAS,SAAS,CAAC,OAAsB,EAAE,IAAY,EAAE,MAAoB;IAC3E,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3G,CAAC;AAGD,MAAM,OAAO,iBAAiB;IACpB,OAAO,GAAkB,EAAE,CAAC;IACpC,MAAM,CAAC,KAAkB;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,IAAY,EAAE,MAAoB;QACxC,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,YAAY,CAAC,OAAe;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACnE,CAAC;CACF;AAUD,SAAS,SAAS,CAAC,CAAc;IAC/B,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,OAAO,eAAe;IACT,IAAI,CAAS;IAC9B,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAKO,IAAI,CAAC,IAA0B;QACrC,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAAuB,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAC1D,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC;QACV,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAGzF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CACvB,CAAC,CAAC,EAAoB,EAAE,CACtB,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAQ,CAAiB,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAQ,CAAiB,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAQ,CAAiB,CAAC,SAAS,KAAK,QAAQ,CAC3L,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACO,KAAK,CAAC,OAAsB;QAClC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9F,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,CAAC,KAAkB;QAGvB,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,IAAY,EAAE,MAAoB;QACxC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IACD,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD,YAAY,CAAC,OAAe;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;CACF"}
|
|
@@ -169,7 +169,14 @@ export interface SendMessageToolOptions {
|
|
|
169
169
|
priority?: "now" | "next" | "later";
|
|
170
170
|
}) => void;
|
|
171
171
|
sink?: (handle: SubagentSteerHandle) => void;
|
|
172
|
+
uplink?: (n: TaskNotificationPayload, opts?: {
|
|
173
|
+
priority?: "now" | "next" | "later";
|
|
174
|
+
}) => void;
|
|
175
|
+
senderName?: string;
|
|
176
|
+
roster?: import("./roster-store.js").RosterStore;
|
|
177
|
+
siblingRetain?: SubagentRetainLedger;
|
|
172
178
|
}
|
|
179
|
+
export declare function recordRosterSpawn(roster: import("./roster-store.js").RosterStore | undefined, entry: import("./roster-store.js").RosterEntry): void;
|
|
173
180
|
export declare function createSendMessageTool(opts: SendMessageToolOptions): import("../core/types.js").AgentTool<Type.TObject<{
|
|
174
181
|
to: Type.TString;
|
|
175
182
|
message: Type.TString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/agents/subagent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/agents/subagent.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/subagent.js
CHANGED
|
@@ -467,7 +467,10 @@ function makeSubagentResume(deps) {
|
|
|
467
467
|
requireExistingSession: true,
|
|
468
468
|
signal: abort.signal,
|
|
469
469
|
};
|
|
470
|
-
stream = childRunner.runTaskStream(resumeSpec, undefined, {
|
|
470
|
+
stream = childRunner.runTaskStream(resumeSpec, undefined, {
|
|
471
|
+
...entry.internalsSnapshot,
|
|
472
|
+
...(deps.currentParentNotify !== undefined ? { parentNotify: deps.currentParentNotify } : {}),
|
|
473
|
+
});
|
|
471
474
|
}
|
|
472
475
|
catch (err) {
|
|
473
476
|
entry.running = false;
|
|
@@ -826,6 +829,12 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
|
|
|
826
829
|
details: { error: "name.reserved" },
|
|
827
830
|
};
|
|
828
831
|
}
|
|
832
|
+
if (ctx.spawnedAgentName !== undefined) {
|
|
833
|
+
return {
|
|
834
|
+
content: "Sub-agent not started: teammates cannot spawn other teammates — the team roster is flat. To spawn a subagent instead, omit the `name` parameter.",
|
|
835
|
+
details: { error: "name.nested_teammate" },
|
|
836
|
+
};
|
|
837
|
+
}
|
|
829
838
|
}
|
|
830
839
|
if (a.cwd !== undefined && typeof a.cwd !== "string") {
|
|
831
840
|
return { content: "Sub-agent not started: cwd must be an absolute path string.", details: { error: "cwd.relative" } };
|
|
@@ -1171,7 +1180,10 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
|
|
|
1171
1180
|
...(childDefaultPersona !== undefined ? { defaultSystemPrompt: childDefaultPersona } : {}),
|
|
1172
1181
|
parentToolCallId: ctx.toolCallId,
|
|
1173
1182
|
...(childAgentName ? { agentName: childAgentName } : {}),
|
|
1183
|
+
...(agentName !== undefined ? { explicitAgentName: agentName } : {}),
|
|
1174
1184
|
...(ctx.taskId !== undefined ? { parentTaskId: ctx.taskId } : {}),
|
|
1185
|
+
...(ctx.onTaskNotification !== undefined ? { parentNotify: ctx.onTaskNotification } : {}),
|
|
1186
|
+
...(ctx.subagentRetain !== undefined ? { parentRetainLedger: ctx.subagentRetain } : {}),
|
|
1175
1187
|
onForwardEvent: recordingForward,
|
|
1176
1188
|
...(worktreeDir !== undefined
|
|
1177
1189
|
? { parentCwd: worktreeDir }
|
|
@@ -1211,6 +1223,7 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
|
|
|
1211
1223
|
runner: opts.runner,
|
|
1212
1224
|
...(entryTtlMs !== undefined ? { ttlMs: entryTtlMs } : {}),
|
|
1213
1225
|
...(childAgentName !== undefined ? { agentName: childAgentName } : {}),
|
|
1226
|
+
...(agentName !== undefined ? { explicitAgentName: agentName } : {}),
|
|
1214
1227
|
specSnapshot: Object.freeze({
|
|
1215
1228
|
...plainSpec,
|
|
1216
1229
|
tools: [...(plainSpec.tools ?? [])],
|
|
@@ -1283,6 +1296,8 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
|
|
|
1283
1296
|
runner: opts.runner,
|
|
1284
1297
|
ttlMs: FAILED_SESSION_RETAIN_TTL_MS,
|
|
1285
1298
|
...(childAgentName !== undefined ? { agentName: childAgentName } : {}),
|
|
1299
|
+
...(agentName !== undefined ? { explicitAgentName: agentName } : {}),
|
|
1300
|
+
...(agentName !== undefined ? { explicitAgentName: agentName } : {}),
|
|
1286
1301
|
specSnapshot: Object.freeze({
|
|
1287
1302
|
...plainSpec,
|
|
1288
1303
|
tools: [...(plainSpec.tools ?? [])],
|
|
@@ -1378,6 +1393,9 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
|
|
|
1378
1393
|
const wt = await finishWorktree();
|
|
1379
1394
|
return { content: `Sub-agent not started in background: ${e instanceof Error ? e.message : String(e)}${wt ? `\n${wt}` : ""}`, details: { error: "register_failed" } };
|
|
1380
1395
|
}
|
|
1396
|
+
if (agentName !== undefined) {
|
|
1397
|
+
recordRosterSpawn(ctx.roster, { name: agentName, agentId: taskId, sessionId: forkedId, toolUseId: ctx.toolCallId, ...(bgOwner !== undefined ? { owner: bgOwner } : {}), ...(bgScope !== undefined ? { scope: bgScope } : {}), ...(sessionScopedBg ? { sessionScoped: true } : {}), createdAt: Date.now() });
|
|
1398
|
+
}
|
|
1381
1399
|
const bgSink = ctx.onBackgroundChildEvent;
|
|
1382
1400
|
const sinkEmit = (event) => {
|
|
1383
1401
|
try {
|
|
@@ -1636,6 +1654,9 @@ task_id: ${taskId}
|
|
|
1636
1654
|
const wt = await finishWorktree();
|
|
1637
1655
|
return { content: `Sub-agent not started in background: ${e instanceof Error ? e.message : String(e)}${wt ? `\n${wt}` : ""}`, details: { error: "register_failed" } };
|
|
1638
1656
|
}
|
|
1657
|
+
if (agentName !== undefined) {
|
|
1658
|
+
recordRosterSpawn(ctx.roster, { name: agentName, agentId: taskId, toolUseId: ctx.toolCallId, ...(bgOwner !== undefined ? { owner: bgOwner } : {}), ...(bgScope !== undefined ? { scope: bgScope } : {}), ...(sessionScopedBg ? { sessionScoped: true } : {}), createdAt: Date.now() });
|
|
1659
|
+
}
|
|
1639
1660
|
const bgSink = ctx.onBackgroundChildEvent;
|
|
1640
1661
|
const sinkEmit = (event) => {
|
|
1641
1662
|
try {
|
|
@@ -1993,6 +2014,17 @@ task_id: ${taskId}
|
|
|
1993
2014
|
};
|
|
1994
2015
|
}
|
|
1995
2016
|
export const SEND_MESSAGE_TOOL_NAME = "SendMessage";
|
|
2017
|
+
export function recordRosterSpawn(roster, entry) {
|
|
2018
|
+
if (!roster)
|
|
2019
|
+
return;
|
|
2020
|
+
try {
|
|
2021
|
+
void Promise.resolve(roster.record(entry)).catch(() => { });
|
|
2022
|
+
}
|
|
2023
|
+
catch {
|
|
2024
|
+
}
|
|
2025
|
+
}
|
|
2026
|
+
let uplinkSeqGlobal = Date.now();
|
|
2027
|
+
const UPLINK_RESULT_MAX = 8000;
|
|
1996
2028
|
export function createSendMessageTool(opts) {
|
|
1997
2029
|
return defineTool({
|
|
1998
2030
|
name: SEND_MESSAGE_TOOL_NAME,
|
|
@@ -2026,8 +2058,29 @@ export function createSendMessageTool(opts) {
|
|
|
2026
2058
|
return { content: OBSERVER_SENDMESSAGE_TARGET_REFUSAL, details: { error: "observer_target", to } };
|
|
2027
2059
|
}
|
|
2028
2060
|
if (normalizeAgentName(to) === "main") {
|
|
2061
|
+
if (opts.uplink && senderId !== undefined) {
|
|
2062
|
+
const uplinkSummaryRaw = typeof a.summary === "string" && a.summary.trim() !== "" ? a.summary.trim().slice(0, 200) : message.slice(0, 80);
|
|
2063
|
+
const fromLabel = opts.senderName !== undefined ? opts.senderName : senderId;
|
|
2064
|
+
try {
|
|
2065
|
+
opts.uplink({
|
|
2066
|
+
task_id: senderId,
|
|
2067
|
+
task_type: "background_agent",
|
|
2068
|
+
status: "event",
|
|
2069
|
+
summary: `message from ${fromLabel}: ${uplinkSummaryRaw}`,
|
|
2070
|
+
result: message.length > UPLINK_RESULT_MAX ? `${message.slice(0, UPLINK_RESULT_MAX)}\n[uplink truncated: ${message.length} chars total — read the agent's transcript for the rest]` : message,
|
|
2071
|
+
seq: ++uplinkSeqGlobal,
|
|
2072
|
+
}, { priority: "next" });
|
|
2073
|
+
}
|
|
2074
|
+
catch (e) {
|
|
2075
|
+
return { content: `Message not sent: the parent's notification lane rejected it (${e instanceof Error ? e.message : String(e)}).`, details: { error: "uplink_failed", to } };
|
|
2076
|
+
}
|
|
2077
|
+
return {
|
|
2078
|
+
content: `Message sent to main — it will reach the spawning conversation at its next turn boundary. Continue with your task; do not wait for a reply.`,
|
|
2079
|
+
details: { type: "send-message", status: "uplinked", to: "main", seq: uplinkSeqGlobal },
|
|
2080
|
+
};
|
|
2081
|
+
}
|
|
2029
2082
|
return {
|
|
2030
|
-
content: `Message not sent: "main" (the spawning conversation) is not
|
|
2083
|
+
content: `Message not sent: "main" (the spawning conversation) is not a deliverable target here. ` +
|
|
2031
2084
|
`Your completion is reported to it automatically — finish your task and your final report will be relayed.`,
|
|
2032
2085
|
details: { error: "main_not_deliverable", to },
|
|
2033
2086
|
};
|
|
@@ -2040,7 +2093,13 @@ export function createSendMessageTool(opts) {
|
|
|
2040
2093
|
const idRow = opts.registry.getAccessibleTask(to, access);
|
|
2041
2094
|
let target = idRow;
|
|
2042
2095
|
if (!target) {
|
|
2043
|
-
|
|
2096
|
+
let byName = opts.registry.resolveBackgroundAgentByName(to, access);
|
|
2097
|
+
if (byName.status === "not_found" && ctx.parentTaskId !== undefined) {
|
|
2098
|
+
const parentView = { ...access, owner: ctx.parentTaskId };
|
|
2099
|
+
const sibling = opts.registry.resolveBackgroundAgentByName(to, parentView);
|
|
2100
|
+
if (sibling.status === "found" || sibling.status === "ambiguous")
|
|
2101
|
+
byName = sibling;
|
|
2102
|
+
}
|
|
2044
2103
|
if (byName.status === "ambiguous") {
|
|
2045
2104
|
return { content: `Message not sent: ${byName.message}`, details: { error: "ambiguous", to } };
|
|
2046
2105
|
}
|
|
@@ -2049,6 +2108,21 @@ export function createSendMessageTool(opts) {
|
|
|
2049
2108
|
target = { task_id: h.id, type: h.type, status: h.status, ...(h.toolUseId !== undefined ? { toolUseId: h.toolUseId } : {}) };
|
|
2050
2109
|
}
|
|
2051
2110
|
else {
|
|
2111
|
+
let rosterHit;
|
|
2112
|
+
if (opts.roster) {
|
|
2113
|
+
try {
|
|
2114
|
+
rosterHit = await opts.roster.resolve(to, access);
|
|
2115
|
+
}
|
|
2116
|
+
catch {
|
|
2117
|
+
}
|
|
2118
|
+
}
|
|
2119
|
+
if (rosterHit !== undefined) {
|
|
2120
|
+
return {
|
|
2121
|
+
content: `Message not sent: "${to}" is on the durable roster (agent ${rosterHit.agentId}) but not reachable in this run — its session belongs to an earlier process. ` +
|
|
2122
|
+
`Launch a new agent with the needed context instead.`,
|
|
2123
|
+
details: { error: "roster_only", to, agentId: rosterHit.agentId, ...(rosterHit.sessionId !== undefined ? { sessionId: rosterHit.sessionId } : {}) },
|
|
2124
|
+
};
|
|
2125
|
+
}
|
|
2052
2126
|
const labels = opts.registry.runningBackgroundAgentLabels(access);
|
|
2053
2127
|
return {
|
|
2054
2128
|
content: `Message not sent: no agent matches "${to}" (unknown id or name, not yours, or expired).` +
|
|
@@ -2081,7 +2155,8 @@ export function createSendMessageTool(opts) {
|
|
|
2081
2155
|
const runLedger = ctx.subagentRetain ?? opts.retain;
|
|
2082
2156
|
const sessionLedger = opts.sessionId !== undefined ? getSessionRetainLedger(opts.sessionId) : undefined;
|
|
2083
2157
|
const knows = (l) => l !== undefined && row.toolUseId !== undefined && (l.get(row.toolUseId) !== undefined || l.wasEvicted(row.toolUseId));
|
|
2084
|
-
const
|
|
2158
|
+
const siblingLedger = opts.siblingRetain;
|
|
2159
|
+
const ledger = (knows(sessionLedger) ? sessionLedger : undefined) ?? (knows(runLedger) ? runLedger : undefined) ?? (knows(siblingLedger) ? siblingLedger : undefined) ?? runLedger ?? sessionLedger ?? siblingLedger;
|
|
2085
2160
|
if (!ledger || row.toolUseId === undefined) {
|
|
2086
2161
|
return {
|
|
2087
2162
|
content: `Message not sent: ${who}'s session was not retained (this run did not enable retainSubagentSessions), so it cannot be continued — relaunch a new agent with the needed context instead.`,
|
|
@@ -2095,10 +2170,12 @@ export function createSendMessageTool(opts) {
|
|
|
2095
2170
|
...(opts.notify ? { notify: opts.notify } : {}),
|
|
2096
2171
|
...(opts.sink ? { sink: opts.sink } : {}),
|
|
2097
2172
|
registry: opts.registry,
|
|
2173
|
+
...(opts.notify ? { currentParentNotify: opts.notify } : {}),
|
|
2098
2174
|
});
|
|
2099
2175
|
const summary = typeof a.summary === "string" && a.summary.trim() !== "" ? a.summary.trim().slice(0, 200) : undefined;
|
|
2176
|
+
const fromPrefix = ctx.parentTaskId !== undefined ? `(message from teammate "${opts.senderName ?? senderId ?? "unknown"}")\n` : "";
|
|
2100
2177
|
try {
|
|
2101
|
-
const marker = await resume(summary ? `[${summary}] ${message}` : message);
|
|
2178
|
+
const marker = await resume(`${fromPrefix}${summary ? `[${summary}] ${message}` : message}`);
|
|
2102
2179
|
return {
|
|
2103
2180
|
content: `Message sent — ${who} resumed in the background with its prior context intact (correlation marker [${marker}]).\n` +
|
|
2104
2181
|
`You will be notified automatically when it completes; its reply will carry [${marker}]. Continue with other work — do not poll.`,
|