@animalabs/agent-framework 0.6.5 → 0.6.6

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 (69) hide show
  1. package/dist/src/agent.d.ts +18 -1
  2. package/dist/src/agent.d.ts.map +1 -1
  3. package/dist/src/agent.js +201 -2
  4. package/dist/src/agent.js.map +1 -1
  5. package/dist/src/framework.d.ts +15 -1
  6. package/dist/src/framework.d.ts.map +1 -1
  7. package/dist/src/framework.js +423 -86
  8. package/dist/src/framework.js.map +1 -1
  9. package/dist/src/gate/event-gate.d.ts.map +1 -1
  10. package/dist/src/gate/event-gate.js +27 -4
  11. package/dist/src/gate/event-gate.js.map +1 -1
  12. package/dist/src/mcpl/channel-registry.d.ts +34 -15
  13. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  14. package/dist/src/mcpl/channel-registry.js +299 -67
  15. package/dist/src/mcpl/channel-registry.js.map +1 -1
  16. package/dist/src/mcpl/push-handler.d.ts +1 -0
  17. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  18. package/dist/src/mcpl/push-handler.js +1 -0
  19. package/dist/src/mcpl/push-handler.js.map +1 -1
  20. package/dist/src/mcpl/server-connection.d.ts +3 -1
  21. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  22. package/dist/src/mcpl/server-connection.js +4 -0
  23. package/dist/src/mcpl/server-connection.js.map +1 -1
  24. package/dist/src/mcpl/types.d.ts +43 -12
  25. package/dist/src/mcpl/types.d.ts.map +1 -1
  26. package/dist/src/mcpl/types.js +1 -0
  27. package/dist/src/mcpl/types.js.map +1 -1
  28. package/dist/src/types/agent.d.ts +15 -0
  29. package/dist/src/types/agent.d.ts.map +1 -1
  30. package/dist/src/types/events.d.ts +1 -0
  31. package/dist/src/types/events.d.ts.map +1 -1
  32. package/dist/src/types/trace.d.ts +2 -0
  33. package/dist/src/types/trace.d.ts.map +1 -1
  34. package/dist/test/agent-runtime-settings.test.d.ts +2 -0
  35. package/dist/test/agent-runtime-settings.test.d.ts.map +1 -0
  36. package/dist/test/agent-runtime-settings.test.js +120 -0
  37. package/dist/test/agent-runtime-settings.test.js.map +1 -0
  38. package/dist/test/channel-registry-routing.test.js +5 -4
  39. package/dist/test/channel-registry-routing.test.js.map +1 -1
  40. package/dist/test/conversation-fork-injection-scoping.test.js +12 -1
  41. package/dist/test/conversation-fork-injection-scoping.test.js.map +1 -1
  42. package/dist/test/event-gate.test.js +21 -1
  43. package/dist/test/event-gate.test.js.map +1 -1
  44. package/dist/test/helpers/mock-membrane.d.ts +13 -1
  45. package/dist/test/helpers/mock-membrane.d.ts.map +1 -1
  46. package/dist/test/helpers/mock-membrane.js +8 -1
  47. package/dist/test/helpers/mock-membrane.js.map +1 -1
  48. package/dist/test/maintenance-timer.test.js +3 -1
  49. package/dist/test/maintenance-timer.test.js.map +1 -1
  50. package/dist/test/mcpl-gate-roundtrip.test.js +138 -6
  51. package/dist/test/mcpl-gate-roundtrip.test.js.map +1 -1
  52. package/dist/test/present-while-acting.test.d.ts +18 -0
  53. package/dist/test/present-while-acting.test.d.ts.map +1 -0
  54. package/dist/test/present-while-acting.test.js +267 -0
  55. package/dist/test/present-while-acting.test.js.map +1 -0
  56. package/dist/test/trunk-channel-routing.test.js +38 -0
  57. package/dist/test/trunk-channel-routing.test.js.map +1 -1
  58. package/dist/tsconfig.tsbuildinfo +1 -1
  59. package/package.json +3 -3
  60. package/src/agent.ts +222 -3
  61. package/src/framework.ts +468 -92
  62. package/src/gate/event-gate.ts +38 -4
  63. package/src/mcpl/channel-registry.ts +372 -76
  64. package/src/mcpl/push-handler.ts +2 -0
  65. package/src/mcpl/server-connection.ts +10 -0
  66. package/src/mcpl/types.ts +49 -12
  67. package/src/types/agent.ts +18 -0
  68. package/src/types/events.ts +1 -1
  69. package/src/types/trace.ts +2 -0
