@agent-marshal/marshal-prime-agent 0.49.4 → 0.49.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/README.md CHANGED
@@ -5,9 +5,12 @@
5
5
  `marshal-pi` package and targets Prime Agent's conversation lifecycle and canonical
6
6
  session identities.
7
7
 
8
- The extension runs inside each Prime Agent conversation. It:
8
+ The extension runs inside each top-level Prime Agent conversation. Prime Agent
9
+ RLM sub-agents stay part of their parent's Marshal session and are not added to the
10
+ roster independently. It:
9
11
 
10
- - registers the conversation on the Marshal roster using Prime Agent's session ID;
12
+ - registers the top-level conversation on the Marshal roster using Prime Agent's
13
+ session ID;
11
14
  - exposes native `marshal_*` tools to the model;
12
15
  - subscribes to Marshal's live notification stream; and
13
16
  - injects incoming direct messages with
package/package.json CHANGED
@@ -46,8 +46,9 @@
46
46
  "url": "https://github.com/ignition-is-go/marshal"
47
47
  },
48
48
  "scripts": {
49
- "gen": "cargo run -p marshal-entities --no-default-features --features codegen --bin typegen -- src/generated"
49
+ "gen": "cargo run -p marshal-entities --no-default-features --features codegen --bin typegen -- src/generated",
50
+ "test": "bun test"
50
51
  },
51
52
  "type": "module",
52
- "version": "0.49.4"
53
+ "version": "0.49.8"
53
54
  }
@@ -164,11 +164,6 @@ export type { SetSessionLastActivityAtArgs } from "./SetSessionLastActivityAtArg
164
164
  export type { SetSessionLastToolArgs } from "./SetSessionLastToolArgs";
165
165
  export type { SetSessionLastToolAtArgs } from "./SetSessionLastToolAtArgs";
166
166
  export type { SetSessionSessionNameArgs } from "./SetSessionSessionNameArgs";
167
- export type { StartProfile } from "./StartProfile";
168
- export type { StartProfileArgs } from "./StartProfileArgs";
169
- export type { StopProfile } from "./StopProfile";
170
- export type { StopProfileArgs } from "./StopProfileArgs";
171
- export type { StopProfileOutput } from "./StopProfileOutput";
172
167
  export type { ViewError } from "./ViewError";
173
168
  export type { ViewWindowUpdate } from "./ViewWindowUpdate";
174
169
  export type { WakeStatus } from "./WakeStatus";
@@ -277,6 +272,84 @@ import type { SetSessionLastToolAt as _SetSessionLastToolAt } from "./SetSession
277
272
  import type { SetSessionSessionName as _SetSessionSessionName } from "./SetSessionSessionName";
278
273
 
279
274
  // Query classes
