@agentshouse/app-bridge 0.1.0-cdd09f466ab58 → 0.1.0-cdf1bbaf17a3f

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 (44) hide show
  1. package/README.md +5 -5
  2. package/dist/calls.d.ts +40 -347
  3. package/dist/index.d.ts +23 -15
  4. package/dist/mdmodel/condition.d.ts +9 -3
  5. package/dist/mdmodel/definition.d.ts +1 -0
  6. package/dist/mdmodel/index.d.ts +3 -3
  7. package/dist/mdmodel/types.d.ts +1 -0
  8. package/dist/mdruntime/adapter.d.ts +39 -40
  9. package/dist/mdruntime/binary.d.ts +0 -5
  10. package/dist/mdruntime/change-set.d.ts +1 -7
  11. package/dist/mdruntime/client.d.ts +6 -7
  12. package/dist/mdruntime/collection.d.ts +5 -3
  13. package/dist/mdruntime/compile.d.ts +6 -1
  14. package/dist/mdruntime/connection.d.ts +8 -7
  15. package/dist/mdruntime/conversation.d.ts +7 -5
  16. package/dist/mdruntime/durability.d.ts +1 -5
  17. package/dist/mdruntime/fulltext.d.ts +26 -0
  18. package/dist/mdruntime/identity.d.ts +6 -0
  19. package/dist/mdruntime/media.d.ts +7 -0
  20. package/dist/mdruntime/messages.d.ts +27 -0
  21. package/dist/mdruntime/model.d.ts +6 -1
  22. package/dist/mdruntime/observation.d.ts +1 -0
  23. package/dist/mdruntime/outcome.d.ts +13 -6
  24. package/dist/mdruntime/query.d.ts +10 -1
  25. package/dist/mdruntime/reach.d.ts +8 -3
  26. package/dist/mdruntime/readiness.d.ts +14 -15
  27. package/dist/mdruntime/recovery.d.ts +1 -0
  28. package/dist/mdruntime/replica.d.ts +5 -5
  29. package/dist/mdruntime/room-draft.d.ts +18 -2
  30. package/dist/mdruntime/save.d.ts +2 -0
  31. package/dist/mdruntime/search.d.ts +11 -43
  32. package/dist/mdruntime/status.d.ts +4 -3
  33. package/dist/mdruntime/store.d.ts +23 -58
  34. package/dist/mdruntime/stored.d.ts +10 -23
  35. package/dist/mdruntime/tables.d.ts +51 -46
  36. package/dist/mdruntime/wire.d.ts +5 -5
  37. package/dist/test-host.d.ts +7 -4
  38. package/dist/test-host.js +17 -27
  39. package/docs/families.md +50 -49
  40. package/package.json +8 -3
  41. package/dist/mdruntime/file.d.ts +0 -11
  42. package/dist/mdruntime/shared.d.ts +0 -15
  43. package/dist/mdruntime/transfer.d.ts +0 -9
  44. package/dist/mdruntime/turn.d.ts +0 -8
package/README.md CHANGED
@@ -3,16 +3,16 @@
3
3
  The types of the agents.house App bridge, an accessor and an in-page test host.
4
4
  House builds the bridge object in every App it serves and hands it to the page
5
5
  before the App's own scripts run; `houseBridge()` returns that object, so an App
6
- carries no bridge code of its own. It carries eleven families: navigation,
6
+ carries no bridge code of its own. It carries twelve families: navigation,
7
7
  ceremonies, installation, notifications, status, Site image reads, App release
8
- code, external calls, App messages and App and Site screenshot reads.
8
+ code, external calls, App messages, App and Site screenshot reads and the Chat.
9
9
  [docs/families.md](docs/families.md) describes each and the test host.
10
10
 
11
11
  The bridge carries no credential handling and no Runtime family. House builds
12
- the MD Runtime client into the page beside the bridge, and `bridge.runtime`
13
- resolves to that client, so the App imports and constructs none.
12
+ the MD Runtime client into the page beside the bridge and serves it the Chat, so
13
+ the App imports, constructs and bundles neither: `bridge.runtime` resolves to the client.
14
14
 
