@songsid/agend 2.1.4-beta.56 → 2.1.4-beta.57
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/channel/mcp-tools.js +2 -2
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/daemon.d.ts +4 -1
- package/dist/daemon.js +33 -10
- package/dist/daemon.js.map +1 -1
- package/dist/fleet-manager.d.ts +2 -0
- package/dist/fleet-manager.js +4 -0
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +1 -0
- package/dist/outbound-handlers.d.ts +8 -1
- package/dist/outbound-handlers.js +69 -19
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +5 -3
- package/dist/outbound-schemas.js +2 -0
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/steer-capability.d.ts +1 -0
- package/dist/steer-capability.js +6 -0
- package/dist/steer-capability.js.map +1 -0
- package/dist/topic-commands.d.ts +0 -1
- package/dist/topic-commands.js +2 -2
- package/dist/topic-commands.js.map +1 -1
- package/package.json +1 -1
|
@@ -50,11 +50,11 @@ const DEFS = [
|
|
|
50
50
|
["broadcast", schemas.BroadcastArgs,
|
|
51
51
|
"Send a message to multiple instances at once. Priority: team > targets > tags > all running."],
|
|
52
52
|
["send_to_instance", schemas.SendToInstanceArgs,
|
|
53
|
-
"Send a message to another instance. Use for
|
|
53
|
+
"Send a message to another instance. Use steer=true only for a mid-turn supplement to work you just sent."],
|
|
54
54
|
["request_information", schemas.RequestInformationArgs,
|
|
55
55
|
"Ask another instance a question and expect a reply. Wrapper around send_to_instance with request_kind=query and requires_reply=true."],
|
|
56
56
|
["delegate_task", schemas.DelegateTaskArgs,
|
|
57
|
-
"Delegate a task to another instance and expect a result report back. Wrapper around send_to_instance with request_kind=task and requires_reply=true."],
|
|
57
|
+
"Delegate a task to another instance and expect a result report back. Supports steer=true for a mid-turn supplement. Wrapper around send_to_instance with request_kind=task and requires_reply=true."],
|
|
58
58
|
["report_result", schemas.ReportResultArgs,
|
|
59
59
|
"Report results back to an instance that delegated a task or asked a question. Wrapper around send_to_instance with request_kind=report."],
|
|
60
60
|
["create_team", schemas.CreateTeamArgs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/channel/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAWlD,4DAA4D;AAC5D,SAAS,iBAAiB,CAAC,MAAe;IACxC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAA4B,CAAC;IAC9D,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAChD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,IAAwB,CAAC;AAClC,CAAC;AAQD;;;GAGG;AACH,MAAM,IAAI,GAAqC;IAC7C,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS;QACzB,4FAA4F,CAAC;IAC/F,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS;QACzB,6CAA6C,CAAC;IAChD,CAAC,cAAc,EAAE,OAAO,CAAC,eAAe;QACtC,8EAA8E,CAAC;IACjF,CAAC,qBAAqB,EAAE,OAAO,CAAC,sBAAsB;QACpD,+FAA+F,CAAC;IAClG,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,uJAAuJ,CAAC;IAC1J,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,+HAA+H,CAAC;IAClI,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB;QAC1C,2DAA2D,CAAC;IAC9D,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,sEAAsE,CAAC;IACzE,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,0BAA0B,CAAC;IAC7B,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa;QAC5B,iKAAiK,CAAC;IACpK,CAAC,eAAe,EAAE,OAAO,CAAC,gBAAgB;QACxC,yOAAyO,CAAC;IAC5O,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB;QAC1C,8HAA8H,CAAC;IACjI,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,yCAAyC,CAAC;IAC5C,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa;QACjC,8FAA8F,CAAC;IACjG,CAAC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC7C,
|
|
1
|
+
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/channel/mcp-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon.d.ts
CHANGED
|
@@ -843,11 +843,14 @@ export declare class Daemon extends EventEmitter {
|
|
|
843
843
|
* agent, or the two drift apart in what the agent is told about replying.
|
|
844
844
|
*/
|
|
845
845
|
private formatInboundMessage;
|
|
846
|
+
/** Tell the fleet when an already-accepted cross-instance pane write failed. */
|
|
847
|
+
private reportCrossInstanceDeliveryFailure;
|
|
846
848
|
/**
|
|
847
849
|
* /steer: interject into the CURRENT turn instead of queueing for idle.
|
|
848
850
|
*
|
|
849
851
|
* Differences from pushChannelMessage, and nothing else:
|
|
850
|
-
* - serialized on steerLock, not pasteLock — it
|
|
852
|
+
* - serialized on steerLock, not pasteLock — it may overtake current work,
|
|
853
|
+
* but never an ordinary delivery already queued ahead of it
|
|
851
854
|
* - deliverMessage runs with { steer: true }, which takes the busy branch
|
|
852
855
|
* that pastes immediately (the codex native-queue transaction) instead of
|
|
853
856
|
* waiting for idle. Verification and silent-loss fallback are the ones
|
package/dist/daemon.js
CHANGED
|
@@ -3340,11 +3340,24 @@ export class Daemon extends EventEmitter {
|
|
|
3340
3340
|
}
|
|
3341
3341
|
return formatted;
|
|
3342
3342
|
}
|
|
3343
|
+
/** Tell the fleet when an already-accepted cross-instance pane write failed. */
|
|
3344
|
+
reportCrossInstanceDeliveryFailure(meta, error) {
|
|
3345
|
+
if (!meta.from_instance)
|
|
3346
|
+
return;
|
|
3347
|
+
this.ipcServer?.broadcast({
|
|
3348
|
+
type: "cross_instance_delivery_failed",
|
|
3349
|
+
senderSession: meta.from_instance,
|
|
3350
|
+
targetInstance: this.name,
|
|
3351
|
+
correlationId: meta.correlation_id ?? "unknown",
|
|
3352
|
+
error: error ?? this.tmux?.getLastPasteError?.() ?? "target pane rejected the delivery",
|
|
3353
|
+
});
|
|
3354
|
+
}
|
|
3343
3355
|
/**
|
|
3344
3356
|
* /steer: interject into the CURRENT turn instead of queueing for idle.
|
|
3345
3357
|
*
|
|
3346
3358
|
* Differences from pushChannelMessage, and nothing else:
|
|
3347
|
-
* - serialized on steerLock, not pasteLock — it
|
|
3359
|
+
* - serialized on steerLock, not pasteLock — it may overtake current work,
|
|
3360
|
+
* but never an ordinary delivery already queued ahead of it
|
|
3348
3361
|
* - deliverMessage runs with { steer: true }, which takes the busy branch
|
|
3349
3362
|
* that pastes immediately (the codex native-queue transaction) instead of
|
|
3350
3363
|
* waiting for idle. Verification and silent-loss fallback are the ones
|
|
@@ -3358,10 +3371,18 @@ export class Daemon extends EventEmitter {
|
|
|
3358
3371
|
steerMessage(content, meta, deliveryEpoch = this.deliveryEpoch) {
|
|
3359
3372
|
if (!this.isDeliveryEpochCurrent(deliveryEpoch))
|
|
3360
3373
|
return;
|
|
3374
|
+
// The fleet facade prevents a steer from overtaking an item still in its
|
|
3375
|
+
// idle queue. Close the second race window here: an earlier item may already
|
|
3376
|
+
// have reached this daemon's paste queue by the time the steer IPC arrives.
|
|
3377
|
+
if (this.pasteQueueDepth > 0) {
|
|
3378
|
+
this.logger.info("Steer queued behind an earlier pane delivery to preserve message order");
|
|
3379
|
+
this.pushChannelMessage(content, meta, undefined, deliveryEpoch);
|
|
3380
|
+
return;
|
|
3381
|
+
}
|
|
3361
3382
|
this.updateLastChat(meta.chat_id, meta.thread_id, meta.adapter_id);
|
|
3362
3383
|
this.pendingWork.recordInbound();
|
|
3363
3384
|
this.recordRecentUserMessage(content, meta);
|
|
3364
|
-
const formatted = "[STEERING — mid-task course correction
|
|
3385
|
+
const formatted = "[STEERING — mid-task course correction. Fold this into the CURRENT work if one is active.]\n"
|
|
3365
3386
|
+ this.formatInboundMessage(content, meta);
|
|
3366
3387
|
const chatId = meta.chat_id;
|
|
3367
3388
|
const messageId = meta.message_id;
|
|
@@ -3377,8 +3398,14 @@ export class Daemon extends EventEmitter {
|
|
|
3377
3398
|
if (await this.deliverMessage(formatted, status, { steer: true, deliveryEpoch })) {
|
|
3378
3399
|
this.markTurnStarted(meta, formatted);
|
|
3379
3400
|
}
|
|
3401
|
+
else if (this.isDeliveryEpochCurrent(deliveryEpoch)) {
|
|
3402
|
+
this.reportCrossInstanceDeliveryFailure(meta);
|
|
3403
|
+
}
|
|
3380
3404
|
}).catch(err => {
|
|
3381
3405
|
this.logger.warn({ err: err.message }, "steer delivery error");
|
|
3406
|
+
if (this.isDeliveryEpochCurrent(deliveryEpoch)) {
|
|
3407
|
+
this.reportCrossInstanceDeliveryFailure(meta, err.message);
|
|
3408
|
+
}
|
|
3382
3409
|
});
|
|
3383
3410
|
}
|
|
3384
3411
|
/**
|
|
@@ -3506,14 +3533,7 @@ export class Daemon extends EventEmitter {
|
|
|
3506
3533
|
this.markTurnStarted(meta, formatted);
|
|
3507
3534
|
}
|
|
3508
3535
|
else if (meta.from_instance && this.isDeliveryEpochCurrent(deliveryEpoch)) {
|
|
3509
|
-
|
|
3510
|
-
this.ipcServer?.broadcast({
|
|
3511
|
-
type: "cross_instance_delivery_failed",
|
|
3512
|
-
senderSession: meta.from_instance,
|
|
3513
|
-
targetInstance: this.name,
|
|
3514
|
-
correlationId: meta.correlation_id ?? "unknown",
|
|
3515
|
-
error,
|
|
3516
|
-
});
|
|
3536
|
+
this.reportCrossInstanceDeliveryFailure(meta);
|
|
3517
3537
|
}
|
|
3518
3538
|
}
|
|
3519
3539
|
finally {
|
|
@@ -3521,6 +3541,9 @@ export class Daemon extends EventEmitter {
|
|
|
3521
3541
|
}
|
|
3522
3542
|
}).catch(err => {
|
|
3523
3543
|
this.logger.warn({ err: err.message }, "pasteLock delivery error — chain continues");
|
|
3544
|
+
if (this.isDeliveryEpochCurrent(deliveryEpoch)) {
|
|
3545
|
+
this.reportCrossInstanceDeliveryFailure(meta, err.message);
|
|
3546
|
+
}
|
|
3524
3547
|
});
|
|
3525
3548
|
this.logger.debug({ user: meta.user, text: content.slice(0, 100) }, "Queued channel message for delivery");
|
|
3526
3549
|
}
|