275
+ export class GetSessionsByQuery {
276
+ static readonly queryId = "GetSessionsByQuery" as const;
277
+ static readonly queryItemType = "Session" as const;
278
+ readonly queryId = "GetSessionsByQuery" as const;
279
+ readonly queryItemType = "Session" as const;
280
+ readonly query: Omit<_GetSessionsByQuery, "tx" | "createdAt">;
281
+ declare readonly $res: () => Session[];
282
+
283
+ constructor(args: Omit<_GetSessionsByQuery, "tx" | "createdAt">) {
284
+ this.query = args;
285
+ }
286
+ }
287
+
288
+ export class GetSessionsByIds {
289
+ static readonly queryId = "GetSessionsByIds" as const;
290
+ static readonly queryItemType = "Session" as const;
291
+ readonly queryId = "GetSessionsByIds" as const;
292
+ readonly queryItemType = "Session" as const;
293
+ readonly query: Omit<_GetSessionsByIds, "tx" | "createdAt">;
294
+ declare readonly $res: () => Session[];
295
+
296
+ constructor(args: Omit<_GetSessionsByIds, "tx" | "createdAt">) {
297
+ this.query = args;
298
+ }
299
+ }
300
+
301
+ export class GetAllSessions {
302
+ static readonly queryId = "GetAllSessions" as const;
303
+ static readonly queryItemType = "Session" as const;
304
+ readonly queryId = "GetAllSessions" as const;
305
+ readonly queryItemType = "Session" as const;
306
+ readonly query: Omit<_GetAllSessions, "tx" | "createdAt">;
307
+ declare readonly $res: () => Session[];
308
+
309
+ constructor(args: Omit<_GetAllSessions, "tx" | "createdAt">) {
310
+ this.query = args;
311
+ }
312
+ }
313
+
314
+ export class GetRoomsByQuery {
315
+ static readonly queryId = "GetRoomsByQuery" as const;
316
+ static readonly queryItemType = "Room" as const;
317
+ readonly queryId = "GetRoomsByQuery" as const;
318
+ readonly queryItemType = "Room" as const;
319
+ readonly query: Omit<_GetRoomsByQuery, "tx" | "createdAt">;
320
+ declare readonly $res: () => Room[];
321
+
322
+ constructor(args: Omit<_GetRoomsByQuery, "tx" | "createdAt">) {
323
+ this.query = args;
324
+ }
325
+ }
326
+
327
+ export class GetRoomsByIds {
328
+ static readonly queryId = "GetRoomsByIds" as const;
329
+ static readonly queryItemType = "Room" as const;
330
+ readonly queryId = "GetRoomsByIds" as const;
331
+ readonly queryItemType = "Room" as const;
332
+ readonly query: Omit<_GetRoomsByIds, "tx" | "createdAt">;
333
+ declare readonly $res: () => Room[];
334
+
335
+ constructor(args: Omit<_GetRoomsByIds, "tx" | "createdAt">) {
336
+ this.query = args;
337
+ }
338
+ }
339
+
340
+ export class GetAllRooms {
341
+ static readonly queryId = "GetAllRooms" as const;
342
+ static readonly queryItemType = "Room" as const;
343
+ readonly queryId = "GetAllRooms" as const;
344
+ readonly queryItemType = "Room" as const;
345
+ readonly query: Omit<_GetAllRooms, "tx" | "createdAt">;
346
+ declare readonly $res: () => Room[];
347
+
348
+ constructor(args: Omit<_GetAllRooms, "tx" | "createdAt">) {
349
+ this.query = args;
350
+ }
351
+ }
352
+
280
353
  export class GetMessageReadsByQuery {
281
354
  static readonly queryId = "GetMessageReadsByQuery" as const;
282
355
  static readonly queryItemType = "MessageRead" as const;
@@ -355,45 +428,6 @@ export class GetAllRoomMembers {
355
428
  }
356
429
  }
357
430
 
358
- export class GetSessionsByQuery {
359
- static readonly queryId = "GetSessionsByQuery" as const;
360
- static readonly queryItemType = "Session" as const;
361
- readonly queryId = "GetSessionsByQuery" as const;
362
- readonly queryItemType = "Session" as const;
363
- readonly query: Omit<_GetSessionsByQuery, "tx" | "createdAt">;
364
- declare readonly $res: () => Session[];
365
-
366
- constructor(args: Omit<_GetSessionsByQuery, "tx" | "createdAt">) {
367
- this.query = args;
368
- }
369
- }
370
-
371
- export class GetSessionsByIds {
372
- static readonly queryId = "GetSessionsByIds" as const;
373
- static readonly queryItemType = "Session" as const;
374
- readonly queryId = "GetSessionsByIds" as const;
375
- readonly queryItemType = "Session" as const;
376
- readonly query: Omit<_GetSessionsByIds, "tx" | "createdAt">;
377
- declare readonly $res: () => Session[];
378
-
379
- constructor(args: Omit<_GetSessionsByIds, "tx" | "createdAt">) {
380
- this.query = args;
381
- }
382
- }
383
-
384
- export class GetAllSessions {
385
- static readonly queryId = "GetAllSessions" as const;
386
- static readonly queryItemType = "Session" as const;
387
- readonly queryId = "GetAllSessions" as const;
388
- readonly queryItemType = "Session" as const;
389
- readonly query: Omit<_GetAllSessions, "tx" | "createdAt">;
390
- declare readonly $res: () => Session[];
391
-
392
- constructor(args: Omit<_GetAllSessions, "tx" | "createdAt">) {
393
- this.query = args;
394
- }
395
- }
396
-
397
431
  export class GetMessagesByQuery {
398
432
  static readonly queryId = "GetMessagesByQuery" as const;
399
433
  static readonly queryItemType = "Message" as const;
@@ -433,45 +467,6 @@ export class GetAllMessages {
433
467
  }
434
468
  }