15
- House's `find_command` "App" is the guide to building an App or a Site.
15
+ House's guide to building an App is its Guide's `apps/` pages, which `open_guide` opens.
16
16
 
17
17
  ## Use
18
18
 
package/dist/calls.d.ts CHANGED
@@ -16,18 +16,18 @@ export interface HouseMethods {
16
16
  readonly user_name: string;
17
17
  readonly entries: readonly {
18
18
  readonly namespace: string;
19
- readonly read: 'mcp' | 'online' | 'local' | null;
19
+ readonly level: 'search' | 'open' | 'keep' | null;
20
20
  readonly operations: readonly ('write' | 'delete' | 'export' | 'manageAccess')[];
21
21
  readonly sources: readonly {
22
22
  readonly kind: 'direct' | 'inherited';
23
23
  readonly namespace: string;
24
- readonly read: 'mcp' | 'online' | 'local' | null;
24
+ readonly level: 'search' | 'open' | 'keep' | null;
25
25
  readonly operations: readonly ('write' | 'delete' | 'export' | 'manageAccess')[];
26
26
  }[];
27
27
  }[];
28
28
  readonly direct: readonly {
29
29
  readonly namespace: string;
30
- readonly read: 'mcp' | 'online' | 'local' | null;
30
+ readonly level: 'search' | 'open' | 'keep' | null;
31
31
  readonly operations: readonly ('write' | 'delete' | 'export' | 'manageAccess')[];
32
32
  }[];
33
33
  readonly admitted_at: string | null;
@@ -64,19 +64,6 @@ export interface HouseMethods {
64
64
  readonly url: string;
65
65
  };
66
66
  };
