From 599d451bd1cc44c07c0bde694d08f2fa0d5e289a Mon Sep 17 00:00:00 2001 From: Chris Estreich Date: Tue, 25 Mar 2025 17:29:06 -0700 Subject: [PATCH] Fix task completion events (#1981) * Fix task completion events * Create polite-singers-greet.md --------- Co-authored-by: Matt Rubens --- .changeset/polite-singers-greet.md | 5 +++++ package-lock.json | 1 + src/core/Cline.ts | 13 ++++++++----- src/exports/api.ts | 8 +++----- 4 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 .changeset/polite-singers-greet.md diff --git a/.changeset/polite-singers-greet.md b/.changeset/polite-singers-greet.md new file mode 100644 index 0000000000..f3d004be42 --- /dev/null +++ b/.changeset/polite-singers-greet.md @@ -0,0 +1,5 @@ +--- +"roo-cline": patch +--- + +Fix task completion events diff --git a/package-lock.json b/package-lock.json index 6c74512283..ae4914cc1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13024,6 +13024,7 @@ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", diff --git a/src/core/Cline.ts b/src/core/Cline.ts index 7bb4f4628b..b70f840369 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -3202,6 +3202,9 @@ export class Cline extends EventEmitter { false, ) + telemetryService.captureTaskCompleted(this.taskId) + this.emit("taskCompleted", this.taskId, this.getTokenUsage()) + await this.ask( "command", removeClosingTag("command", command), @@ -3233,9 +3236,10 @@ export class Cline extends EventEmitter { if (command) { if (lastMessage && lastMessage.ask !== "command") { - // Haven't sent a command message yet so - // first send completion_result then command. + // Haven't sent a command message yet so first send completion_result then command. await this.say("completion_result", result, undefined, false) + telemetryService.captureTaskCompleted(this.taskId) + this.emit("taskCompleted", this.taskId, this.getTokenUsage()) } // Complete command message. @@ -3257,11 +3261,10 @@ export class Cline extends EventEmitter { commandResult = execCommandResult } else { await this.say("completion_result", result, undefined, false) + telemetryService.captureTaskCompleted(this.taskId) + this.emit("taskCompleted", this.taskId, this.getTokenUsage()) } - telemetryService.captureTaskCompleted(this.taskId) - this.emit("taskCompleted", this.taskId, this.getTokenUsage()) - if (this.parentTask) { const didApprove = await askFinishSubTaskApproval() diff --git a/src/exports/api.ts b/src/exports/api.ts index 1cfc2dffcc..0a0505fc75 100644 --- a/src/exports/api.ts +++ b/src/exports/api.ts @@ -27,15 +27,13 @@ export class API extends EventEmitter implements RooCodeAPI { cline.on("taskUnpaused", () => this.emit("taskUnpaused", cline.taskId)) cline.on("taskAskResponded", () => this.emit("taskAskResponded", cline.taskId)) cline.on("taskAborted", () => this.emit("taskAborted", cline.taskId)) - cline.on("taskSpawned", (taskId) => this.emit("taskSpawned", cline.taskId, taskId)) + cline.on("taskSpawned", (childTaskId) => this.emit("taskSpawned", cline.taskId, childTaskId)) + cline.on("taskCompleted", (_, usage) => this.emit("taskCompleted", cline.taskId, usage)) + cline.on("taskTokenUsageUpdated", (_, usage) => this.emit("taskTokenUsageUpdated", cline.taskId, usage)) this.emit("taskCreated", cline.taskId) }) this.on("message", ({ taskId, action, message }) => { - // if (message.type === "say") { - // console.log("message", { taskId, action, message }) - // } - if (action === "created") { this.history.add(taskId, message) } else if (action === "updated") {