435
469
 
436
- export class GetRoomsByQuery {
437
- static readonly queryId = "GetRoomsByQuery" as const;
438
- static readonly queryItemType = "Room" as const;
439
- readonly queryId = "GetRoomsByQuery" as const;
440
- readonly queryItemType = "Room" as const;
441
- readonly query: Omit<_GetRoomsByQuery, "tx" | "createdAt">;
442
- declare readonly $res: () => Room[];
443
-
444
- constructor(args: Omit<_GetRoomsByQuery, "tx" | "createdAt">) {
445
- this.query = args;
446
- }
447
- }
448
-
449
- export class GetRoomsByIds {
450
- static readonly queryId = "GetRoomsByIds" as const;
451
- static readonly queryItemType = "Room" as const;
452
- readonly queryId = "GetRoomsByIds" as const;
453
- readonly queryItemType = "Room" as const;
454
- readonly query: Omit<_GetRoomsByIds, "tx" | "createdAt">;
455
- declare readonly $res: () => Room[];
456
-
457
- constructor(args: Omit<_GetRoomsByIds, "tx" | "createdAt">) {
458
- this.query = args;
459
- }
460
- }
461
-
462
- export class GetAllRooms {
463
- static readonly queryId = "GetAllRooms" as const;
464
- static readonly queryItemType = "Room" as const;
465
- readonly queryId = "GetAllRooms" as const;
466
- readonly queryItemType = "Room" as const;
467
- readonly query: Omit<_GetAllRooms, "tx" | "createdAt">;
468
- declare readonly $res: () => Room[];
469
-
470
- constructor(args: Omit<_GetAllRooms, "tx" | "createdAt">) {
471
- this.query = args;
472
- }
473
- }
474
-
475
470
  export class GetSessionNicknamesByQuery {
476
471
  static readonly queryId = "GetSessionNicknamesByQuery" as const;
477
472
  static readonly queryItemType = "SessionNickname" as const;
@@ -514,6 +509,72 @@ export class GetAllSessionNicknames {
514
509
  // View classes
515
510
 
516
511
  // Report classes
512
+ export class GetSessionById {
513
+ static readonly reportId = "GetSessionById" as const;
514
+ readonly reportId = "GetSessionById" as const;
515
+ readonly report: Omit<_GetSessionById, "tx">;
516
+ declare readonly $res: () => Session | null;
517
+
518
+ constructor(args: Omit<_GetSessionById, "tx">) {
519
+ this.report = args;
520
+ }
521
+ }
522
+
523
+ export class CountSessions {
524
+ static readonly reportId = "CountSessions" as const;
525
+ readonly reportId = "CountSessions" as const;
526
+ readonly report: Omit<_CountSessions, "tx">;
527
+ declare readonly $res: () => SessionCount;
528
+
529
+ constructor(args: Omit<_CountSessions, "tx">) {
530
+ this.report = args;
531
+ }
532
+ }
533
+
534
+ export class CountAllSessions {
535
+ static readonly reportId = "CountAllSessions" as const;
536
+ readonly reportId = "CountAllSessions" as const;
537
+ readonly report: Omit<_CountAllSessions, "tx">;
538
+ declare readonly $res: () => SessionCount;
539
+
540
+ constructor(args: Omit<_CountAllSessions, "tx">) {
541
+ this.report = args;
542
+ }
543
+ }
544
+
545
+ export class GetRoomById {
546
+ static readonly reportId = "GetRoomById" as const;
547
+ readonly reportId = "GetRoomById" as const;
548
+ readonly report: Omit<_GetRoomById, "tx">;
549
+ declare readonly $res: () => Room | null;
550
+
551
+ constructor(args: Omit<_GetRoomById, "tx">) {
552
+ this.report = args;
553
+ }
554
+ }
555
+
556
+ export class CountRooms {
557
+ static readonly reportId = "CountRooms" as const;
558
+ readonly reportId = "CountRooms" as const;
559
+ readonly report: Omit<_CountRooms, "tx">;
560
+ declare readonly $res: () => RoomCount;
561
+
562
+ constructor(args: Omit<_CountRooms, "tx">) {
563
+ this.report = args;
564
+ }
565
+ }
566
+
567
+ export class CountAllRooms {
568
+ static readonly reportId = "CountAllRooms" as const;
569
+ readonly reportId = "CountAllRooms" as const;
570
+ readonly report: Omit<_CountAllRooms, "tx">;
571
+ declare readonly $res: () => RoomCount;
572
+
573
+ constructor(args: Omit<_CountAllRooms, "tx">) {
574
+ this.report = args;
575
+ }
576
+ }
577
+
517
578
  export class GetMessageReadById {
518
579
  static readonly reportId = "GetMessageReadById" as const;
519
580
  readonly reportId = "GetMessageReadById" as const;
@@ -580,39 +641,6 @@ export class CountAllRoomMembers {
580
641
  }
581
642
  }
582
643
 
583
- export class GetSessionById {
584
- static readonly reportId = "GetSessionById" as const;
585
- readonly reportId = "GetSessionById" as const;
586
- readonly report: Omit<_GetSessionById, "tx">;
587
- declare readonly $res: () => Session | null;
588
-
589
- constructor(args: Omit<_GetSessionById, "tx">) {
590
- this.report = args;
591
- }
592
- }
593
-
594
- export class CountSessions {
595
- static readonly reportId = "CountSessions" as const;
596
- readonly reportId = "CountSessions" as const;
597
- readonly report: Omit<_CountSessions, "tx">;
598
- declare readonly $res: () => SessionCount;
599
-
600
- constructor(args: Omit<_CountSessions, "tx">) {
601
- this.report = args;
602
- }
603
- }
604
-
605
- export class CountAllSessions {
606
- static readonly reportId = "CountAllSessions" as const;
607
- readonly reportId = "CountAllSessions" as const;
608
- readonly report: Omit<_CountAllSessions, "tx">;
609
- declare readonly $res: () => SessionCount;
610
-
611
- constructor(args: Omit<_CountAllSessions, "tx">) {
612
- this.report = args;
613
- }
614
- }
615
-
616
644
  export class GetMessageById {
617
645
  static readonly reportId = "GetMessageById" as const;
618
646
  readonly reportId = "GetMessageById" as const;
@@ -646,39 +674,6 @@ export class CountAllMessages {
646
674
  }
647
675
  }
648
676
 
649
- export class GetRoomById {
650
- static readonly reportId = "GetRoomById" as const;
651
- readonly reportId = "GetRoomById" as const;
652
- readonly report: Omit<_GetRoomById, "tx">;
653
- declare readonly $res: () => Room | null;
654
-
655
- constructor(args: Omit<_GetRoomById, "tx">) {
656
- this.report = args;
657
- }
658
- }
659
-
660
- export class CountRooms {
661
- static readonly reportId = "CountRooms" as const;
662
- readonly reportId = "CountRooms" as const;
663
- readonly report: Omit<_CountRooms, "tx">;
664
- declare readonly $res: () => RoomCount;
665
-
666
- constructor(args: Omit<_CountRooms, "tx">) {
667
- this.report = args;
668
- }
669
- }
670
-
671
- export class CountAllRooms {
672
- static readonly reportId = "CountAllRooms" as const;
673
- readonly reportId = "CountAllRooms" as const;
674
- readonly report: Omit<_CountAllRooms, "tx">;
675
- declare readonly $res: () => RoomCount;
676
-
677
- constructor(args: Omit<_CountAllRooms, "tx">) {
678
- this.report = args;
679
- }
680
- }
681
-
682
677
  export class GetSessionNicknameById {
683
678
  static readonly reportId = "GetSessionNicknameById" as const;
684
679
  readonly reportId = "GetSessionNicknameById" as const;
@@ -713,72 +708,6 @@ export class CountAllSessionNicknames {
713
708
  }
714
709
 
715
710
  // Command classes
716
- export class SendMessage {
717
- static readonly commandId = "SendMessage" as const;
718
- readonly commandId = "SendMessage" as const;
719
- readonly command: Omit<_SendMessage, "tx" | "createdAt">;
720
- declare readonly $res: () => SendMessageResult;
721
-
722
- constructor(args: Omit<_SendMessage, "tx" | "createdAt">) {
723
- this.command = args;
724
- }
725
- }
726
-
727
- export class DeleteMessageReads {
728
- static readonly commandId = "DeleteMessageReads" as const;
729
- readonly commandId = "DeleteMessageReads" as const;
730
- readonly command: Omit<_DeleteMessageReads, "tx" | "createdAt">;
731
- declare readonly $res: () => DeleteMessageReadsResult;
732
-
733
- constructor(args: Omit<_DeleteMessageReads, "tx" | "createdAt">) {
734
- this.command = args;
735
- }
736
- }
737
-
738
- export class DeleteMessageRead {
739
- static readonly commandId = "DeleteMessageRead" as const;
740
- readonly commandId = "DeleteMessageRead" as const;
741
- readonly command: Omit<_DeleteMessageRead, "tx" | "createdAt">;
742
- declare readonly $res: () => DeleteMessageReadResult;
743
-
744
- constructor(args: Omit<_DeleteMessageRead, "tx" | "createdAt">) {
745
- this.command = args;
746
- }
747
- }
748
-
749
- export class NotifyChannel {
750
- static readonly commandId = "NotifyChannel" as const;
751
- readonly commandId = "NotifyChannel" as const;
752
- readonly command: Omit<_NotifyChannel, "tx" | "createdAt">;
753
- declare readonly $res: () => void;
754
-
755
- constructor(args: Omit<_NotifyChannel, "tx" | "createdAt">) {
756
- this.command = args;
757
- }
758
- }
759
-
760
- export class DeleteRoomMembers {
761
- static readonly commandId = "DeleteRoomMembers" as const;
762
- readonly commandId = "DeleteRoomMembers" as const;
763
- readonly command: Omit<_DeleteRoomMembers, "tx" | "createdAt">;
764
- declare readonly $res: () => DeleteRoomMembersResult;
765
-
766
- constructor(args: Omit<_DeleteRoomMembers, "tx" | "createdAt">) {
767
- this.command = args;
768
- }
769
- }
770
-
771
- export class DeleteRoomMember {
772
- static readonly commandId = "DeleteRoomMember" as const;
773
- readonly commandId = "DeleteRoomMember" as const;
774
- readonly command: Omit<_DeleteRoomMember, "tx" | "createdAt">;
775
- declare readonly $res: () => DeleteRoomMemberResult;
776
-
777
- constructor(args: Omit<_DeleteRoomMember, "tx" | "createdAt">) {
778
- this.command = args;
779
- }
780
- }
781
-
782
711
  export class DeleteSessions {
783
712
  static readonly commandId = "DeleteSessions" as const;
784
713
  readonly commandId = "DeleteSessions" as const;
@@ -878,39 +807,6 @@ export class SetSessionGitBranch {
878
807
  }
879
808
  }
880
809
 
881
- export class BroadcastMessage {
882
- static readonly commandId = "BroadcastMessage" as const;
883
- readonly commandId = "BroadcastMessage" as const;
884
- readonly command: Omit<_BroadcastMessage, "tx" | "createdAt">;
885
- declare readonly $res: () => BroadcastMessageResult;
886
-
887
- constructor(args: Omit<_BroadcastMessage, "tx" | "createdAt">) {
888
- this.command = args;
889
- }
890
- }
891
-
892
- export class DeleteMessages {
893
- static readonly commandId = "DeleteMessages" as const;
894
- readonly commandId = "DeleteMessages" as const;
895
- readonly command: Omit<_DeleteMessages, "tx" | "createdAt">;
896
- declare readonly $res: () => DeleteMessagesResult;
897
-
898
- constructor(args: Omit<_DeleteMessages, "tx" | "createdAt">) {
899
- this.command = args;
900
- }
901
- }
902
-
903
- export class DeleteMessage {
904
- static readonly commandId = "DeleteMessage" as const;
905
- readonly commandId = "DeleteMessage" as const;
906
- readonly command: Omit<_DeleteMessage, "tx" | "createdAt">;
907
- declare readonly $res: () => DeleteMessageResult;
908
-
909
- constructor(args: Omit<_DeleteMessage, "tx" | "createdAt">) {
910
- this.command = args;
911
- }
912
- }
913
-
914
810
  export class LeaveRoom {
915
811
  static readonly commandId = "LeaveRoom" as const;
916
812
  readonly commandId = "LeaveRoom" as const;
@@ -977,6 +873,116 @@ export class SetRoomDescription {
977
873
  }
978
874
  }
979
875
 
876
+ export class BroadcastMessage {
877
+ static readonly commandId = "BroadcastMessage" as const;
878
+ readonly commandId = "BroadcastMessage" as const;
879
+ readonly command: Omit<_BroadcastMessage, "tx" | "createdAt">;
880
+ declare readonly $res: () => BroadcastMessageResult;
881
+
882
+ constructor(args: Omit<_BroadcastMessage, "tx" | "createdAt">) {
883
+ this.command = args;
884
+ }
885
+ }
886
+
887
+ export class DeleteMessageReads {
888
+ static readonly commandId = "DeleteMessageReads" as const;
889
+ readonly commandId = "DeleteMessageReads" as const;
890
+ readonly command: Omit<_DeleteMessageReads, "tx" | "createdAt">;
891
+ declare readonly $res: () => DeleteMessageReadsResult;
892
+
893
+ constructor(args: Omit<_DeleteMessageReads, "tx" | "createdAt">) {
894
+ this.command = args;
895
+ }
896
+ }
897
+
898
+ export class DeleteMessageRead {
899
+ static readonly commandId = "DeleteMessageRead" as const;
900
+ readonly commandId = "DeleteMessageRead" as const;
901
+ readonly command: Omit<_DeleteMessageRead, "tx" | "createdAt">;
902
+ declare readonly $res: () => DeleteMessageReadResult;
903
+
904
+ constructor(args: Omit<_DeleteMessageRead, "tx" | "createdAt">) {
905
+ this.command = args;
906
+ }
907
+ }
908
+
909
+ export class NotifyChannel {
910
+ static readonly commandId = "NotifyChannel" as const;
911
+ readonly commandId = "NotifyChannel" as const;
912
+ readonly command: Omit<_NotifyChannel, "tx" | "createdAt">;
913
+ declare readonly $res: () => void;
914
+
915
+ constructor(args: Omit<_NotifyChannel, "tx" | "createdAt">) {
916
+ this.command = args;
917
+ }
918
+ }
919
+
920
+ export class DeleteRoomMembers {
921
+ static readonly commandId = "DeleteRoomMembers" as const;
922
+ readonly commandId = "DeleteRoomMembers" as const;
923
+ readonly command: Omit<_DeleteRoomMembers, "tx" | "createdAt">;
924
+ declare readonly $res: () => DeleteRoomMembersResult;
925
+
926
+ constructor(args: Omit<_DeleteRoomMembers, "tx" | "createdAt">) {
927
+ this.command = args;
928
+ }
929
+ }
930
+
931
+ export class DeleteRoomMember {
932
+ static readonly commandId = "DeleteRoomMember" as const;
933
+ readonly commandId = "DeleteRoomMember" as const;
934
+ readonly command: Omit<_DeleteRoomMember, "tx" | "createdAt">;
935
+ declare readonly $res: () => DeleteRoomMemberResult;
936
+
937
+ constructor(args: Omit<_DeleteRoomMember, "tx" | "createdAt">) {
938
+ this.command = args;
939
+ }
940
+ }
941
+
942
+ export class DeleteMessages {
943
+ static readonly commandId = "DeleteMessages" as const;
944
+ readonly commandId = "DeleteMessages" as const;
945
+ readonly command: Omit<_DeleteMessages, "tx" | "createdAt">;
946
+ declare readonly $res: () => DeleteMessagesResult;
947
+
948
+ constructor(args: Omit<_DeleteMessages, "tx" | "createdAt">) {
949
+ this.command = args;
950
+ }
951
+ }
952
+
953
+ export class DeleteMessage {
954
+ static readonly commandId = "DeleteMessage" as const;
955
+ readonly commandId = "DeleteMessage" as const;
956
+ readonly command: Omit<_DeleteMessage, "tx" | "createdAt">;
957
+ declare readonly $res: () => DeleteMessageResult;
958
+
959
+ constructor(args: Omit<_DeleteMessage, "tx" | "createdAt">) {
960
+ this.command = args;
961
+ }
962
+ }
963
+
964
+ export class ReadMessages {
965
+ static readonly commandId = "ReadMessages" as const;
966
+ readonly commandId = "ReadMessages" as const;
967
+ readonly command: Omit<_ReadMessages, "tx" | "createdAt">;
968
+ declare readonly $res: () => ReadMessagesResult;
969
+
970
+ constructor(args: Omit<_ReadMessages, "tx" | "createdAt">) {
971
+ this.command = args;
972
+ }
973
+ }
974
+
975
+ export class SendMessage {
976
+ static readonly commandId = "SendMessage" as const;
977
+ readonly commandId = "SendMessage" as const;
978
+ readonly command: Omit<_SendMessage, "tx" | "createdAt">;
979
+ declare readonly $res: () => SendMessageResult;
980
+
981
+ constructor(args: Omit<_SendMessage, "tx" | "createdAt">) {
982
+ this.command = args;
983
+ }
984
+ }
985
+
980
986
  export class DeleteSessionNicknames {
981
987
  static readonly commandId = "DeleteSessionNicknames" as const;
982
988
  readonly commandId = "DeleteSessionNicknames" as const;
@@ -999,17 +1005,6 @@ export class DeleteSessionNickname {
999
1005
  }
1000
1006
  }
1001
1007
 
1002
- export class ReadMessages {
1003
- static readonly commandId = "ReadMessages" as const;
1004
- readonly commandId = "ReadMessages" as const;
1005
- readonly command: Omit<_ReadMessages, "tx" | "createdAt">;
1006
- declare readonly $res: () => ReadMessagesResult;
1007
-
1008
- constructor(args: Omit<_ReadMessages, "tx" | "createdAt">) {
1009
- this.command = args;
1010
- }
1011
- }
1012
-
1013
1008
  export class AckMessages {
1014
1009
  static readonly commandId = "AckMessages" as const;
1015
1010
  readonly commandId = "AckMessages" as const;
@@ -1023,11 +1018,11 @@ export class AckMessages {
1023
1018
 
1024
1019
  // Item constructors
1025
1020
  export const items = {
1021
+ Session: (args: Session) => ({ item: args, itemType: "Session" }),
1022
+ Room: (args: Room) => ({ item: args, itemType: "Room" }),
1026
1023
  MessageRead: (args: MessageRead) => ({ item: args, itemType: "MessageRead" }),
1027
1024
  RoomMember: (args: RoomMember) => ({ item: args, itemType: "RoomMember" }),
1028
- Session: (args: Session) => ({ item: args, itemType: "Session" }),
1029
1025
  Message: (args: Message) => ({ item: args, itemType: "Message" }),
1030
- Room: (args: Room) => ({ item: args, itemType: "Room" }),
1031
1026
  SessionNickname: (args: SessionNickname) => ({ item: args, itemType: "SessionNickname" }),
1032
1027
  };
1033
1028
 
package/src/index.ts CHANGED
@@ -25,6 +25,7 @@ import { Type } from "typebox";
25
25
  import { MarshalDaemon } from "./daemon.ts";
26
26
  import { resolveIdentity, type Identity } from "./identity.ts";
27
27
  import type { NotifyChannelMeta, SessionItem } from "./entities.ts";
28
+ import { shouldRegisterPrimeAgentSession } from "./runtime.ts";
28
29
 
29
30
  const DEFAULT_ADDRESS = "ws://localhost:6155";
30
31
 
@@ -218,6 +219,15 @@ async function init(pi: ExtensionAPI) {
218
219
  }
219
220
 
220
221
  pi.on("session_start", async (_event, ctx) => {
222
+ // Prime Agent loads extensions for RLM children too. The persisted header's
223
+ // RLM depth is the canonical distinction; parentSession alone is not enough
224
+ // because ordinary top-level forks also have a parent.
225
+ const header = ctx.sessionManager.getHeader() as { rlmDepth?: unknown } | null;
226
+ if (!shouldRegisterPrimeAgentSession(header)) {
227
+ log("RLM sub-agent detected; skipping Marshal session registration");
228
+ return;
229
+ }
230
+
221
231
  sessionCtx = ctx;
222
232
  sessionId = ctx.sessionManager.getSessionId();
223
233
 
@@ -309,6 +319,10 @@ async function init(pi: ExtensionAPI) {
309
319
  // ── Per-turn context injection ─────────────────────────────────────────
310
320
 
311
321
  pi.on("before_agent_start", async (event, _ctx) => {
322
+ // A skipped RLM child has no Marshal identity. Do not tell it that it is
323
+ // connected or inject any coordination context intended for its parent.
324
+ if (!sessionId) return;
325
+
312
326
  const result: { systemPrompt?: string; message?: { customType: string; content: string; display: boolean } } = {};
313
327
 
314
328
  // Add marshal system prompt context (once per turn, before the LLM call).
package/src/runtime.ts ADDED
@@ -0,0 +1,19 @@
1
+ /** The small part of Prime Agent's session header used for registration. */
2
+ export interface PrimeAgentSessionHeader {
3
+ rlmDepth?: unknown;
4
+ [key: string]: unknown;
5
+ }
6
+
7
+ function isPositiveIntegerDepth(value: unknown): boolean {
8
+ return typeof value === "number" && Number.isInteger(value) && value > 0;
9
+ }
10
+
11
+ /** Return whether a canonical Prime Agent session depth belongs to an RLM child. */
12
+ export function isPrimeAgentSubagent(rlmDepth: unknown): boolean {
13
+ return isPositiveIntegerDepth(rlmDepth);
14
+ }
15
+
16
+ /** Public-API guard for the session_start registration boundary. */
17
+ export function shouldRegisterPrimeAgentSession(header: PrimeAgentSessionHeader | null): boolean {
18
+ return !isPrimeAgentSubagent(header?.rlmDepth);
19
+ }
@@ -1,10 +0,0 @@
1
- // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
-
3
- /**
4
- * Start CPU sampling of this server process.
5
- */
6
- export type StartProfile = {
7
- /**
8
- * Sampling frequency in Hz. Defaults to 99 when omitted.
9
- */
10
- frequencyHz: number | null, };
@@ -1,7 +0,0 @@
1
- // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
-
3
- export type StartProfileArgs = {
4
- /**
5
- * Sampling frequency in Hz. Defaults to 99 when omitted.
6
- */
7
- frequencyHz: number | null, };
@@ -1,6 +0,0 @@
1
- // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
-
3
- /**
4
- * Stop CPU sampling and return the collected profile.
5
- */
6
- export type StopProfile = Record<string, never>;
@@ -1,3 +0,0 @@
1
- // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
-
3
- export type StopProfileArgs = Record<string, never>;
@@ -1,14 +0,0 @@
1
- // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
-
3
- /**
4
- * Result of `StopProfile`. `folded` is the agent-readable primary artifact.
5
- */
6
- export type StopProfileOutput = {
7
- /**
8
- * Collapsed stacks, one per line: `root;child;leaf <count>`. Sortable/greppable.
9
- */
10
- folded: string,
11
- /**
12
- * Absolute path to a flamegraph `.svg` written to disk for humans (if writable).
13
- */
14
- svgPath: string | null, sampleCount: number, durationMs: bigint, frequencyHz: number, };