67
- readonly 'conversation.attach': {
68
- readonly params: {
69
- readonly blob: Blob;
70
- readonly byteLength: number;
71
- readonly contentHash: string;
72
- readonly mediaType: string;
73
- readonly name: string;
74
- readonly room: string;
75
- };
76
- readonly result: {
77
- readonly path: string;
78
- };
79
- };
80
67
  readonly 'conversation.create': {
81
68
  readonly params: {
82
69
  readonly agent_id: string;
@@ -240,7 +227,7 @@ export interface HouseMethods {
240
227
  readonly params: Readonly<Record<string, never>>;
241
228
  readonly result: {
242
229
  readonly features: readonly {
243
- readonly feature: 'microphone' | 'camera' | 'geolocation' | 'clipboard-read' | 'notifications';
230
+ readonly feature: string;
244
231
  readonly allowed: boolean;
245
232
  }[];
246
233
  };
@@ -359,7 +346,8 @@ export interface HouseMethods {
359
346
  readonly owner: boolean;
360
347
  readonly email?: string;
361
348
  readonly since: string | null;
362
- readonly access?: 'owner' | 'manage' | 'edit' | 'read';
349
+ readonly access?: 'owner' | 'manage' | 'edit' | 'keep' | 'open' | 'search';
350
+ readonly only_while_online?: true;
363
351
  readonly member_document: string | null;
364
352
  readonly schema_roles?: readonly string[];
365
353
  }[];
@@ -414,48 +402,19 @@ export interface HouseMethods {
414
402
  readonly 'record.list': {
415
403
  readonly params: {
416
404
  readonly room_ref: string;
417
- readonly record?: string;
418
405
  readonly cursor?: string;
419
406
  readonly limit?: number;
420
407
  readonly order?: 'asc' | 'desc';
421
408
  };
422
409
  readonly result: {
423
- readonly attachments: readonly {
424
- readonly bytes: number;
425
- readonly file: string;
426
- readonly media_type: string | null;
427
- readonly name: string | null;
428
- readonly referrer: {
429
- readonly record: string;
430
- readonly room_ref: string;
431
- };
432
- readonly sha256: string;
433
- }[];
434
- readonly body: string | null;
435
- readonly claimed: unknown;
436
- readonly created_at: string;
437
- readonly record: string;
438
- readonly ref: string;
439
- } | {
440
- readonly next_cursor?: string;
441
410
  readonly records: readonly {
442
- readonly attachments: readonly {
443
- readonly bytes: number;
444
- readonly file: string;
445
- readonly media_type: string | null;
446
- readonly name: string | null;
447
- readonly referrer: {
448
- readonly record: string;
449
- readonly room_ref: string;
450
- };
451
- readonly sha256: string;
452
- }[];
453
- readonly body: string | null;
454
- readonly claimed: unknown;
455
- readonly created_at: string;
456
411
  readonly record: string;
457
412
  readonly ref: string;
413
+ readonly created_at: string;
414
+ readonly body: string | null;
415
+ readonly claimed: unknown;
458
416
  }[];
417
+ readonly next_cursor?: string;
459
418
  };
460
419
  };
461
420
  readonly 'relay.read': {
@@ -535,11 +494,7 @@ export interface HouseMethods {
535
494
  readonly reach: 'selected';
536
495
  readonly refs: readonly string[];
537
496
  };
538
- readonly accounts?: readonly {
539
- readonly id: string;
540
- readonly name: string;
541
- readonly origin: string;
542
- }[];
497
+ readonly key_origins?: readonly string[];
543
498
  readonly url: string;
544
499
  }[];
545
500
  };
@@ -652,303 +607,17 @@ export interface HouseMethods {
652
607
  readonly submitted: true;
653
608
  };
654
609
  };
655
- readonly 'trigger.list': {
656
- readonly params: {
657
- readonly room_refs: readonly string[];
658
- };
659
- readonly result: {
660
- readonly rooms: readonly {
661
- readonly room_ref: string;
662
- readonly triggers: readonly {
663
- readonly trigger: string;
664
- readonly creator: {
665
- readonly user: string;
666
- readonly name: string;
667
- };
668
- readonly description: string;
669
- readonly condition: {
670
- readonly on: 'documents';
671
- readonly scope: {
672
- readonly type: string;
673
- } | {
674
- readonly folder: string;
675
- } | {
676
- readonly document: string;
677
- };
678
- readonly mode: 'starts_matching';
679
- readonly new_documents: boolean;
680
- readonly match: {
681
- readonly all: readonly unknown[];
682
- } | {
683
- readonly any: readonly unknown[];
684
- } | {
685
- readonly not: unknown;
686
- } | {
687
- readonly path: string;
688
- readonly eq: string | number | boolean;
689
- } | {
690
- readonly path: string;
691
- readonly in: readonly (string | number | boolean)[];
692
- } | {
693
- readonly path: string;
694
- readonly exists: boolean;
695
- } | {
696
- readonly path: string;
697
- readonly contains: string | number | boolean;
698
- } | {
699
- readonly path: string;
700
- readonly gt: number | string;
701
- } | {
702
- readonly path: string;
703
- readonly gte: number | string;
704
- } | {
705
- readonly path: string;
706
- readonly lt: number | string;
707
- } | {
708
- readonly path: string;
709
- readonly lte: number | string;
710
- } | {
711
- readonly path: string;
712
- readonly prefix: string;
713
- };
714
- readonly by?: {
715
- readonly all: readonly unknown[];
716
- } | {
717
- readonly any: readonly unknown[];
718
- } | {
719
- readonly not: unknown;
720
- } | {
721
- readonly path: string;
722
- readonly eq: string | number | boolean;
723
- } | {
724
- readonly path: string;
725
- readonly in: readonly (string | number | boolean)[];
726
- } | {
727
- readonly path: string;
728
- readonly exists: boolean;
729
- } | {
730
- readonly path: string;
731
- readonly contains: string | number | boolean;
732
- } | {
733
- readonly path: string;
734
- readonly gt: number | string;
735
- } | {
736
- readonly path: string;
737
- readonly gte: number | string;
738
- } | {
739
- readonly path: string;
740
- readonly lt: number | string;
741
- } | {
742
- readonly path: string;
743
- readonly lte: number | string;
744
- } | {
745
- readonly path: string;
746
- readonly prefix: string;
747
- };
748
- readonly moved_between_rooms?: boolean;
749
- } | {
750
- readonly on: 'documents';
751
- readonly scope: {
752
- readonly type: string;
753
- } | {
754
- readonly folder: string;
755
- } | {
756
- readonly document: string;
757
- };
758
- readonly mode: 'field_changes';
759
- readonly field: string;
760
- readonly from?: readonly (string | number | boolean)[] | 'new';
761
- readonly to?: readonly (string | number | boolean)[] | 'deleted';
762
- readonly match?: {
763
- readonly all: readonly unknown[];
764
- } | {
765
- readonly any: readonly unknown[];
766
- } | {
767
- readonly not: unknown;
768
- } | {
769
- readonly path: string;
770
- readonly eq: string | number | boolean;
771
- } | {
772
- readonly path: string;
773
- readonly in: readonly (string | number | boolean)[];
774
- } | {
775
- readonly path: string;
776
- readonly exists: boolean;
777
- } | {
778
- readonly path: string;
779
- readonly contains: string | number | boolean;
780
- } | {
781
- readonly path: string;
782
- readonly gt: number | string;
783
- } | {
784
- readonly path: string;
785
- readonly gte: number | string;
786
- } | {
787
- readonly path: string;
788
- readonly lt: number | string;
789
- } | {
790
- readonly path: string;
791
- readonly lte: number | string;
792
- } | {
793
- readonly path: string;
794
- readonly prefix: string;
795
- };
796
- readonly by?: {
797
- readonly all: readonly unknown[];
798
- } | {
799
- readonly any: readonly unknown[];
800
- } | {
801
- readonly not: unknown;
802
- } | {
803
- readonly path: string;
804
- readonly eq: string | number | boolean;
805
- } | {
806
- readonly path: string;
807
- readonly in: readonly (string | number | boolean)[];
808
- } | {
809
- readonly path: string;
810
- readonly exists: boolean;
811
- } | {
812
- readonly path: string;
813
- readonly contains: string | number | boolean;
814
- } | {
815
- readonly path: string;
816
- readonly gt: number | string;
817
- } | {
818
- readonly path: string;
819
- readonly gte: number | string;
820
- } | {
821
- readonly path: string;
822
- readonly lt: number | string;
823
- } | {
824
- readonly path: string;
825
- readonly lte: number | string;
826
- } | {
827
- readonly path: string;
828
- readonly prefix: string;
829
- };
830
- readonly moved_between_rooms?: boolean;
831
- } | {
832
- readonly on: 'items';
833
- readonly source?: string;
834
- readonly address?: string;
835
- readonly match?: {
836
- readonly all: readonly unknown[];
837
- } | {
838
- readonly any: readonly unknown[];
839
- } | {
840
- readonly not: unknown;
841
- } | {
842
- readonly path: string;
843
- readonly eq: string | number | boolean;
844
- } | {
845
- readonly path: string;
846
- readonly in: readonly (string | number | boolean)[];
847
- } | {
848
- readonly path: string;
849
- readonly exists: boolean;
850
- } | {
851
- readonly path: string;
852
- readonly contains: string | number | boolean;
853
- } | {
854
- readonly path: string;
855
- readonly gt: number | string;
856
- } | {
857
- readonly path: string;
858
- readonly gte: number | string;
859
- } | {
860
- readonly path: string;
861
- readonly lt: number | string;
862
- } | {
863
- readonly path: string;
864
- readonly lte: number | string;
865
- } | {
866
- readonly path: string;
867
- readonly prefix: string;
868
- };
869
- } | {
870
- readonly on: 'clock';
871
- readonly cron: string;
872
- readonly time_zone: string;
873
- } | {
874
- readonly on: 'clock';
875
- readonly scope: {
876
- readonly type: string;
877
- };
878
- readonly date: string;
879
- readonly days: number;
880
- readonly at: string;
881
- readonly time_zone: string;
882
- readonly match?: {
883
- readonly all: readonly unknown[];
884
- } | {
885
- readonly any: readonly unknown[];
886
- } | {
887
- readonly not: unknown;
888
- } | {
889
- readonly path: string;
890
- readonly eq: string | number | boolean;
891
- } | {
892
- readonly path: string;
893
- readonly in: readonly (string | number | boolean)[];
894
- } | {
895
- readonly path: string;
896
- readonly exists: boolean;
897
- } | {
898
- readonly path: string;
899
- readonly contains: string | number | boolean;
900
- } | {
901
- readonly path: string;
902
- readonly gt: number | string;
903
- } | {
904
- readonly path: string;
905
- readonly gte: number | string;
906
- } | {
907
- readonly path: string;
908
- readonly lt: number | string;
909
- } | {
910
- readonly path: string;
911
- readonly lte: number | string;
912
- } | {
913
- readonly path: string;
914
- readonly prefix: string;
915
- };
916
- };
917
- readonly enabled: boolean;
918
- readonly paused_by?: 'types';
919
- readonly actions: readonly ({
920
- readonly kind: 'notify';
921
- readonly enabled: boolean;
922
- readonly title: string;
923
- readonly text: string;
924
- readonly to: {
925
- readonly users: readonly string[];
926
- readonly fields: readonly string[];
927
- readonly roles: readonly string[];
928
- };
929
- readonly holds: boolean;
930
- } | {
931
- readonly kind: 'routine';
932
- readonly enabled: boolean;
933
- readonly access?: string;
934
- readonly payload: string;
935
- readonly holds: boolean;
936
- })[];
937
- }[];
938
- readonly url: string;
939
- }[];
940
- };
941
- };
942
- readonly 'triggerOccurrence.list': {
610
+ readonly 'triggerEvent.list': {
943
611
  readonly params: {
944
612
  readonly room_ref: string;
945
613
  };
946
614
  readonly result: {
947
- readonly occurrences: readonly {
615
+ readonly events: readonly {
948
616
  readonly trigger: string;
949
617
  readonly path?: string;
950
618
  readonly moment?: string;
951
619
  readonly missed?: 'skipped' | 'failed';
620
+ readonly code?: 'cap_reached';
952
621
  readonly created_at: string;
953
622
  readonly actions: readonly ({
954
623
  readonly position: number;
@@ -957,6 +626,7 @@ export interface HouseMethods {
957
626
  } | {
958
627
  readonly position: number;
959
628
  readonly outcome: 'no_target';
629
+ readonly code: 'no_recipient' | 'routine_access_not_found' | 'routine_retired' | 'target_agent_unavailable' | 'app_not_found' | 'app_function_not_found';
960
630
  } | {
961
631
  readonly position: number;
962
632
  readonly outcome: 'requested';
@@ -1006,19 +676,42 @@ export interface HouseMethods {
1006
676
  readonly position: number;
1007
677
  readonly outcome: 'refused';
1008
678
  readonly code: 'cap_reached';
1009
- readonly cap: 'address_submissions' | 'writes' | 'push_addresses' | 'push_deliveries' | 'external_accounts' | 'shared_schemas' | 'export_starts' | 'share_creations' | 'share_room_creations' | 'live_shares' | 'ownership_offers' | 'site_rooms' | 'slot_rooms' | 'room_triggers' | 'app_sockets' | 'kit_connections' | 'open_uploads' | 'waiting_web_wizards' | 'folder_subscriptions';
679
+ readonly cap: 'address_submissions' | 'writes' | 'push_addresses' | 'push_deliveries' | 'service_keys' | 'shared_schemas' | 'export_starts' | 'share_creations' | 'share_room_creations' | 'live_shares' | 'ownership_offers' | 'site_rooms' | 'slot_rooms' | 'room_triggers' | 'app_sockets' | 'kit_connections' | 'open_uploads' | 'waiting_web_wizards' | 'environment_functions' | 'folder_subscriptions';
1010
680
  } | {
1011
681
  readonly position: number;
1012
682
  readonly outcome: 'refused';
1013
683
  readonly code: 'cap_reached';
1014
- readonly cap: 'address_submissions' | 'writes' | 'push_addresses' | 'push_deliveries' | 'external_accounts' | 'shared_schemas' | 'export_starts' | 'share_creations' | 'share_room_creations' | 'live_shares' | 'ownership_offers' | 'site_rooms' | 'slot_rooms' | 'room_triggers' | 'app_sockets' | 'kit_connections' | 'open_uploads' | 'waiting_web_wizards' | 'folder_subscriptions';
684
+ readonly cap: 'address_submissions' | 'writes' | 'push_addresses' | 'push_deliveries' | 'service_keys' | 'shared_schemas' | 'export_starts' | 'share_creations' | 'share_room_creations' | 'live_shares' | 'ownership_offers' | 'site_rooms' | 'slot_rooms' | 'room_triggers' | 'app_sockets' | 'kit_connections' | 'open_uploads' | 'waiting_web_wizards' | 'environment_functions' | 'folder_subscriptions';
1015
685
  readonly retry_at: string;
1016
686
  } | {
1017
687
  readonly position: number;
1018
688
  readonly outcome: 'withdrawn';
689
+ readonly code: 'agent_unavailable';
690
+ } | {
691
+ readonly position: number;
692
+ readonly outcome: 'failed';
693
+ readonly code: 'internal_error' | 'routine_request_not_started';
1019
694
  } | {
1020
695
  readonly position: number;
1021
696
  readonly outcome: 'failed';
697
+ readonly code: 'function_failed';
698
+ readonly error: string;
699
+ readonly release: string;
700
+ readonly final: true;
701
+ } | {
702
+ readonly position: number;
703
+ readonly outcome: 'failed';
704
+ readonly code: 'function_not_started';
705
+ readonly tries: number;
706
+ readonly final?: true;
707
+ } | {
708
+ readonly position: number;
709
+ readonly outcome: 'running';
710
+ readonly release: string;
711
+ } | {
712
+ readonly position: number;
713
+ readonly outcome: 'ran';
714
+ readonly release: string;
1022
715
  } | {
1023
716
  readonly position: number;
1024
717
  readonly outcome: 'waiting';
package/dist/index.d.ts CHANGED
@@ -21,7 +21,7 @@ export interface HouseCredentialState {
21
21
  readonly state: Open<'none' | 'held' | 'rejected'>;
22
22
  readonly expiresAt: number | null;
23
23
  }
24
- export type HouseDatabaseFailure = 'unsupported' | 'damaged' | 'update-required';
24
+ export type HouseDatabaseFailure = 'unsupported' | 'damaged';
25
25
  export type HouseAnalyticsChoice = 'accept' | 'decline';
26
26
  export interface HouseAnalytics {
27
27
  readonly measures: boolean;
@@ -80,8 +80,6 @@ export interface HouseExternalRequest {
80
80
  readonly headers?: Readonly<Record<string, string>>;
81
81
  readonly body?: string;
82
82
  readonly body_base64?: string;
83
- readonly account?: string;
84
- readonly slot?: string;
85
83
  readonly room_ref?: string;
86
84
  }
87
85
  export type HouseExternalAnswer = {
@@ -120,22 +118,32 @@ export interface HouseBrowserRefused extends Error {
120
118
  readonly code: string;
121
119
  readonly retryable: boolean;
122
120
  }
123
- export interface HouseTrialWithheld {
124
- readonly code: Open<'house_trial_withheld'>;
125
- readonly retryable: true;
126
- }
127
- export type HouseTask = unknown;
128
- export type HouseActivation = Open<'committed' | 'abandoned'>;
129
121
  export interface HouseCooperation {
130
- checkpoint(): Promise<void> | void;
131
- persist(): Promise<void> | void;
132
- capture(): Promise<HouseTask> | HouseTask;
133
- restore(task: HouseTask | null): Promise<void> | void;
134
- ready(): Promise<boolean> | boolean;
135
- settle(activation: HouseActivation): void;
122
+ placed(): Promise<void> | void;
123
+ }
124
+ export type HouseChatWidth = 'full' | '3/4' | '1/2' | '1/3';
125
+ export interface HouseChatOpened {
126
+ readonly conversation: string | null;
127
+ readonly agent: string | null;
128
+ }
129
+ export interface HouseChatOptions {
130
+ readonly conversation?: string | null;
131
+ readonly agent?: string | null;
132
+ readonly showChats?: boolean;
133
+ readonly width?: HouseChatWidth;
134
+ readonly onOpen?: (opened: HouseChatOpened) => void;
135
+ readonly onLink?: (href: string) => void;
136
+ }
137
+ export interface HouseMountedChat {
138
+ update(options: HouseChatOptions): void;
139
+ unmount(): void;
140
+ }
141
+ export interface HouseChat {
142
+ mount(element: object, options?: HouseChatOptions): Promise<HouseMountedChat>;
136
143
  }
137
144
  export interface HouseBridge {
138
145
  readonly runtime: Promise<HouseRuntime>;
146
+ readonly chat: HouseChat;
139
147
  address(): string | null;
140
148
  onAddress(listener: (address: string) => void): () => void;
141
149
  push(address: string): Promise<string>;
@@ -76,7 +76,11 @@ export type DateCondition = {
76
76
  readonly time_zone: string;
77
77
  readonly match?: ConditionTest;
78
78
  };
79
- export type Condition = DocumentCondition | ItemCondition | CronCondition | DateCondition;
79
+ export type NotificationCondition = {
80
+ readonly on: 'notifications';
81
+ readonly match?: ConditionTest;
82
+ };
83
+ export type Condition = DocumentCondition | ItemCondition | CronCondition | DateCondition | NotificationCondition;
80
84
  export type FactKind = 'string' | 'number' | 'boolean' | 'date' | 'time' | 'enum' | 'reference';
81
85
  type Scalar = string | number | boolean;
82
86
  export type Fact = {
@@ -103,11 +107,13 @@ export type DocumentFacts = {
103
107
  readonly fields: Readonly<Record<string, Fact>>;
104
108
  readonly sections: readonly string[];
105
109
  };
106
- export declare const WRITE_DOORS: readonly ['browser', 'agent', 'client'];
110
+ export declare const TEXT_FIELD = "/text";
111
+ export declare const WRITE_DOORS: readonly ['browser', 'agent', 'client', 'function'];
107
112
  export type WriteDoor = (typeof WRITE_DOORS)[number];
108
113
  export type Actor = {
109
114
  readonly user?: string;
110
115
  readonly site?: string;
116
+ readonly app?: string;
111
117
  readonly door?: WriteDoor;
112
118
  };
113
119
  export type DocumentEvent = {
@@ -121,7 +127,6 @@ export type ItemFacts = {
121
127
  readonly delivery: string;
122
128
  readonly source: string | null;
123
129
  readonly address: string | null;
124
- readonly has_attachment: boolean;
125
130
  readonly container: string | null;
126
131
  readonly author: string | null;
127
132
  readonly headers: Readonly<Record<string, string>>;
@@ -158,4 +163,5 @@ export declare function members(document: DocumentFacts, path: string): readonly
158
163
  export declare function holds(test: ConditionTest, document: DocumentFacts): Truth;
159
164
  export declare function fires(condition: DocumentCondition, event: DocumentEvent): boolean;
160
165
  export declare function itemFires(condition: ItemCondition, item: ItemFacts): boolean;
166
+ export declare function notificationFires(condition: NotificationCondition, notification: DocumentFacts): boolean;
161
167
  export {};
@@ -60,6 +60,7 @@ export declare const JSON_TYPES: readonly JsonType[];
60
60
  export declare const BUILT_IN_TYPE = "any";
61
61
  export declare const ATTACHMENT = "attachment";
62
62
  export declare const ARRAY_INDEX: RegExp;
63
+ export declare const JSON_POINTER: RegExp;
63
64
  export declare function escapePointer(key: string): string;
64
65
  export declare function pointerSegments(pointer: string): string[];
65
66
  export declare function refTarget(reference: string, defs: Readonly<Record<string, unknown>>): {
@@ -1,5 +1,5 @@
1
- export { ACTOR_PATHS, actorOperators, changeFields, CONDITION_OPERATORS, dated, datePointers, DOCUMENT_PATHS, factKind, facts, fires, holds, instant, ITEM_PATHS, itemFires, itemKind, itemOperators, memberPointers, members, pointed, prosePaths, testOperators, valuedChange, WRITE_DOORS, } from './condition.js';
2
- export type { Actor, Condition, ConditionOperator, ConditionScope, ConditionTest, ConditionValue, CronCondition, DateCondition, DocumentCondition, DocumentEvent, DocumentFacts, Fact, FactKind, ItemCondition, ItemFacts, Resolved, WriteDoor, } from './condition.js';
1
+ export { ACTOR_PATHS, actorOperators, changeFields, CONDITION_OPERATORS, dated, datePointers, DOCUMENT_PATHS, factKind, facts, fires, holds, instant, ITEM_PATHS, itemFires, itemKind, itemOperators, memberPointers, members, notificationFires, pointed, prosePaths, testOperators, TEXT_FIELD, valuedChange, WRITE_DOORS, } from './condition.js';
2
+ export type { Actor, Condition, ConditionOperator, ConditionScope, ConditionTest, ConditionValue, CronCondition, DateCondition, DocumentCondition, DocumentEvent, DocumentFacts, Fact, FactKind, ItemCondition, ItemFacts, NotificationCondition, Resolved, WriteDoor, } from './condition.js';
3
3
  export { headingLines } from './blocks.js';
4
4
  export type { HeadingLine } from './blocks.js';
5
5
  export { divide } from './divide.js';
@@ -10,7 +10,7 @@ export type { RoomTarget } from './paths.js';
10
10
  export { MARKDOWN_SYNTAX_PROFILE } from './profile.js';
11
11
  export { project } from './project.js';
12
12
  export { references } from './references.js';
13
- export { ARRAY_INDEX, ATTACHMENT, crossedFacts, escapePointer, itemFacts, memberFacts, pointerFacts, pointerSegments, } from './definition.js';
13
+ export { ARRAY_INDEX, ATTACHMENT, crossedFacts, escapePointer, itemFacts, JSON_POINTER, memberFacts, pointerFacts, pointerSegments, } from './definition.js';
14
14
  export type { Definition, FieldRules, JsonType, PatternFacts, PointerFacts, RuleValue, SectionSpec, Shape, Transition, ValueFacts, } from './definition.js';
15
15
  export type { ApplyResult, BodyResult, Change, Division, DivisionContext, Document, DocumentCheck, Frontmatter, FrontmatterResult, Library, ModelVerification, Link, ParseResult, Projection, ProjectionContext, Reached, Reference, Refusal, RoomReference, Span, Validation, ValidationContext, ValidationStep, VerifiedModel, } from './types.js';
16
16
  export { assess, bodyRoomLinks, checkDocument, resolves, roomReferences, sectionReferences, validate, validating, verdicts, verify, } from './validate.js';
@@ -2,6 +2,7 @@ import type { Definition } from './definition.js';
2
2
  export type Library = Readonly<Record<string, string>>;
3
3
  export type VerifiedModel = {
4
4
  readonly types: Readonly<Record<string, Definition>>;
5
+ readonly nameable?: readonly string[];
5
6
  };
6
7
  export type ModelVerification = {
7
8
  readonly verdict: 'accept';