letagents 0.12.26 → 0.12.27
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.
|
@@ -7,7 +7,7 @@ import { registerOnboardingTools } from "./tools/onboarding.js";
|
|
|
7
7
|
import { registerRentalTools } from "./tools/rental.js";
|
|
8
8
|
import { registerRepoInitializationTool, registerRepoVisibilityTool, registerRoomInspectionTools, registerRoomJoinTools, registerRoomResumeTool, } from "./tools/rooms.js";
|
|
9
9
|
import { registerTaskTools } from "./tools/tasks.js";
|
|
10
|
-
import { registerSupervisedRoomTurnTools } from "./tools/supervised-room-turn.js";
|
|
10
|
+
import { registerReplyThreadTool, registerSupervisedRoomTurnTools } from "./tools/supervised-room-turn.js";
|
|
11
11
|
import { toolSurfaceForExecutionProfile } from "./runtime/tool-surface-policy.js";
|
|
12
12
|
import { profileAwareToolServer } from "./supervised-tool-facade.js";
|
|
13
13
|
import { workerAwareToolServer } from "./worker-tool-facade.js";
|
|
@@ -46,6 +46,8 @@ export function registerTools(server, profile = "autonomous_mcp_worker", supervi
|
|
|
46
46
|
registerTaskTools(tools);
|
|
47
47
|
registerRepoInitializationTool(tools);
|
|
48
48
|
registerMessageTools(tools, { includeDeliveryLoop: surface.deliveryLoop });
|
|
49
|
+
if (profile === "supervised_room_turn")
|
|
50
|
+
registerReplyThreadTool(tools);
|
|
49
51
|
if (profile === "supervised_room_turn" && supervisedProvider === "cursor")
|
|
50
52
|
registerSupervisedRoomTurnTools(tools);
|
|
51
53
|
if (surface.onboarding)
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
const MAX_ROOM_REPLY_BYTES = 32 * 1024;
|
|
3
|
+
/** Select routing only; the daemon remains the sole final-answer publisher. */
|
|
4
|
+
export function registerReplyThreadTool(server) {
|
|
5
|
+
const tool = server.tool("set_reply_thread", "Place your final answer in the activating room message's thread. Takes no arguments, sends no message, and does not finish the turn. Continue working and use your normal final completion when ready. Unavailable for synthetic task continuations or corrections.", {}, async () => { throw new Error("set_reply_thread requires the active daemon-owned room turn."); });
|
|
6
|
+
// The legacy raw-shape overload strips unknown keys. Preserve a strict schema
|
|
7
|
+
// so a caller cannot mistake ignored room/recipient/text arguments for authority.
|
|
8
|
+
tool.inputSchema = z.object({}).strict();
|
|
9
|
+
}
|
|
3
10
|
function completionResponse(outcome) {
|
|
4
11
|
const payload = {
|
|
5
12
|
accepted: true,
|
package/package.json
CHANGED
|
@@ -16,8 +16,8 @@ export function localSupervisedRoomToolOperation(name) {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export function localSupervisedRoomToolAvailable(name) {
|
|
19
|
-
//
|
|
20
|
-
return name === "complete_room_turn" || localSupervisedRoomToolOperation(name) !== null;
|
|
19
|
+
// Turn controls are handled by the daemon. Local room moves are unsupported.
|
|
20
|
+
return name === "complete_room_turn" || name === "set_reply_thread" || localSupervisedRoomToolOperation(name) !== null;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export function defineLocalSupervisedToolHandlers(handlers) {
|