@animalabs/agent-framework 0.33.0 → 0.34.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.
Files changed (176) hide show
  1. package/README.md +136 -8
  2. package/dist/src/agent.d.ts +25 -4
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +68 -13
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/append-all.d.ts +5 -0
  7. package/dist/src/append-all.d.ts.map +1 -0
  8. package/dist/src/append-all.js +8 -0
  9. package/dist/src/append-all.js.map +1 -0
  10. package/dist/src/context-options.d.ts +9 -6
  11. package/dist/src/context-options.d.ts.map +1 -1
  12. package/dist/src/context-options.js +13 -8
  13. package/dist/src/context-options.js.map +1 -1
  14. package/dist/src/cut-off-round.js +4 -4
  15. package/dist/src/dendrite/registry.d.ts.map +1 -1
  16. package/dist/src/dendrite/registry.js +4 -2
  17. package/dist/src/dendrite/registry.js.map +1 -1
  18. package/dist/src/failure-text.d.ts +36 -0
  19. package/dist/src/failure-text.d.ts.map +1 -0
  20. package/dist/src/failure-text.js +89 -0
  21. package/dist/src/failure-text.js.map +1 -0
  22. package/dist/src/framework.d.ts +94 -30
  23. package/dist/src/framework.d.ts.map +1 -1
  24. package/dist/src/framework.js +987 -284
  25. package/dist/src/framework.js.map +1 -1
  26. package/dist/src/gate/event-gate.d.ts +40 -6
  27. package/dist/src/gate/event-gate.d.ts.map +1 -1
  28. package/dist/src/gate/event-gate.js +66 -25
  29. package/dist/src/gate/event-gate.js.map +1 -1
  30. package/dist/src/gate/reply-judge.d.ts +4 -0
  31. package/dist/src/gate/reply-judge.d.ts.map +1 -1
  32. package/dist/src/gate/reply-judge.js +12 -3
  33. package/dist/src/gate/reply-judge.js.map +1 -1
  34. package/dist/src/gate/suppression-review.js +2 -2
  35. package/dist/src/gate/suppression-review.js.map +1 -1
  36. package/dist/src/gate/types.d.ts +7 -0
  37. package/dist/src/gate/types.d.ts.map +1 -1
  38. package/dist/src/heartbeat/heartbeat.js +1 -1
  39. package/dist/src/heartbeat/heartbeat.js.map +1 -1
  40. package/dist/src/index.d.ts +1 -0
  41. package/dist/src/index.d.ts.map +1 -1
  42. package/dist/src/index.js +1 -0
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/inference-bounds.d.ts +2 -1
  45. package/dist/src/inference-bounds.d.ts.map +1 -1
  46. package/dist/src/inference-bounds.js +9 -6
  47. package/dist/src/inference-bounds.js.map +1 -1
  48. package/dist/src/mcpl/channel-registry.d.ts +57 -13
  49. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  50. package/dist/src/mcpl/channel-registry.js +136 -24
  51. package/dist/src/mcpl/channel-registry.js.map +1 -1
  52. package/dist/src/mcpl/modern-connection.d.ts +109 -15
  53. package/dist/src/mcpl/modern-connection.d.ts.map +1 -1
  54. package/dist/src/mcpl/modern-connection.js +593 -86
  55. package/dist/src/mcpl/modern-connection.js.map +1 -1
  56. package/dist/src/mcpl/protocol-family.d.ts +3 -1
  57. package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
  58. package/dist/src/mcpl/protocol-family.js +15 -9
  59. package/dist/src/mcpl/protocol-family.js.map +1 -1
  60. package/dist/src/mcpl/server-connection.d.ts +37 -18
  61. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  62. package/dist/src/mcpl/server-connection.js +31 -16
  63. package/dist/src/mcpl/server-connection.js.map +1 -1
  64. package/dist/src/mcpl/tool-presence.d.ts.map +1 -1
  65. package/dist/src/mcpl/tool-presence.js +10 -6
  66. package/dist/src/mcpl/tool-presence.js.map +1 -1
  67. package/dist/src/mcpl/toolset-host.d.ts.map +1 -1
  68. package/dist/src/mcpl/toolset-host.js +7 -6
  69. package/dist/src/mcpl/toolset-host.js.map +1 -1
  70. package/dist/src/mcpl/toolsets-module.d.ts.map +1 -1
  71. package/dist/src/mcpl/toolsets-module.js +2 -1
  72. package/dist/src/mcpl/toolsets-module.js.map +1 -1
  73. package/dist/src/mcpl/types.d.ts +25 -4
  74. package/dist/src/mcpl/types.d.ts.map +1 -1
  75. package/dist/src/mcpl/types.js.map +1 -1
  76. package/dist/src/modules/discord/index.js +1 -1
  77. package/dist/src/modules/discord/index.js.map +1 -1
  78. package/dist/src/modules/health/index.js +2 -2
  79. package/dist/src/modules/health/index.js.map +1 -1
  80. package/dist/src/modules/history/semantic.js +3 -3
  81. package/dist/src/modules/history/semantic.js.map +1 -1
  82. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  83. package/dist/src/modules/workspace/index.js +4 -3
  84. package/dist/src/modules/workspace/index.js.map +1 -1
  85. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  86. package/dist/src/modules/workspace/observe.js +2 -1
  87. package/dist/src/modules/workspace/observe.js.map +1 -1
  88. package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
  89. package/dist/src/modules/workspace/reconcile.js +3 -2
  90. package/dist/src/modules/workspace/reconcile.js.map +1 -1
  91. package/dist/src/notice-tags.d.ts +10 -8
  92. package/dist/src/notice-tags.d.ts.map +1 -1
  93. package/dist/src/notice-tags.js +10 -8
  94. package/dist/src/notice-tags.js.map +1 -1
  95. package/dist/src/presentation.d.ts +2 -1
  96. package/dist/src/presentation.d.ts.map +1 -1
  97. package/dist/src/presentation.js +4 -2
  98. package/dist/src/presentation.js.map +1 -1
  99. package/dist/src/reasoning-loss.d.ts +5 -0
  100. package/dist/src/reasoning-loss.d.ts.map +1 -0
  101. package/dist/src/reasoning-loss.js +8 -0
  102. package/dist/src/reasoning-loss.js.map +1 -0
  103. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  104. package/dist/src/recovery/offline-branch.js +5 -4
  105. package/dist/src/recovery/offline-branch.js.map +1 -1
  106. package/dist/src/recovery/recover-cli.js +2 -1
  107. package/dist/src/recovery/recover-cli.js.map +1 -1
  108. package/dist/src/sent-rows.js +1 -1
  109. package/dist/src/supplied-text.d.ts +1 -1
  110. package/dist/src/supplied-text.js +3 -3
  111. package/dist/src/supplied-text.js.map +1 -1
  112. package/dist/src/thinking-drops.d.ts +2 -0
  113. package/dist/src/thinking-drops.d.ts.map +1 -1
  114. package/dist/src/thinking-drops.js.map +1 -1
  115. package/dist/src/tool-presentation.d.ts.map +1 -1
  116. package/dist/src/tool-presentation.js +38 -9
  117. package/dist/src/tool-presentation.js.map +1 -1
  118. package/dist/src/tune-out/coordinator.d.ts +13 -4
  119. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  120. package/dist/src/tune-out/coordinator.js +33 -16
  121. package/dist/src/tune-out/coordinator.js.map +1 -1
  122. package/dist/src/tune-out/tools.d.ts.map +1 -1
  123. package/dist/src/tune-out/tools.js +2 -1
  124. package/dist/src/tune-out/tools.js.map +1 -1
  125. package/dist/src/types/agent.d.ts +39 -5
  126. package/dist/src/types/agent.d.ts.map +1 -1
  127. package/dist/src/types/framework.d.ts +43 -8
  128. package/dist/src/types/framework.d.ts.map +1 -1
  129. package/dist/src/types/inference-log.d.ts +1 -0
  130. package/dist/src/types/inference-log.d.ts.map +1 -1
  131. package/dist/src/types/trace.d.ts +64 -4
  132. package/dist/src/types/trace.d.ts.map +1 -1
  133. package/package.json +3 -3
  134. package/src/agent.ts +71 -14
  135. package/src/append-all.ts +6 -0
  136. package/src/context-options.ts +18 -8
  137. package/src/cut-off-round.ts +4 -4
  138. package/src/dendrite/registry.ts +4 -2
  139. package/src/failure-text.ts +88 -0
  140. package/src/framework.ts +1018 -293
  141. package/src/gate/event-gate.ts +90 -26
  142. package/src/gate/reply-judge.ts +12 -3
  143. package/src/gate/suppression-review.ts +2 -2
  144. package/src/gate/types.ts +7 -0
  145. package/src/heartbeat/heartbeat.ts +1 -1
  146. package/src/index.ts +1 -0
  147. package/src/inference-bounds.ts +11 -6
  148. package/src/mcpl/channel-registry.ts +160 -31
  149. package/src/mcpl/modern-connection.ts +629 -91
  150. package/src/mcpl/protocol-family.ts +15 -9
  151. package/src/mcpl/server-connection.ts +28 -15
  152. package/src/mcpl/tool-presence.ts +10 -5
  153. package/src/mcpl/toolset-host.ts +7 -6
  154. package/src/mcpl/toolsets-module.ts +2 -1
  155. package/src/mcpl/types.ts +25 -4
  156. package/src/modules/discord/index.ts +1 -1
  157. package/src/modules/health/index.ts +2 -2
  158. package/src/modules/history/semantic.ts +3 -3
  159. package/src/modules/workspace/index.ts +4 -3
  160. package/src/modules/workspace/observe.ts +2 -1
  161. package/src/modules/workspace/reconcile.ts +3 -2
  162. package/src/notice-tags.ts +11 -8
  163. package/src/presentation.ts +4 -2
  164. package/src/reasoning-loss.ts +7 -0
  165. package/src/recovery/offline-branch.ts +5 -4
  166. package/src/recovery/recover-cli.ts +2 -1
  167. package/src/sent-rows.ts +1 -1
  168. package/src/supplied-text.ts +3 -3
  169. package/src/thinking-drops.ts +2 -0
  170. package/src/tool-presentation.ts +34 -9
  171. package/src/tune-out/coordinator.ts +32 -15
  172. package/src/tune-out/tools.ts +2 -1
  173. package/src/types/agent.ts +36 -5
  174. package/src/types/framework.ts +44 -8
  175. package/src/types/inference-log.ts +1 -0
  176. package/src/types/trace.ts +66 -4