@@ -35,6 +35,7 @@ export interface McplPushEvent {
35
35
  eventId: string;
36
36
  content: ContentBlock[];
37
37
  origin?: Record<string, unknown>;
38
+ tags?: string[];
38
39
  timestamp: string;
39
40
  inferenceId: string;
40
41
  triggerInference?: boolean;
@@ -217,6 +218,7 @@ export class PushHandler {
217
218
  eventId: params.eventId,
218
219
  content,
219
220
  origin: params.origin,
221
+ tags: params.tags,
220
222
  timestamp: params.timestamp,
221
223
  inferenceId,
222
224
  triggerInference,
@@ -31,6 +31,8 @@ import type {
31
31
  ChannelsOpenResult,
32
32
  ChannelsCloseParams,
33
33
  ChannelsCloseResult,
34
+ ChannelsAcknowledgeParams,
35
+ ChannelsAcknowledgeResult,
34
36
  ChannelsListResult,
35
37
  ChannelsPublishParams,
36
38
  ChannelsPublishResult,
@@ -397,6 +399,14 @@ export class McplServerConnection extends EventEmitter {
397
399
  return this.sendRequest(McplMethod.ChannelsClose, params as unknown as Record<string, unknown>) as Promise<ChannelsCloseResult>;
398
400
  }
399
401
 
402
+ /** Send `channels/acknowledge` request and await result. */
403
+ sendChannelsAcknowledge(params: ChannelsAcknowledgeParams): Promise<ChannelsAcknowledgeResult> {
404
+ return this.sendRequest(
405
+ McplMethod.ChannelsAcknowledge,
406
+ params as unknown as Record<string, unknown>,
407
+ ) as Promise<ChannelsAcknowledgeResult>;
408
+ }
409
+
400
410
  /** Send `channels/list` request and await result. */
401
411
  sendChannelsList(): Promise<ChannelsListResult> {
402
412
  return this.sendRequest(McplMethod.ChannelsList, {}) as Promise<ChannelsListResult>;
package/src/mcpl/types.ts CHANGED
@@ -284,18 +284,9 @@ export interface McplServerConfig {
284
284
  toolPrefix?: string;
285
285
 
286
286
  /**
287
- * How channels registered by this server are opened.
288
- * - `'auto'` (default) — every registered channel is auto-opened; the host
289
- * receives all traffic. Matches prior behavior. Right for agents that
290
- * should listen passively (e.g. a frontdesk clerk).
291
- * - `'manual'` — registered channels are listed but not opened. The agent
292
- * must call the `channel_open` tool to start receiving messages. Right
293
- * for focused agents that should not be flooded with chatter from
294
- * servers that advertise many public channels (e.g. Zulip's full stream
295
- * list).
296
- * - `string[]` — allow-list of channel ids; only matching channels are
297
- * auto-opened. Ids are server-scoped (the raw id the server registers,
298
- * e.g. `"zulip:tracker-miner-f"`).
287
+ * @deprecated One-time migration input for an installation's old auto,
288
+ * manual, or allow-list policy. Runtime lifecycle state is persisted in
289
+ * Chronicle and changed with channel_open/channel_close.
299
290
  */
300
291
  channelSubscription?: 'auto' | 'manual' | string[];
301
292
  }
@@ -797,6 +788,33 @@ export interface ChannelDescriptor {
797
788
 
798
789
  /** Arbitrary metadata */
799
790
  metadata?: Record<string, unknown>;
791
+
792
+ /**
793
+ * Server bootstrap preference, consulted only when the host has no durable
794
+ * desired state for this channel.
795
+ */
796
+ initiallyOpen?: boolean;
797
+
798
+ /** Optional generic capabilities exposed by this channel. */
799
+ capabilities?: ChannelCapabilities;
800
+ }
801
+
802
+ export interface ChannelCapabilities {
803
+ history?: {
804
+ maxMessages?: number;
805
+ supportsBeforeMessage?: boolean;
806
+ supportsSinceLastSeen?: boolean;
807
+ };
808
+ acknowledgment?: {
809
+ kind?: string;
810
+ supportsValue?: boolean;
811
+ };
812
+ }
813
+
814
+ export interface ChannelHistoryRequest {
815
+ limit: number;
816
+ beforeMessageId?: string;
817
+ sinceLastSeen?: boolean;
800
818
  }
801
819
 
802
820
  /**
@@ -858,9 +876,12 @@ export interface ChannelsListResult {
858
876
  * Spec Section 14.3.
859
877
  */
860
878
  export interface ChannelsOpenParams {
879
+ /** Exact registered id. Preferred over type/address matching. */
880
+ channelId?: string;
861
881
  type: string;
862
882
  address?: Record<string, unknown>;
863
883
  metadata?: Record<string, unknown>;
884
+ history?: ChannelHistoryRequest;
864
885
  }
865
886
 
866
887
  /**
@@ -868,6 +889,8 @@ export interface ChannelsOpenParams {
868
889
  */
869
890
  export interface ChannelsOpenResult {
870
891
  channel: ChannelDescriptor;
892
+ history?: ChannelIncomingMessage[];
893
+ historyTruncated?: boolean;
871
894
  }
872
895
 
873
896
  /**
@@ -885,6 +908,19 @@ export interface ChannelsCloseResult {
885
908
  closed: boolean;
886
909
  }
887
910
 
911
+ export interface ChannelsAcknowledgeParams {
912
+ channelId: string;
913
+ messageId: string;
914
+ intent: string;
915
+ value?: string;
916
+ }
917
+
918
+ export interface ChannelsAcknowledgeResult {
919
+ acknowledged: boolean;
920
+ representation?: string;
921
+ reason?: string;
922
+ }
923
+
888
924
  /**
889
925
  * channels/outgoing/chunk params (Host → Server, Notification).
890
926
  * For observers receiving moderated deltas.
@@ -1046,6 +1082,7 @@ export const McplMethod = {
1046
1082
  ChannelsList: 'channels/list',
1047
1083
  ChannelsOpen: 'channels/open',
1048
1084
  ChannelsClose: 'channels/close',
1085
+ ChannelsAcknowledge: 'channels/acknowledge',
1049
1086
  ChannelsOutgoingChunk: 'channels/outgoing/chunk',
1050
1087
  ChannelsOutgoingComplete: 'channels/outgoing/complete',
1051
1088
  ChannelsPublish: 'channels/publish',
@@ -107,6 +107,24 @@ export interface AgentConfig {
107
107
  };
108
108
  }
109
109
 
110
+ /** The intentionally small set of agent settings that may change in-process. */
111
+ export interface AgentRuntimeSettingsPatch {
112
+ contextBudgetTokens?: number;
113
+ tailTokens?: number;
114
+ transitionPaceTokens?: number;
115
+ }
116
+
117
+ export interface AgentRuntimeSettingsSnapshot {
118
+ contextBudgetTokens: number;
119
+ tailTokens?: number;
120
+ transitionPaceTokens?: number;
121
+ transition: 'stable' | 'converging' | 'blocked';
122
+ transitionReason?: 'transition_pace_too_small' | 'protected_context_exceeds_target';
123
+ }
124
+
125
+ /** Persisted values differ from recipe defaults; omitted keys inherit config. */
126
+ export type AgentRuntimeSettingsOverrides = AgentRuntimeSettingsPatch;
127
+
110
128
  /**
111
129
  * Result of running inference.
112
130
  */
@@ -226,6 +226,7 @@ export interface McplPushEvent {
226
226
  eventId: string;
227
227
  content: ContentBlock[];
228
228
  origin?: Record<string, unknown>;
229
+ tags?: string[];
229
230
  timestamp: string;
230
231
  inferenceId: string;
231
232
  triggerInference?: boolean;
@@ -249,4 +250,3 @@ export interface McplChannelIncomingEvent {
249
250
  triggerInference?: boolean;
250
251
  targetAgents?: string[];
251
252
  }
252
-
@@ -109,6 +109,8 @@ export type TraceEvent =
109
109
  | (TraceEventBase & {
110
110
  type: 'inference:stream_resumed';
111
111
  agentName: string;
112
+ /** Count of mid-turn messages injected into the resumed round (hear-while-acting). */
113
+ injectedMessages?: number;
112
114
  })
113
115
  | (TraceEventBase & {
114
116
  type: 'inference:stream_restarted';