@chorus-aidlc/chorus-openclaw-plugin 0.1.6 → 0.1.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus-openclaw-plugin",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "OpenClaw plugin for Chorus AI-DLC collaboration platform — SSE real-time events + MCP tool integration",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -120,6 +120,12 @@ export class ChorusEventRouter {
120
120
  case "idea_claimed":
121
121
  this.handleIdeaClaimed(notification);
122
122
  break;
123
+ case "task_verified":
124
+ this.handleTaskVerified(notification);
125
+ break;
126
+ case "task_reopened":
127
+ this.handleTaskReopened(notification);
128
+ break;
123
129
  default:
124
130
  this.logger.info(`Unhandled notification action: "${notification.action}"`);
125
131
  break;
@@ -165,8 +171,12 @@ export class ChorusEventRouter {
165
171
  }
166
172
 
167
173
  private handleMentioned(n: NotificationDetail): void {
174
+ const mentionGuidance = this.buildMentionGuidance(n, n.entityType);
175
+
168
176
  this.triggerAgent(
169
- `[Chorus] You were @mentioned in ${n.entityType} '${n.entityTitle}' (projectUuid: ${n.projectUuid}): ${n.message}`,
177
+ `[Chorus] You were @mentioned in ${n.entityType} '${n.entityTitle}' (entityType: ${n.entityType}, entityUuid: ${n.entityUuid}, projectUuid: ${n.projectUuid}): ${n.message}\n` +
178
+ `Review the ${n.entityType} content and use chorus_get_comments (targetType: "${n.entityType}", targetUuid: "${n.entityUuid}") to see the full conversation, then respond.\n` +
179
+ mentionGuidance,
170
180
  { notificationUuid: n.uuid, action: "mentioned", entityUuid: n.entityUuid, projectUuid: n.projectUuid }
171
181
  );
172
182
  }
@@ -195,7 +205,7 @@ export class ChorusEventRouter {
195
205
 
196
206
  const reviewInfo = n.message.includes("Note: ") ? ` Review note: "${n.message.split("Note: ").pop()}"` : "";
197
207
  this.triggerAgent(
198
- `[Chorus] Proposal '${n.entityTitle}' was APPROVED (projectUuid: ${n.projectUuid})!${reviewInfo} Documents and tasks have been created. ` +
208
+ `[Chorus] Proposal '${n.entityTitle}' was APPROVED (proposalUuid: ${n.entityUuid}, projectUuid: ${n.projectUuid})!${reviewInfo} Documents and tasks have been created. ` +
199
209
  `Use chorus_get_available_tasks with projectUuid: "${n.projectUuid}" to see the new tasks ready for work.\n` +
200
210
  mentionGuidance,
201
211
  { notificationUuid: n.uuid, action: "proposal_approved", entityUuid: n.entityUuid, projectUuid: n.projectUuid }
@@ -213,6 +223,24 @@ export class ChorusEventRouter {
213
223
  );
214
224
  }
215
225
 
226
+ private handleTaskVerified(n: NotificationDetail): void {
227
+ this.triggerAgent(
228
+ `[Chorus] Task '${n.entityTitle}' has been verified and is now done (taskUuid: ${n.entityUuid}, projectUuid: ${n.projectUuid}). ` +
229
+ `Check if this unblocks other tasks: use chorus_get_unblocked_tasks with projectUuid "${n.projectUuid}" to find tasks that are now ready to start.`,
230
+ { notificationUuid: n.uuid, action: "task_verified", entityUuid: n.entityUuid, projectUuid: n.projectUuid }
231
+ );
232
+ }
233
+
234
+ private handleTaskReopened(n: NotificationDetail): void {
235
+ const mentionGuidance = this.buildMentionGuidance(n, "task");
236
+
237
+ this.triggerAgent(
238
+ `[Chorus] Task '${n.entityTitle}' has been reopened and needs rework (taskUuid: ${n.entityUuid}, projectUuid: ${n.projectUuid}). ` +
239
+ `Use chorus_get_task to review the task and chorus_get_comments to see verification feedback, then fix the issues.\n${mentionGuidance}`,
240
+ { notificationUuid: n.uuid, action: "task_reopened", entityUuid: n.entityUuid, projectUuid: n.projectUuid }
241
+ );
242
+ }
243
+
216
244
  private handleElaborationAnswered(n: NotificationDetail): void {
217
245
  const mentionGuidance = this.buildMentionGuidance(n, "idea");
218
246
 
@@ -260,7 +260,7 @@ export function registerCommonTools(api: any, mcpClient: ChorusMcpClient) {
260
260
 
261
261
  api.registerTool({
262
262
  name: "chorus_get_unblocked_tasks",
263
- description: "Get tasks that are ready to start — status is open/assigned and all dependencies are resolved (done/to_verify).",
263
+ description: "Get tasks that are ready to start — status is open/assigned and all dependencies are resolved (done/closed). Note: to_verify is NOT considered resolved.",
264
264
  parameters: {
265
265
  type: "object",
266
266
  properties: {
@@ -21,7 +21,7 @@ export function registerDevTools(api: any, mcpClient: ChorusMcpClient) {
21
21
 
22
22
  api.registerTool({
23
23
  name: "chorus_update_task",
24
- description: "Update task status (only the assignee can operate)",
24
+ description: "Update task status (only the assignee can operate). Moving to in_progress requires all dependsOn tasks to be done or closed — otherwise the request is rejected with blocker details. Use chorus_get_unblocked_tasks to find tasks ready to start.",
25
25
  parameters: {
26
26
  type: "object",
27
27
  properties: {