@@ -31,7 +31,9 @@ interface PendingEvent {
31
31
  * composite channel id. */
32
32
  channelLabel?: string;
33
33
  /** Author id of the event (discord snowflake etc.), when the metadata carries
34
- * one — a debounced wake names the newest such author as its counterparty. */
34
+ * one — a debounced wake's counterparty is the author of the event
35
+ * wakeProvenance picks; when it picks none and gives no
36
+ * `batchChannels`, the author of the batch's newest notice that has one. */
35
37
  authorId?: string;
36
38
  /** MCPL server id the event came from — the namespace for the counterparty
37
39
  * (`<serverId>:user:<id>`), same as the direct channel-incoming path. */
@@ -40,6 +42,7 @@ interface PendingEvent {
40
42
  * newer ambient chatter when a batched wake picks its provenance — the same
41
43
  * rule the framework applies to the turn's speech locus. */
42
44
  addressed: boolean;
45
+ systemNotice?: true;
43
46
  /** The REGISTERED (composite) channel id the event arrived on, resolved by
44
47
  * the host at enqueue time. Differs from `channelId` for push events,
45
48
  * whose `channelId` is the adapter's raw id (a bare Discord snowflake for a
@@ -76,7 +79,13 @@ export interface WakeProvenance {
76
79
  * channel); the framework derives the composite id on the direct path. */
77
80
  channelId?: string;
78
81
  /** Server-namespaced author id: `<serverId>:user:<id>` (falls back to the
79
- * channel id's first segment only when the event carried no server id). */
82
+ * channel id's first segment only when the event carried no server id).
83
+ * A `chat:system` notice, unless it's a coalesced render's latest
84
+ * occurrence (GateEventInfo.folds), is never chosen for a batch's route,
85
+ * channel or `addressed` flag. In a batch in which no other event names a
86
+ * channel or an author, and which has no `batchChannels`, the chosen
87
+ * event is its newest notice that has an author, of which the wake names
88
+ * only the author and its time (`at`). */
80
89
  counterparty?: string;
81
90
  /** True when the chosen event was `chat:addressed`. */
82
91
  addressed?: boolean;
@@ -93,6 +102,22 @@ export interface WakeProvenance {
93
102
  * event named its server: channel ids are unique only within one
94
103
  * server's connection (MCPL §14.2). */
95
104
  routeServerId?: string;
105
+ /** The channels a batch came from, each its registered id and server, in
106
+ * the order they first appear, when no event of it addressed the agent:
107
+ * those the host resolved, one or more. A channel some events gave with
108
+ * its server and others without is listed once each way, since only the
109
+ * host can tell they're one. A `chat:system` notice counts
110
+ * neither as addressing the agent nor as a channel, except as a
111
+ * coalesced render's latest occurrence, which the gate takes as a
112
+ * message (GateEventInfo.folds). The wake has no route, and the turn's
113
+ * no-locus notice names them, one given without its server only if its id
114
+ * still names one registered channel when the wake is admitted, unless the
115
+ * turn's own wake named a channel that resolves to none, or the turn is an
116
+ * ephemeral run's, which writes none. */
117
+ batchChannels?: Array<{
118
+ channelId: string;
119
+ serverId?: string;
120
+ }>;
96
121
  /** Timestamp (ms) of the chosen event, so a consumer coalescing several
97
122
  * requests can order by event recency, not by flush order. */
98
123
  at?: number;
@@ -105,10 +130,19 @@ export interface WakeProvenance {
105
130
  line?: WakeLine;
106
131
  }
107
132
  /**
108
- * Provenance of a batched wake: the newest ADDRESSED channel-bearing event
109
- * wins (mention / reply / DM outranks newer ambient chatter — the framework's
110
- * own locus rule); else the newest channel-bearing event. Channel, author and
111
- * addressed all come from that one event, so they can never disagree.
133
+ * Provenance of a batched wake: the newest ADDRESSED event that names a
134
+ * channel or an author wins (mention / reply / DM outranks newer ambient
135
+ * chatter — the framework's own locus rule); else the newest event that
136
+ * names either. An addressed event's resolved route counts as its channel;
137
+ * an ambient one's doesn't. Channel, author and addressed all come from
138
+ * that one event, so they can never disagree. A `chat:system` notice is
139
+ * never chosen for the batch's route, channel or addressed flag, even one
140
+ * addressed by its place (a pin in a DM), since a notice never decides where
141
+ * the agent's speech goes; a coalesced render whose latest occurrence is a
142
+ * notice isn't taken as one (GateEventInfo.folds). A batch with no such event
143
+ * carries only its `batchChannels` when it has them; else its chosen event is
144
+ * its newest notice that has an author, of which it takes only the author
145
+ * and time.
112
146
  */
113
147
  export declare function wakeProvenance(events: PendingEvent[]): WakeProvenance | undefined;
114
148
  /** A handed batched-wake line's text (WakeLine), as it reads when written at
@@ -1 +1 @@
1
- {"version":3,"file":"event-gate.d.ts","sourceRoot":"","sources":["../../../src/gate/event-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-gate.d.ts","sourceRoot":"","sources":["../../../src/gate/event-gate.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,10 @@ import { canonical, duplicateName, lastRecipePath, noChanges, reconcileLine, rec
21
21
  import { closestNames, isNearMiss } from '../closest-names.js';
22
22
  import { MAX_TIMER_MS } from '../deadline-timer.js';
23
23
  import { safeSlice } from '../safe-slice.js';
24
+ import { failureWords } from '../failure-text.js';
25
+ import { JudgeFailure } from './reply-judge.js';
26
+ import { isSystemNotice } from '../mcpl/tags.js';
27
+ import { appendAll } from '../append-all.js';
24
28
  // ---------------------------------------------------------------------------
25
29
  // Constants
26
30
  // ---------------------------------------------------------------------------
@@ -104,15 +108,25 @@ function isMetadataTruthy(value) {
104
108
  return Boolean(value);
105
109
  }
106
110
  /**
107
- * Provenance of a batched wake: the newest ADDRESSED channel-bearing event
108
- * wins (mention / reply / DM outranks newer ambient chatter — the framework's
109
- * own locus rule); else the newest channel-bearing event. Channel, author and
110
- * addressed all come from that one event, so they can never disagree.
111
+ * Provenance of a batched wake: the newest ADDRESSED event that names a
112
+ * channel or an author wins (mention / reply / DM outranks newer ambient
113
+ * chatter — the framework's own locus rule); else the newest event that
114
+ * names either. An addressed event's resolved route counts as its channel;
115
+ * an ambient one's doesn't. Channel, author and addressed all come from
116
+ * that one event, so they can never disagree. A `chat:system` notice is
117
+ * never chosen for the batch's route, channel or addressed flag, even one
118
+ * addressed by its place (a pin in a DM), since a notice never decides where
119
+ * the agent's speech goes; a coalesced render whose latest occurrence is a
120
+ * notice isn't taken as one (GateEventInfo.folds). A batch with no such event
121
+ * carries only its `batchChannels` when it has them; else its chosen event is
122
+ * its newest notice that has an author, of which it takes only the author
123
+ * and time.
111
124
  */
112
125
  export function wakeProvenance(events) {
126
+ const said = events.filter((e) => !e.systemNotice);
113
127
  let newest;
114
128
  let newestAddressed;
115
- for (const e of events) {
129
+ for (const e of said) {
116
130
  // A resolved route counts as naming a channel only for an ADDRESSED
117
131
  // event: a push whose origin declares only `mcplChannelId` (no raw
118
132
  // channel id, no author) is still a routable addressed message, and
@@ -128,22 +142,40 @@ export function wakeProvenance(events) {
128
142
  newestAddressed = e;
129
143
  }
130
144
  const pick = newestAddressed ?? newest;
131
- if (!pick)
132
- return undefined;
145
+ const channels = said.some((e) => e.addressed) ? [] : batchRoutes(said);
146
+ if (!pick && channels.length === 0) {
147
+ const notice = events.reduce((n, e) => (e.systemNotice && e.authorId && (!n || e.timestamp >= n.timestamp) ? e : n), undefined);
148
+ return notice ? { counterparty: counterpartyOf(notice), at: notice.timestamp } : undefined;
149
+ }
133
150
  // push-event channel ids are the adapter's raw ids (a Discord snowflake):
134
151
  // not a composite channel id, so not reported as one
135
- const channelId = pick.channelId && pick.eventType !== 'mcpl:push-event' ? pick.channelId : undefined;
136
- const ns = pick.serverId || (pick.channelId ? pick.channelId.split(':')[0] : '') || 'channel';
152
+ const channelId = pick?.channelId && pick.eventType !== 'mcpl:push-event' ? pick.channelId : undefined;
137
153
  return {
138
154
  ...(channelId ? { channelId } : {}),
139
- ...(pick.authorId ? { counterparty: `${ns}:user:${pick.authorId}` } : {}),
140
- ...(pick.addressed ? { addressed: true } : {}),
141
- ...(pick.addressed && pick.routeChannelId
155
+ ...(pick?.authorId ? { counterparty: counterpartyOf(pick) } : {}),
156
+ ...(pick?.addressed ? { addressed: true } : {}),
157
+ ...(pick?.addressed && pick.routeChannelId
142
158
  ? { routeChannelId: pick.routeChannelId, ...(pick.serverId ? { routeServerId: pick.serverId } : {}) }
143
159
  : {}),
144
- at: pick.timestamp,
160
+ ...(channels.length > 0 ? { batchChannels: channels } : {}),
161
+ ...(pick ? { at: pick.timestamp } : {}),
145
162
  };
146
163
  }
164
+ function counterpartyOf(e) {
165
+ const ns = e.serverId || (e.channelId ? e.channelId.split(':')[0] : '') || 'channel';
166
+ return `${ns}:user:${e.authorId}`;
167
+ }
168
+ function batchRoutes(events) {
169
+ const routes = [];
170
+ for (const e of events) {
171
+ if (!e.routeChannelId)
172
+ continue;
173
+ if (routes.some((r) => r.channelId === e.routeChannelId && r.serverId === e.serverId))
174
+ continue;
175
+ routes.push({ channelId: e.routeChannelId, ...(e.serverId ? { serverId: e.serverId } : {}) });
176
+ }
177
+ return routes;
178
+ }
147
179
  /** A `[Gate: …]` line's reference to messages already in the window: how
148
180
  * many, in which channel, and how long ago the oldest arrived, as of `now`. */
149
181
  function referenceLine(count, channel, oldest, now) {
@@ -1402,7 +1434,7 @@ function readConfig(raw, file, start) {
1402
1434
  }
1403
1435
  }
1404
1436
  for (const rule of rules)
1405
- sentences.push(...readingSentences(rule.reading, rule.outcome));
1437
+ appendAll(sentences, readingSentences(rule.reading, rule.outcome));
1406
1438
  // A list with no rules, or none the gate reads, where no sentence above said it has none.
1407
1439
  if (notUsed !== undefined && !sentences.some((said) => said.includes(notUsed))) {
1408
1440
  sentences.push(`${File} has no rules${rules.length > 0 ? ' but ones the gate leaves out' : ''}, so ${notUsedWhy}.`);
@@ -1783,9 +1815,16 @@ export function formatShadowWarning(w) {
1783
1815
  + `Nothing to do unless ${later} is meant for ${types} events; then ${move}. `
1784
1816
  + `A scope on ${later} naming the event types it's for clears this note.`;
1785
1817
  }
1818
+ function judgeFailureWords(err) {
1819
+ if (err instanceof JudgeFailure)
1820
+ return err.message;
1821
+ return err instanceof Error ? failureWords(err, 'the call failed') : 'the call failed';
1822
+ }
1786
1823
  /** The text of a thrown value, for a log line. It never throws itself, whatever was thrown. */
1787
1824
  function errorText(err) {
1788
1825
  try {
1826
+ if (err instanceof JudgeFailure && err.detail !== undefined)
1827
+ return `${err.message} (${err.detail})`;
1789
1828
  return err instanceof Error ? err.message : String(err);
1790
1829
  }
1791
1830
  catch {
@@ -3528,6 +3567,7 @@ export class EventGate {
3528
3567
  authorId: this.extractAuthorId(info.metadata) ?? undefined,
3529
3568
  serverId: info.serverId || undefined,
3530
3569
  addressed: Array.isArray(info.tags) && info.tags.includes('chat:addressed'),
3570
+ ...(isSystemNotice(info.tags) && !info.folds ? { systemNotice: true } : {}),
3531
3571
  routeChannelId: this.routeChannelFor(info),
3532
3572
  ...(typeof info.metadata?.messageId === 'string' ? { messageId: info.metadata.messageId } : {}),
3533
3573
  ...(typeof info.metadata?.eventId === 'string' ? { eventId: info.metadata.eventId } : {}),
@@ -3722,12 +3762,13 @@ export class EventGate {
3722
3762
  }
3723
3763
  // Provenance of the batched wake (who/where woke the agent): the newest
3724
3764
  // ADDRESSED event first, else the newest event naming a channel or an
3725
- // author; channel + author + addressed from that ONE event. When that
3726
- // event addressed the agent and its registered channel is known,
3727
- // `routeChannelId` names the turn's speech locus too — the reply goes
3728
- // back to whoever addressed the agent, not to whichever channel last saw
3729
- // any traffic. Ambient-only batches set no locus. A batch whose line the
3730
- // gate left to the turn's start carries it too (`line`), one object
3765
+ // author, `chat:system` notices aside; channel + author + addressed from
3766
+ // that ONE event. When that event addressed the agent and its registered
3767
+ // channel is known, `routeChannelId` names the turn's speech locus too —
3768
+ // the reply goes back to whoever addressed the agent, not to whichever
3769
+ // channel last saw any traffic. Ambient-only batches set no locus, and
3770
+ // name the channels they came from (`batchChannels`). A batch whose line
3771
+ // the gate left to the turn's start carries it too (`line`), one object
3731
3772
  // shared by every agent woken with these messages, so it is written once.
3732
3773
  const chosen = wakeProvenance(events);
3733
3774
  const provenance = line ? { ...chosen, line } : chosen;
@@ -3764,7 +3805,7 @@ export class EventGate {
3764
3805
  return;
3765
3806
  const deciding = this.judging.get(policyName);
3766
3807
  if (deciding) {
3767
- deciding.queued.push(...events);
3808
+ appendAll(deciding.queued, events);
3768
3809
  this.capJudgeEvents(deciding.queued);
3769
3810
  return;
3770
3811
  }
@@ -3783,8 +3824,8 @@ export class EventGate {
3783
3824
  this.judging.set(policyName, state);
3784
3825
  const timedOut = new Promise((_, reject) => {
3785
3826
  state.timer = setTimeout(() => {
3827
+ reject(new JudgeFailure(`the judge took more than ${this.judgeTimeoutMs} ms`));
3786
3828
  abort.abort();
3787
- reject(new Error(`the judge took more than ${this.judgeTimeoutMs} ms`));
3788
3829
  }, this.judgeTimeoutMs);
3789
3830
  // Never keep the process alive on the judge's account.
3790
3831
  state.timer.unref?.();
@@ -3815,7 +3856,7 @@ export class EventGate {
3815
3856
  holdForJudge(policyName, events, judge) {
3816
3857
  const held = this.judgeHeld.get(policyName);
3817
3858
  if (held) {
3818
- held.events.push(...events);
3859
+ appendAll(held.events, events);
3819
3860
  held.judge = judge;
3820
3861
  this.capJudgeEvents(held.events);
3821
3862
  }
@@ -3941,7 +3982,7 @@ export class EventGate {
3941
3982
  }
3942
3983
  const outcome = failed ? 'error' : verdict.reply ? 'reply' : 'wait';
3943
3984
  const reason = failed
3944
- ? (err !== undefined ? errorText(err) : 'the judge gave no verdict')
3985
+ ? (err !== undefined ? judgeFailureWords(err) : 'the judge gave no verdict')
3945
3986
  : typeof verdict.reason === 'string' ? verdict.reason : '';
3946
3987
  const record = this.judgeRecords.get(policyName) ?? { verdicts: { reply: 0, wait: 0, error: 0 } };
3947
3988
  record.verdicts[outcome]++;
@@ -3964,7 +4005,7 @@ export class EventGate {
3964
4005
  }
3965
4006
  const wake = outcome === 'reply' || (outcome === 'error' && this.judgeOnError === 'wake');
3966
4007
  if (failed) {
3967
- console.error(`[gate] Rule ${quotedValue(policyName)}: the reply judge failed (${reason}), so its batch of ${state.events.length} `
4008
+ console.error(`[gate] Rule ${quotedValue(policyName)}: the reply judge failed (${err !== undefined ? errorText(err) : reason}), so its batch of ${state.events.length} `
3968
4009
  + `${state.events.length === 1 ? 'event' : 'events'} ${wake ? 'wakes the agent' : "doesn't wake the agent"} (judge onError "${this.judgeOnError}")`);
3969
4010
  }
3970
4011
  this.emitTrace({