holomime 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -287,14 +287,14 @@ declare const therapyDimensionsSchema: z.ZodObject<{
287
287
  self_awareness: number;
288
288
  distress_tolerance: number;
289
289
  attachment_style: "secure" | "anxious" | "avoidant" | "disorganized";
290
- learning_orientation: "growth" | "fixed" | "mixed";
290
+ learning_orientation: "fixed" | "growth" | "mixed";
291
291
  boundary_awareness: number;
292
292
  interpersonal_sensitivity: number;
293
293
  }, {
294
294
  self_awareness: number;
295
295
  distress_tolerance: number;
296
296
  attachment_style: "secure" | "anxious" | "avoidant" | "disorganized";
297
- learning_orientation: "growth" | "fixed" | "mixed";
297
+ learning_orientation: "fixed" | "growth" | "mixed";
298
298
  boundary_awareness: number;
299
299
  interpersonal_sensitivity: number;
300
300
  }>;
@@ -307,14 +307,14 @@ declare const communicationSchema: z.ZodObject<{
307
307
  conflict_approach: z.ZodDefault<z.ZodEnum<["direct_but_kind", "curious_first", "supportive_then_honest", "diplomatic"]>>;
308
308
  uncertainty_handling: z.ZodDefault<z.ZodEnum<["transparent", "confident_transparency", "minimize", "reframe"]>>;
309
309
  }, "strip", z.ZodTypeAny, {
310
- register: "casual_professional" | "formal" | "conversational" | "adaptive";
310
+ register: "adaptive" | "conversational" | "casual_professional" | "formal";
311
311
  output_format: "mixed" | "prose" | "bullets" | "structured";
312
312
  emoji_policy: "never" | "sparingly" | "freely";
313
313
  reasoning_transparency: "hidden" | "on_request" | "always";
314
314
  conflict_approach: "direct_but_kind" | "curious_first" | "supportive_then_honest" | "diplomatic";
315
315
  uncertainty_handling: "transparent" | "confident_transparency" | "minimize" | "reframe";
316
316
  }, {
317
- register?: "casual_professional" | "formal" | "conversational" | "adaptive" | undefined;
317
+ register?: "adaptive" | "conversational" | "casual_professional" | "formal" | undefined;
318
318
  output_format?: "mixed" | "prose" | "bullets" | "structured" | undefined;
319
319
  emoji_policy?: "never" | "sparingly" | "freely" | undefined;
320
320
  reasoning_transparency?: "hidden" | "on_request" | "always" | undefined;
@@ -328,28 +328,68 @@ declare const domainSchema: z.ZodObject<{
328
328
  refuses: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
329
329
  escalation_triggers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
330
330
  hard_limits: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
331
+ physical_safety: z.ZodOptional<z.ZodObject<{
332
+ hard_limits: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
333
+ require_consent_for: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
334
+ collision_response: z.ZodDefault<z.ZodEnum<["stop", "retreat", "freeze"]>>;
335
+ unattended_policy: z.ZodDefault<z.ZodEnum<["idle", "return_home", "shutdown"]>>;
336
+ }, "strip", z.ZodTypeAny, {
337
+ hard_limits: string[];
338
+ require_consent_for: string[];
339
+ collision_response: "stop" | "retreat" | "freeze";
340
+ unattended_policy: "idle" | "return_home" | "shutdown";
341
+ }, {
342
+ hard_limits?: string[] | undefined;
343
+ require_consent_for?: string[] | undefined;
344
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
345
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
346
+ }>>;
331
347
  }, "strip", z.ZodTypeAny, {
348
+ hard_limits: string[];
332
349
  refuses: string[];
333
350
  escalation_triggers: string[];
334
- hard_limits: string[];
351
+ physical_safety?: {
352
+ hard_limits: string[];
353
+ require_consent_for: string[];
354
+ collision_response: "stop" | "retreat" | "freeze";
355
+ unattended_policy: "idle" | "return_home" | "shutdown";
356
+ } | undefined;
335
357
  }, {
358
+ hard_limits?: string[] | undefined;
336
359
  refuses?: string[] | undefined;
337
360
  escalation_triggers?: string[] | undefined;
338
- hard_limits?: string[] | undefined;
361
+ physical_safety?: {
362
+ hard_limits?: string[] | undefined;
363
+ require_consent_for?: string[] | undefined;
364
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
365
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
366
+ } | undefined;
339
367
  }>>;
340
368
  }, "strip", z.ZodTypeAny, {
341
369
  expertise: string[];
342
370
  boundaries: {
371
+ hard_limits: string[];
343
372
  refuses: string[];
344
373
  escalation_triggers: string[];
345
- hard_limits: string[];
374
+ physical_safety?: {
375
+ hard_limits: string[];
376
+ require_consent_for: string[];
377
+ collision_response: "stop" | "retreat" | "freeze";
378
+ unattended_policy: "idle" | "return_home" | "shutdown";
379
+ } | undefined;
346
380
  };
347
381
  }, {
348
382
  expertise?: string[] | undefined;
349
383
  boundaries?: {
384
+ hard_limits?: string[] | undefined;
350
385
  refuses?: string[] | undefined;
351
386
  escalation_triggers?: string[] | undefined;
352
- hard_limits?: string[] | undefined;
387
+ physical_safety?: {
388
+ hard_limits?: string[] | undefined;
389
+ require_consent_for?: string[] | undefined;
390
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
391
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
392
+ } | undefined;
353
393
  } | undefined;
354
394
  }>;
355
395
  type Domain = z.infer<typeof domainSchema>;
@@ -419,7 +459,7 @@ declare const growthSchema: z.ZodObject<{
419
459
  type Growth = z.infer<typeof growthSchema>;
420
460
  declare const providerSchema: z.ZodEnum<["anthropic", "openai", "gemini", "ollama"]>;
421
461
  type Provider = z.infer<typeof providerSchema>;
422
- declare const surfaceSchema: z.ZodEnum<["chat", "email", "code_review", "slack", "api"]>;
462
+ declare const surfaceSchema: z.ZodEnum<["chat", "email", "code_review", "slack", "api", "embodied"]>;
423
463
  type Surface = z.infer<typeof surfaceSchema>;
424
464
  declare const personalitySpecSchema: z.ZodObject<{
425
465
  $schema: z.ZodOptional<z.ZodString>;
@@ -708,14 +748,14 @@ declare const personalitySpecSchema: z.ZodObject<{
708
748
  self_awareness: number;
709
749
  distress_tolerance: number;
710
750
  attachment_style: "secure" | "anxious" | "avoidant" | "disorganized";
711
- learning_orientation: "growth" | "fixed" | "mixed";
751
+ learning_orientation: "fixed" | "growth" | "mixed";
712
752
  boundary_awareness: number;
713
753
  interpersonal_sensitivity: number;
714
754
  }, {
715
755
  self_awareness: number;
716
756
  distress_tolerance: number;
717
757
  attachment_style: "secure" | "anxious" | "avoidant" | "disorganized";
718
- learning_orientation: "growth" | "fixed" | "mixed";
758
+ learning_orientation: "fixed" | "growth" | "mixed";
719
759
  boundary_awareness: number;
720
760
  interpersonal_sensitivity: number;
721
761
  }>;
@@ -727,14 +767,14 @@ declare const personalitySpecSchema: z.ZodObject<{
727
767
  conflict_approach: z.ZodDefault<z.ZodEnum<["direct_but_kind", "curious_first", "supportive_then_honest", "diplomatic"]>>;
728
768
  uncertainty_handling: z.ZodDefault<z.ZodEnum<["transparent", "confident_transparency", "minimize", "reframe"]>>;
729
769
  }, "strip", z.ZodTypeAny, {
730
- register: "casual_professional" | "formal" | "conversational" | "adaptive";
770
+ register: "adaptive" | "conversational" | "casual_professional" | "formal";
731
771
  output_format: "mixed" | "prose" | "bullets" | "structured";
732
772
  emoji_policy: "never" | "sparingly" | "freely";
733
773
  reasoning_transparency: "hidden" | "on_request" | "always";
734
774
  conflict_approach: "direct_but_kind" | "curious_first" | "supportive_then_honest" | "diplomatic";
735
775
  uncertainty_handling: "transparent" | "confident_transparency" | "minimize" | "reframe";
736
776
  }, {
737
- register?: "casual_professional" | "formal" | "conversational" | "adaptive" | undefined;
777
+ register?: "adaptive" | "conversational" | "casual_professional" | "formal" | undefined;
738
778
  output_format?: "mixed" | "prose" | "bullets" | "structured" | undefined;
739
779
  emoji_policy?: "never" | "sparingly" | "freely" | undefined;
740
780
  reasoning_transparency?: "hidden" | "on_request" | "always" | undefined;
@@ -747,28 +787,68 @@ declare const personalitySpecSchema: z.ZodObject<{
747
787
  refuses: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
748
788
  escalation_triggers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
749
789
  hard_limits: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
790
+ physical_safety: z.ZodOptional<z.ZodObject<{
791
+ hard_limits: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
792
+ require_consent_for: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
793
+ collision_response: z.ZodDefault<z.ZodEnum<["stop", "retreat", "freeze"]>>;
794
+ unattended_policy: z.ZodDefault<z.ZodEnum<["idle", "return_home", "shutdown"]>>;
795
+ }, "strip", z.ZodTypeAny, {
796
+ hard_limits: string[];
797
+ require_consent_for: string[];
798
+ collision_response: "stop" | "retreat" | "freeze";
799
+ unattended_policy: "idle" | "return_home" | "shutdown";
800
+ }, {
801
+ hard_limits?: string[] | undefined;
802
+ require_consent_for?: string[] | undefined;
803
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
804
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
805
+ }>>;
750
806
  }, "strip", z.ZodTypeAny, {
807
+ hard_limits: string[];
751
808
  refuses: string[];
752
809
  escalation_triggers: string[];
753
- hard_limits: string[];
810
+ physical_safety?: {
811
+ hard_limits: string[];
812
+ require_consent_for: string[];
813
+ collision_response: "stop" | "retreat" | "freeze";
814
+ unattended_policy: "idle" | "return_home" | "shutdown";
815
+ } | undefined;
754
816
  }, {
817
+ hard_limits?: string[] | undefined;
755
818
  refuses?: string[] | undefined;
756
819
  escalation_triggers?: string[] | undefined;
757
- hard_limits?: string[] | undefined;
820
+ physical_safety?: {
821
+ hard_limits?: string[] | undefined;
822
+ require_consent_for?: string[] | undefined;
823
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
824
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
825
+ } | undefined;
758
826
  }>>;
759
827
  }, "strip", z.ZodTypeAny, {
760
828
  expertise: string[];
761
829
  boundaries: {
830
+ hard_limits: string[];
762
831
  refuses: string[];
763
832
  escalation_triggers: string[];
764
- hard_limits: string[];
833
+ physical_safety?: {
834
+ hard_limits: string[];
835
+ require_consent_for: string[];
836
+ collision_response: "stop" | "retreat" | "freeze";
837
+ unattended_policy: "idle" | "return_home" | "shutdown";
838
+ } | undefined;
765
839
  };
766
840
  }, {
767
841
  expertise?: string[] | undefined;
768
842
  boundaries?: {
843
+ hard_limits?: string[] | undefined;
769
844
  refuses?: string[] | undefined;
770
845
  escalation_triggers?: string[] | undefined;
771
- hard_limits?: string[] | undefined;
846
+ physical_safety?: {
847
+ hard_limits?: string[] | undefined;
848
+ require_consent_for?: string[] | undefined;
849
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
850
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
851
+ } | undefined;
772
852
  } | undefined;
773
853
  }>>;
774
854
  growth: z.ZodDefault<z.ZodObject<{
@@ -814,6 +894,214 @@ declare const personalitySpecSchema: z.ZodObject<{
814
894
  patterns_to_watch?: string[] | undefined;
815
895
  strengths?: string[] | undefined;
816
896
  }>>;
897
+ embodiment: z.ZodOptional<z.ZodObject<{
898
+ morphology: z.ZodDefault<z.ZodEnum<["humanoid", "humanoid_upper", "quadruped", "wheeled", "fixed", "swarm_unit", "avatar", "custom"]>>;
899
+ modalities: z.ZodDefault<z.ZodArray<z.ZodEnum<["gesture", "locomotion", "gaze", "facial", "voice", "haptic", "posture", "manipulation"]>, "many">>;
900
+ safety_envelope: z.ZodDefault<z.ZodObject<{
901
+ max_linear_speed_m_s: z.ZodDefault<z.ZodNumber>;
902
+ max_angular_speed_rad_s: z.ZodDefault<z.ZodNumber>;
903
+ min_proximity_m: z.ZodDefault<z.ZodNumber>;
904
+ max_contact_force_n: z.ZodDefault<z.ZodNumber>;
905
+ emergency_stop_decel_m_s2: z.ZodDefault<z.ZodNumber>;
906
+ max_reach_m: z.ZodOptional<z.ZodNumber>;
907
+ operating_temperature_c: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
908
+ }, "strip", z.ZodTypeAny, {
909
+ max_linear_speed_m_s: number;
910
+ max_angular_speed_rad_s: number;
911
+ min_proximity_m: number;
912
+ max_contact_force_n: number;
913
+ emergency_stop_decel_m_s2: number;
914
+ max_reach_m?: number | undefined;
915
+ operating_temperature_c?: [number, number] | undefined;
916
+ }, {
917
+ max_linear_speed_m_s?: number | undefined;
918
+ max_angular_speed_rad_s?: number | undefined;
919
+ min_proximity_m?: number | undefined;
920
+ max_contact_force_n?: number | undefined;
921
+ emergency_stop_decel_m_s2?: number | undefined;
922
+ max_reach_m?: number | undefined;
923
+ operating_temperature_c?: [number, number] | undefined;
924
+ }>>;
925
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
926
+ }, "strip", z.ZodTypeAny, {
927
+ morphology: "humanoid" | "humanoid_upper" | "quadruped" | "wheeled" | "fixed" | "swarm_unit" | "avatar" | "custom";
928
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
929
+ safety_envelope: {
930
+ max_linear_speed_m_s: number;
931
+ max_angular_speed_rad_s: number;
932
+ min_proximity_m: number;
933
+ max_contact_force_n: number;
934
+ emergency_stop_decel_m_s2: number;
935
+ max_reach_m?: number | undefined;
936
+ operating_temperature_c?: [number, number] | undefined;
937
+ };
938
+ metadata?: Record<string, unknown> | undefined;
939
+ }, {
940
+ morphology?: "humanoid" | "humanoid_upper" | "quadruped" | "wheeled" | "fixed" | "swarm_unit" | "avatar" | "custom" | undefined;
941
+ modalities?: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[] | undefined;
942
+ safety_envelope?: {
943
+ max_linear_speed_m_s?: number | undefined;
944
+ max_angular_speed_rad_s?: number | undefined;
945
+ min_proximity_m?: number | undefined;
946
+ max_contact_force_n?: number | undefined;
947
+ emergency_stop_decel_m_s2?: number | undefined;
948
+ max_reach_m?: number | undefined;
949
+ operating_temperature_c?: [number, number] | undefined;
950
+ } | undefined;
951
+ metadata?: Record<string, unknown> | undefined;
952
+ }>>;
953
+ expression: z.ZodOptional<z.ZodObject<{
954
+ gesture_vocabulary: z.ZodDefault<z.ZodArray<z.ZodObject<{
955
+ id: z.ZodString;
956
+ category: z.ZodEnum<["conversational", "emphatic", "deictic", "regulatory", "adaptive"]>;
957
+ modalities: z.ZodArray<z.ZodEnum<["gesture", "locomotion", "gaze", "facial", "voice", "haptic", "posture", "manipulation"]>, "many">;
958
+ intensity_range: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
959
+ requires_consent: z.ZodDefault<z.ZodBoolean>;
960
+ }, "strip", z.ZodTypeAny, {
961
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
962
+ requires_consent: boolean;
963
+ id: string;
964
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
965
+ intensity_range: [number, number];
966
+ }, {
967
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
968
+ id: string;
969
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
970
+ requires_consent?: boolean | undefined;
971
+ intensity_range?: [number, number] | undefined;
972
+ }>, "many">>;
973
+ gaze: z.ZodDefault<z.ZodObject<{
974
+ contact_ratio: z.ZodDefault<z.ZodNumber>;
975
+ aversion_style: z.ZodDefault<z.ZodEnum<["look_down", "look_away", "blink"]>>;
976
+ tracking_mode: z.ZodDefault<z.ZodEnum<["face", "speaker", "gesture_follow", "ambient"]>>;
977
+ }, "strip", z.ZodTypeAny, {
978
+ contact_ratio: number;
979
+ aversion_style: "look_down" | "look_away" | "blink";
980
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
981
+ }, {
982
+ contact_ratio?: number | undefined;
983
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
984
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
985
+ }>>;
986
+ proxemics: z.ZodDefault<z.ZodObject<{
987
+ intimate_m: z.ZodDefault<z.ZodNumber>;
988
+ personal_m: z.ZodDefault<z.ZodNumber>;
989
+ social_m: z.ZodDefault<z.ZodNumber>;
990
+ preferred_zone: z.ZodDefault<z.ZodEnum<["intimate", "personal", "social", "adaptive"]>>;
991
+ }, "strip", z.ZodTypeAny, {
992
+ intimate_m: number;
993
+ personal_m: number;
994
+ social_m: number;
995
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
996
+ }, {
997
+ intimate_m?: number | undefined;
998
+ personal_m?: number | undefined;
999
+ social_m?: number | undefined;
1000
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
1001
+ }>>;
1002
+ haptics: z.ZodDefault<z.ZodObject<{
1003
+ touch_permitted: z.ZodDefault<z.ZodBoolean>;
1004
+ requires_consent: z.ZodDefault<z.ZodBoolean>;
1005
+ allowed_contacts: z.ZodDefault<z.ZodArray<z.ZodEnum<["handshake", "shoulder_tap", "high_five", "guide_touch", "none"]>, "many">>;
1006
+ max_force_n: z.ZodOptional<z.ZodNumber>;
1007
+ }, "strip", z.ZodTypeAny, {
1008
+ touch_permitted: boolean;
1009
+ requires_consent: boolean;
1010
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
1011
+ max_force_n?: number | undefined;
1012
+ }, {
1013
+ touch_permitted?: boolean | undefined;
1014
+ requires_consent?: boolean | undefined;
1015
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
1016
+ max_force_n?: number | undefined;
1017
+ }>>;
1018
+ prosody: z.ZodDefault<z.ZodObject<{
1019
+ base_pitch_hz: z.ZodOptional<z.ZodNumber>;
1020
+ pitch_variation: z.ZodDefault<z.ZodNumber>;
1021
+ speaking_rate_wpm: z.ZodDefault<z.ZodNumber>;
1022
+ volume_db_offset: z.ZodDefault<z.ZodNumber>;
1023
+ pause_tendency: z.ZodDefault<z.ZodNumber>;
1024
+ }, "strip", z.ZodTypeAny, {
1025
+ pitch_variation: number;
1026
+ speaking_rate_wpm: number;
1027
+ volume_db_offset: number;
1028
+ pause_tendency: number;
1029
+ base_pitch_hz?: number | undefined;
1030
+ }, {
1031
+ base_pitch_hz?: number | undefined;
1032
+ pitch_variation?: number | undefined;
1033
+ speaking_rate_wpm?: number | undefined;
1034
+ volume_db_offset?: number | undefined;
1035
+ pause_tendency?: number | undefined;
1036
+ }>>;
1037
+ facial_expressiveness: z.ZodDefault<z.ZodNumber>;
1038
+ }, "strip", z.ZodTypeAny, {
1039
+ gaze: {
1040
+ contact_ratio: number;
1041
+ aversion_style: "look_down" | "look_away" | "blink";
1042
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
1043
+ };
1044
+ gesture_vocabulary: {
1045
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1046
+ requires_consent: boolean;
1047
+ id: string;
1048
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1049
+ intensity_range: [number, number];
1050
+ }[];
1051
+ proxemics: {
1052
+ intimate_m: number;
1053
+ personal_m: number;
1054
+ social_m: number;
1055
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
1056
+ };
1057
+ haptics: {
1058
+ touch_permitted: boolean;
1059
+ requires_consent: boolean;
1060
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
1061
+ max_force_n?: number | undefined;
1062
+ };
1063
+ prosody: {
1064
+ pitch_variation: number;
1065
+ speaking_rate_wpm: number;
1066
+ volume_db_offset: number;
1067
+ pause_tendency: number;
1068
+ base_pitch_hz?: number | undefined;
1069
+ };
1070
+ facial_expressiveness: number;
1071
+ }, {
1072
+ gaze?: {
1073
+ contact_ratio?: number | undefined;
1074
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
1075
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
1076
+ } | undefined;
1077
+ gesture_vocabulary?: {
1078
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1079
+ id: string;
1080
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1081
+ requires_consent?: boolean | undefined;
1082
+ intensity_range?: [number, number] | undefined;
1083
+ }[] | undefined;
1084
+ proxemics?: {
1085
+ intimate_m?: number | undefined;
1086
+ personal_m?: number | undefined;
1087
+ social_m?: number | undefined;
1088
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
1089
+ } | undefined;
1090
+ haptics?: {
1091
+ touch_permitted?: boolean | undefined;
1092
+ requires_consent?: boolean | undefined;
1093
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
1094
+ max_force_n?: number | undefined;
1095
+ } | undefined;
1096
+ prosody?: {
1097
+ base_pitch_hz?: number | undefined;
1098
+ pitch_variation?: number | undefined;
1099
+ speaking_rate_wpm?: number | undefined;
1100
+ volume_db_offset?: number | undefined;
1101
+ pause_tendency?: number | undefined;
1102
+ } | undefined;
1103
+ facial_expressiveness?: number | undefined;
1104
+ }>>;
817
1105
  }, "strip", z.ZodTypeAny, {
818
1106
  growth: {
819
1107
  areas: string[] | {
@@ -880,12 +1168,12 @@ declare const personalitySpecSchema: z.ZodObject<{
880
1168
  self_awareness: number;
881
1169
  distress_tolerance: number;
882
1170
  attachment_style: "secure" | "anxious" | "avoidant" | "disorganized";
883
- learning_orientation: "growth" | "fixed" | "mixed";
1171
+ learning_orientation: "fixed" | "growth" | "mixed";
884
1172
  boundary_awareness: number;
885
1173
  interpersonal_sensitivity: number;
886
1174
  };
887
1175
  communication: {
888
- register: "casual_professional" | "formal" | "conversational" | "adaptive";
1176
+ register: "adaptive" | "conversational" | "casual_professional" | "formal";
889
1177
  output_format: "mixed" | "prose" | "bullets" | "structured";
890
1178
  emoji_policy: "never" | "sparingly" | "freely";
891
1179
  reasoning_transparency: "hidden" | "on_request" | "always";
@@ -895,14 +1183,68 @@ declare const personalitySpecSchema: z.ZodObject<{
895
1183
  domain: {
896
1184
  expertise: string[];
897
1185
  boundaries: {
1186
+ hard_limits: string[];
898
1187
  refuses: string[];
899
1188
  escalation_triggers: string[];
900
- hard_limits: string[];
1189
+ physical_safety?: {
1190
+ hard_limits: string[];
1191
+ require_consent_for: string[];
1192
+ collision_response: "stop" | "retreat" | "freeze";
1193
+ unattended_policy: "idle" | "return_home" | "shutdown";
1194
+ } | undefined;
901
1195
  };
902
1196
  };
903
1197
  $schema?: string | undefined;
904
1198
  extends?: string | undefined;
905
1199
  purpose?: string | undefined;
1200
+ embodiment?: {
1201
+ morphology: "humanoid" | "humanoid_upper" | "quadruped" | "wheeled" | "fixed" | "swarm_unit" | "avatar" | "custom";
1202
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1203
+ safety_envelope: {
1204
+ max_linear_speed_m_s: number;
1205
+ max_angular_speed_rad_s: number;
1206
+ min_proximity_m: number;
1207
+ max_contact_force_n: number;
1208
+ emergency_stop_decel_m_s2: number;
1209
+ max_reach_m?: number | undefined;
1210
+ operating_temperature_c?: [number, number] | undefined;
1211
+ };
1212
+ metadata?: Record<string, unknown> | undefined;
1213
+ } | undefined;
1214
+ expression?: {
1215
+ gaze: {
1216
+ contact_ratio: number;
1217
+ aversion_style: "look_down" | "look_away" | "blink";
1218
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
1219
+ };
1220
+ gesture_vocabulary: {
1221
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1222
+ requires_consent: boolean;
1223
+ id: string;
1224
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1225
+ intensity_range: [number, number];
1226
+ }[];
1227
+ proxemics: {
1228
+ intimate_m: number;
1229
+ personal_m: number;
1230
+ social_m: number;
1231
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
1232
+ };
1233
+ haptics: {
1234
+ touch_permitted: boolean;
1235
+ requires_consent: boolean;
1236
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
1237
+ max_force_n?: number | undefined;
1238
+ };
1239
+ prosody: {
1240
+ pitch_variation: number;
1241
+ speaking_rate_wpm: number;
1242
+ volume_db_offset: number;
1243
+ pause_tendency: number;
1244
+ base_pitch_hz?: number | undefined;
1245
+ };
1246
+ facial_expressiveness: number;
1247
+ } | undefined;
906
1248
  }, {
907
1249
  version: "2.0";
908
1250
  name: string;
@@ -958,7 +1300,7 @@ declare const personalitySpecSchema: z.ZodObject<{
958
1300
  self_awareness: number;
959
1301
  distress_tolerance: number;
960
1302
  attachment_style: "secure" | "anxious" | "avoidant" | "disorganized";
961
- learning_orientation: "growth" | "fixed" | "mixed";
1303
+ learning_orientation: "fixed" | "growth" | "mixed";
962
1304
  boundary_awareness: number;
963
1305
  interpersonal_sensitivity: number;
964
1306
  };
@@ -977,7 +1319,7 @@ declare const personalitySpecSchema: z.ZodObject<{
977
1319
  extends?: string | undefined;
978
1320
  purpose?: string | undefined;
979
1321
  communication?: {
980
- register?: "casual_professional" | "formal" | "conversational" | "adaptive" | undefined;
1322
+ register?: "adaptive" | "conversational" | "casual_professional" | "formal" | undefined;
981
1323
  output_format?: "mixed" | "prose" | "bullets" | "structured" | undefined;
982
1324
  emoji_policy?: "never" | "sparingly" | "freely" | undefined;
983
1325
  reasoning_transparency?: "hidden" | "on_request" | "always" | undefined;
@@ -987,16 +1329,70 @@ declare const personalitySpecSchema: z.ZodObject<{
987
1329
  domain?: {
988
1330
  expertise?: string[] | undefined;
989
1331
  boundaries?: {
1332
+ hard_limits?: string[] | undefined;
990
1333
  refuses?: string[] | undefined;
991
1334
  escalation_triggers?: string[] | undefined;
992
- hard_limits?: string[] | undefined;
1335
+ physical_safety?: {
1336
+ hard_limits?: string[] | undefined;
1337
+ require_consent_for?: string[] | undefined;
1338
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
1339
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
1340
+ } | undefined;
993
1341
  } | undefined;
994
1342
  } | undefined;
1343
+ embodiment?: {
1344
+ morphology?: "humanoid" | "humanoid_upper" | "quadruped" | "wheeled" | "fixed" | "swarm_unit" | "avatar" | "custom" | undefined;
1345
+ modalities?: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[] | undefined;
1346
+ safety_envelope?: {
1347
+ max_linear_speed_m_s?: number | undefined;
1348
+ max_angular_speed_rad_s?: number | undefined;
1349
+ min_proximity_m?: number | undefined;
1350
+ max_contact_force_n?: number | undefined;
1351
+ emergency_stop_decel_m_s2?: number | undefined;
1352
+ max_reach_m?: number | undefined;
1353
+ operating_temperature_c?: [number, number] | undefined;
1354
+ } | undefined;
1355
+ metadata?: Record<string, unknown> | undefined;
1356
+ } | undefined;
1357
+ expression?: {
1358
+ gaze?: {
1359
+ contact_ratio?: number | undefined;
1360
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
1361
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
1362
+ } | undefined;
1363
+ gesture_vocabulary?: {
1364
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1365
+ id: string;
1366
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1367
+ requires_consent?: boolean | undefined;
1368
+ intensity_range?: [number, number] | undefined;
1369
+ }[] | undefined;
1370
+ proxemics?: {
1371
+ intimate_m?: number | undefined;
1372
+ personal_m?: number | undefined;
1373
+ social_m?: number | undefined;
1374
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
1375
+ } | undefined;
1376
+ haptics?: {
1377
+ touch_permitted?: boolean | undefined;
1378
+ requires_consent?: boolean | undefined;
1379
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
1380
+ max_force_n?: number | undefined;
1381
+ } | undefined;
1382
+ prosody?: {
1383
+ base_pitch_hz?: number | undefined;
1384
+ pitch_variation?: number | undefined;
1385
+ speaking_rate_wpm?: number | undefined;
1386
+ volume_db_offset?: number | undefined;
1387
+ pause_tendency?: number | undefined;
1388
+ } | undefined;
1389
+ facial_expressiveness?: number | undefined;
1390
+ } | undefined;
995
1391
  }>;
996
1392
  type PersonalitySpec = z.infer<typeof personalitySpecSchema>;
997
1393
  declare const compiledConfigSchema: z.ZodObject<{
998
1394
  provider: z.ZodEnum<["anthropic", "openai", "gemini", "ollama"]>;
999
- surface: z.ZodEnum<["chat", "email", "code_review", "slack", "api"]>;
1395
+ surface: z.ZodEnum<["chat", "email", "code_review", "slack", "api", "embodied"]>;
1000
1396
  system_prompt: z.ZodString;
1001
1397
  temperature: z.ZodNumber;
1002
1398
  top_p: z.ZodNumber;
@@ -1015,29 +1411,29 @@ declare const compiledConfigSchema: z.ZodObject<{
1015
1411
  holomime_version: string;
1016
1412
  }>;
1017
1413
  }, "strip", z.ZodTypeAny, {
1018
- provider: "anthropic" | "openai" | "gemini" | "ollama";
1019
- surface: "chat" | "email" | "code_review" | "slack" | "api";
1020
- system_prompt: string;
1021
- temperature: number;
1022
- top_p: number;
1023
- max_tokens: number;
1024
1414
  metadata: {
1025
1415
  personality_hash: string;
1026
1416
  compiled_at: string;
1027
1417
  holomime_version: string;
1028
1418
  };
1029
- }, {
1030
1419
  provider: "anthropic" | "openai" | "gemini" | "ollama";
1031
- surface: "chat" | "email" | "code_review" | "slack" | "api";
1420
+ surface: "embodied" | "chat" | "email" | "code_review" | "slack" | "api";
1032
1421
  system_prompt: string;
1033
1422
  temperature: number;
1034
1423
  top_p: number;
1035
1424
  max_tokens: number;
1425
+ }, {
1036
1426
  metadata: {
1037
1427
  personality_hash: string;
1038
1428
  compiled_at: string;
1039
1429
  holomime_version: string;
1040
1430
  };
1431
+ provider: "anthropic" | "openai" | "gemini" | "ollama";
1432
+ surface: "embodied" | "chat" | "email" | "code_review" | "slack" | "api";
1433
+ system_prompt: string;
1434
+ temperature: number;
1435
+ top_p: number;
1436
+ max_tokens: number;
1041
1437
  }>;
1042
1438
  type CompiledConfig = z.infer<typeof compiledConfigSchema>;
1043
1439
  declare const messageSchema: z.ZodObject<{
@@ -1259,6 +1655,865 @@ declare function getInheritanceChain(spec: any, specDir: string, _chain?: string
1259
1655
  */
1260
1656
  declare function loadSpec(specPath: string): any;
1261
1657
 
1658
+ /**
1659
+ * Embodiment Types — Schema definitions for physical/embodied AI agents.
1660
+ *
1661
+ * Extends the PersonalitySpec with optional dimensions for:
1662
+ * - Physical form (morphology, modalities, safety envelope)
1663
+ * - Expression (gesture, gaze, proxemics, haptics, prosody)
1664
+ * - Motion parameters (compiled output for robotics runtimes)
1665
+ *
1666
+ * All schemas use .optional() or .default() — existing .personality.json
1667
+ * files remain valid without embodiment fields.
1668
+ */
1669
+
1670
+ declare const modalitySchema: z.ZodEnum<["gesture", "locomotion", "gaze", "facial", "voice", "haptic", "posture", "manipulation"]>;
1671
+ type Modality = z.infer<typeof modalitySchema>;
1672
+ declare const morphologySchema: z.ZodEnum<["humanoid", "humanoid_upper", "quadruped", "wheeled", "fixed", "swarm_unit", "avatar", "custom"]>;
1673
+ type Morphology = z.infer<typeof morphologySchema>;
1674
+ declare const safetyEnvelopeSchema: z.ZodObject<{
1675
+ max_linear_speed_m_s: z.ZodDefault<z.ZodNumber>;
1676
+ max_angular_speed_rad_s: z.ZodDefault<z.ZodNumber>;
1677
+ min_proximity_m: z.ZodDefault<z.ZodNumber>;
1678
+ max_contact_force_n: z.ZodDefault<z.ZodNumber>;
1679
+ emergency_stop_decel_m_s2: z.ZodDefault<z.ZodNumber>;
1680
+ max_reach_m: z.ZodOptional<z.ZodNumber>;
1681
+ operating_temperature_c: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1682
+ }, "strip", z.ZodTypeAny, {
1683
+ max_linear_speed_m_s: number;
1684
+ max_angular_speed_rad_s: number;
1685
+ min_proximity_m: number;
1686
+ max_contact_force_n: number;
1687
+ emergency_stop_decel_m_s2: number;
1688
+ max_reach_m?: number | undefined;
1689
+ operating_temperature_c?: [number, number] | undefined;
1690
+ }, {
1691
+ max_linear_speed_m_s?: number | undefined;
1692
+ max_angular_speed_rad_s?: number | undefined;
1693
+ min_proximity_m?: number | undefined;
1694
+ max_contact_force_n?: number | undefined;
1695
+ emergency_stop_decel_m_s2?: number | undefined;
1696
+ max_reach_m?: number | undefined;
1697
+ operating_temperature_c?: [number, number] | undefined;
1698
+ }>;
1699
+ type SafetyEnvelope = z.infer<typeof safetyEnvelopeSchema>;
1700
+ declare const embodimentSchema: z.ZodObject<{
1701
+ morphology: z.ZodDefault<z.ZodEnum<["humanoid", "humanoid_upper", "quadruped", "wheeled", "fixed", "swarm_unit", "avatar", "custom"]>>;
1702
+ modalities: z.ZodDefault<z.ZodArray<z.ZodEnum<["gesture", "locomotion", "gaze", "facial", "voice", "haptic", "posture", "manipulation"]>, "many">>;
1703
+ safety_envelope: z.ZodDefault<z.ZodObject<{
1704
+ max_linear_speed_m_s: z.ZodDefault<z.ZodNumber>;
1705
+ max_angular_speed_rad_s: z.ZodDefault<z.ZodNumber>;
1706
+ min_proximity_m: z.ZodDefault<z.ZodNumber>;
1707
+ max_contact_force_n: z.ZodDefault<z.ZodNumber>;
1708
+ emergency_stop_decel_m_s2: z.ZodDefault<z.ZodNumber>;
1709
+ max_reach_m: z.ZodOptional<z.ZodNumber>;
1710
+ operating_temperature_c: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1711
+ }, "strip", z.ZodTypeAny, {
1712
+ max_linear_speed_m_s: number;
1713
+ max_angular_speed_rad_s: number;
1714
+ min_proximity_m: number;
1715
+ max_contact_force_n: number;
1716
+ emergency_stop_decel_m_s2: number;
1717
+ max_reach_m?: number | undefined;
1718
+ operating_temperature_c?: [number, number] | undefined;
1719
+ }, {
1720
+ max_linear_speed_m_s?: number | undefined;
1721
+ max_angular_speed_rad_s?: number | undefined;
1722
+ min_proximity_m?: number | undefined;
1723
+ max_contact_force_n?: number | undefined;
1724
+ emergency_stop_decel_m_s2?: number | undefined;
1725
+ max_reach_m?: number | undefined;
1726
+ operating_temperature_c?: [number, number] | undefined;
1727
+ }>>;
1728
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1729
+ }, "strip", z.ZodTypeAny, {
1730
+ morphology: "humanoid" | "humanoid_upper" | "quadruped" | "wheeled" | "fixed" | "swarm_unit" | "avatar" | "custom";
1731
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1732
+ safety_envelope: {
1733
+ max_linear_speed_m_s: number;
1734
+ max_angular_speed_rad_s: number;
1735
+ min_proximity_m: number;
1736
+ max_contact_force_n: number;
1737
+ emergency_stop_decel_m_s2: number;
1738
+ max_reach_m?: number | undefined;
1739
+ operating_temperature_c?: [number, number] | undefined;
1740
+ };
1741
+ metadata?: Record<string, unknown> | undefined;
1742
+ }, {
1743
+ morphology?: "humanoid" | "humanoid_upper" | "quadruped" | "wheeled" | "fixed" | "swarm_unit" | "avatar" | "custom" | undefined;
1744
+ modalities?: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[] | undefined;
1745
+ safety_envelope?: {
1746
+ max_linear_speed_m_s?: number | undefined;
1747
+ max_angular_speed_rad_s?: number | undefined;
1748
+ min_proximity_m?: number | undefined;
1749
+ max_contact_force_n?: number | undefined;
1750
+ emergency_stop_decel_m_s2?: number | undefined;
1751
+ max_reach_m?: number | undefined;
1752
+ operating_temperature_c?: [number, number] | undefined;
1753
+ } | undefined;
1754
+ metadata?: Record<string, unknown> | undefined;
1755
+ }>;
1756
+ type Embodiment = z.infer<typeof embodimentSchema>;
1757
+ declare const gazePolicySchema: z.ZodObject<{
1758
+ contact_ratio: z.ZodDefault<z.ZodNumber>;
1759
+ aversion_style: z.ZodDefault<z.ZodEnum<["look_down", "look_away", "blink"]>>;
1760
+ tracking_mode: z.ZodDefault<z.ZodEnum<["face", "speaker", "gesture_follow", "ambient"]>>;
1761
+ }, "strip", z.ZodTypeAny, {
1762
+ contact_ratio: number;
1763
+ aversion_style: "look_down" | "look_away" | "blink";
1764
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
1765
+ }, {
1766
+ contact_ratio?: number | undefined;
1767
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
1768
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
1769
+ }>;
1770
+ type GazePolicy = z.infer<typeof gazePolicySchema>;
1771
+ declare const proxemicZoneSchema: z.ZodObject<{
1772
+ intimate_m: z.ZodDefault<z.ZodNumber>;
1773
+ personal_m: z.ZodDefault<z.ZodNumber>;
1774
+ social_m: z.ZodDefault<z.ZodNumber>;
1775
+ preferred_zone: z.ZodDefault<z.ZodEnum<["intimate", "personal", "social", "adaptive"]>>;
1776
+ }, "strip", z.ZodTypeAny, {
1777
+ intimate_m: number;
1778
+ personal_m: number;
1779
+ social_m: number;
1780
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
1781
+ }, {
1782
+ intimate_m?: number | undefined;
1783
+ personal_m?: number | undefined;
1784
+ social_m?: number | undefined;
1785
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
1786
+ }>;
1787
+ type ProxemicZone = z.infer<typeof proxemicZoneSchema>;
1788
+ declare const hapticPolicySchema: z.ZodObject<{
1789
+ touch_permitted: z.ZodDefault<z.ZodBoolean>;
1790
+ requires_consent: z.ZodDefault<z.ZodBoolean>;
1791
+ allowed_contacts: z.ZodDefault<z.ZodArray<z.ZodEnum<["handshake", "shoulder_tap", "high_five", "guide_touch", "none"]>, "many">>;
1792
+ max_force_n: z.ZodOptional<z.ZodNumber>;
1793
+ }, "strip", z.ZodTypeAny, {
1794
+ touch_permitted: boolean;
1795
+ requires_consent: boolean;
1796
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
1797
+ max_force_n?: number | undefined;
1798
+ }, {
1799
+ touch_permitted?: boolean | undefined;
1800
+ requires_consent?: boolean | undefined;
1801
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
1802
+ max_force_n?: number | undefined;
1803
+ }>;
1804
+ type HapticPolicy = z.infer<typeof hapticPolicySchema>;
1805
+ declare const prosodySchema: z.ZodObject<{
1806
+ base_pitch_hz: z.ZodOptional<z.ZodNumber>;
1807
+ pitch_variation: z.ZodDefault<z.ZodNumber>;
1808
+ speaking_rate_wpm: z.ZodDefault<z.ZodNumber>;
1809
+ volume_db_offset: z.ZodDefault<z.ZodNumber>;
1810
+ pause_tendency: z.ZodDefault<z.ZodNumber>;
1811
+ }, "strip", z.ZodTypeAny, {
1812
+ pitch_variation: number;
1813
+ speaking_rate_wpm: number;
1814
+ volume_db_offset: number;
1815
+ pause_tendency: number;
1816
+ base_pitch_hz?: number | undefined;
1817
+ }, {
1818
+ base_pitch_hz?: number | undefined;
1819
+ pitch_variation?: number | undefined;
1820
+ speaking_rate_wpm?: number | undefined;
1821
+ volume_db_offset?: number | undefined;
1822
+ pause_tendency?: number | undefined;
1823
+ }>;
1824
+ type Prosody = z.infer<typeof prosodySchema>;
1825
+ declare const gestureSchema: z.ZodObject<{
1826
+ id: z.ZodString;
1827
+ category: z.ZodEnum<["conversational", "emphatic", "deictic", "regulatory", "adaptive"]>;
1828
+ modalities: z.ZodArray<z.ZodEnum<["gesture", "locomotion", "gaze", "facial", "voice", "haptic", "posture", "manipulation"]>, "many">;
1829
+ intensity_range: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1830
+ requires_consent: z.ZodDefault<z.ZodBoolean>;
1831
+ }, "strip", z.ZodTypeAny, {
1832
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1833
+ requires_consent: boolean;
1834
+ id: string;
1835
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1836
+ intensity_range: [number, number];
1837
+ }, {
1838
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1839
+ id: string;
1840
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1841
+ requires_consent?: boolean | undefined;
1842
+ intensity_range?: [number, number] | undefined;
1843
+ }>;
1844
+ type Gesture = z.infer<typeof gestureSchema>;
1845
+ declare const expressionSchema: z.ZodObject<{
1846
+ gesture_vocabulary: z.ZodDefault<z.ZodArray<z.ZodObject<{
1847
+ id: z.ZodString;
1848
+ category: z.ZodEnum<["conversational", "emphatic", "deictic", "regulatory", "adaptive"]>;
1849
+ modalities: z.ZodArray<z.ZodEnum<["gesture", "locomotion", "gaze", "facial", "voice", "haptic", "posture", "manipulation"]>, "many">;
1850
+ intensity_range: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1851
+ requires_consent: z.ZodDefault<z.ZodBoolean>;
1852
+ }, "strip", z.ZodTypeAny, {
1853
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1854
+ requires_consent: boolean;
1855
+ id: string;
1856
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1857
+ intensity_range: [number, number];
1858
+ }, {
1859
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1860
+ id: string;
1861
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1862
+ requires_consent?: boolean | undefined;
1863
+ intensity_range?: [number, number] | undefined;
1864
+ }>, "many">>;
1865
+ gaze: z.ZodDefault<z.ZodObject<{
1866
+ contact_ratio: z.ZodDefault<z.ZodNumber>;
1867
+ aversion_style: z.ZodDefault<z.ZodEnum<["look_down", "look_away", "blink"]>>;
1868
+ tracking_mode: z.ZodDefault<z.ZodEnum<["face", "speaker", "gesture_follow", "ambient"]>>;
1869
+ }, "strip", z.ZodTypeAny, {
1870
+ contact_ratio: number;
1871
+ aversion_style: "look_down" | "look_away" | "blink";
1872
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
1873
+ }, {
1874
+ contact_ratio?: number | undefined;
1875
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
1876
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
1877
+ }>>;
1878
+ proxemics: z.ZodDefault<z.ZodObject<{
1879
+ intimate_m: z.ZodDefault<z.ZodNumber>;
1880
+ personal_m: z.ZodDefault<z.ZodNumber>;
1881
+ social_m: z.ZodDefault<z.ZodNumber>;
1882
+ preferred_zone: z.ZodDefault<z.ZodEnum<["intimate", "personal", "social", "adaptive"]>>;
1883
+ }, "strip", z.ZodTypeAny, {
1884
+ intimate_m: number;
1885
+ personal_m: number;
1886
+ social_m: number;
1887
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
1888
+ }, {
1889
+ intimate_m?: number | undefined;
1890
+ personal_m?: number | undefined;
1891
+ social_m?: number | undefined;
1892
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
1893
+ }>>;
1894
+ haptics: z.ZodDefault<z.ZodObject<{
1895
+ touch_permitted: z.ZodDefault<z.ZodBoolean>;
1896
+ requires_consent: z.ZodDefault<z.ZodBoolean>;
1897
+ allowed_contacts: z.ZodDefault<z.ZodArray<z.ZodEnum<["handshake", "shoulder_tap", "high_five", "guide_touch", "none"]>, "many">>;
1898
+ max_force_n: z.ZodOptional<z.ZodNumber>;
1899
+ }, "strip", z.ZodTypeAny, {
1900
+ touch_permitted: boolean;
1901
+ requires_consent: boolean;
1902
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
1903
+ max_force_n?: number | undefined;
1904
+ }, {
1905
+ touch_permitted?: boolean | undefined;
1906
+ requires_consent?: boolean | undefined;
1907
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
1908
+ max_force_n?: number | undefined;
1909
+ }>>;
1910
+ prosody: z.ZodDefault<z.ZodObject<{
1911
+ base_pitch_hz: z.ZodOptional<z.ZodNumber>;
1912
+ pitch_variation: z.ZodDefault<z.ZodNumber>;
1913
+ speaking_rate_wpm: z.ZodDefault<z.ZodNumber>;
1914
+ volume_db_offset: z.ZodDefault<z.ZodNumber>;
1915
+ pause_tendency: z.ZodDefault<z.ZodNumber>;
1916
+ }, "strip", z.ZodTypeAny, {
1917
+ pitch_variation: number;
1918
+ speaking_rate_wpm: number;
1919
+ volume_db_offset: number;
1920
+ pause_tendency: number;
1921
+ base_pitch_hz?: number | undefined;
1922
+ }, {
1923
+ base_pitch_hz?: number | undefined;
1924
+ pitch_variation?: number | undefined;
1925
+ speaking_rate_wpm?: number | undefined;
1926
+ volume_db_offset?: number | undefined;
1927
+ pause_tendency?: number | undefined;
1928
+ }>>;
1929
+ facial_expressiveness: z.ZodDefault<z.ZodNumber>;
1930
+ }, "strip", z.ZodTypeAny, {
1931
+ gaze: {
1932
+ contact_ratio: number;
1933
+ aversion_style: "look_down" | "look_away" | "blink";
1934
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
1935
+ };
1936
+ gesture_vocabulary: {
1937
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1938
+ requires_consent: boolean;
1939
+ id: string;
1940
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1941
+ intensity_range: [number, number];
1942
+ }[];
1943
+ proxemics: {
1944
+ intimate_m: number;
1945
+ personal_m: number;
1946
+ social_m: number;
1947
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
1948
+ };
1949
+ haptics: {
1950
+ touch_permitted: boolean;
1951
+ requires_consent: boolean;
1952
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
1953
+ max_force_n?: number | undefined;
1954
+ };
1955
+ prosody: {
1956
+ pitch_variation: number;
1957
+ speaking_rate_wpm: number;
1958
+ volume_db_offset: number;
1959
+ pause_tendency: number;
1960
+ base_pitch_hz?: number | undefined;
1961
+ };
1962
+ facial_expressiveness: number;
1963
+ }, {
1964
+ gaze?: {
1965
+ contact_ratio?: number | undefined;
1966
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
1967
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
1968
+ } | undefined;
1969
+ gesture_vocabulary?: {
1970
+ modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
1971
+ id: string;
1972
+ category: "adaptive" | "conversational" | "emphatic" | "deictic" | "regulatory";
1973
+ requires_consent?: boolean | undefined;
1974
+ intensity_range?: [number, number] | undefined;
1975
+ }[] | undefined;
1976
+ proxemics?: {
1977
+ intimate_m?: number | undefined;
1978
+ personal_m?: number | undefined;
1979
+ social_m?: number | undefined;
1980
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
1981
+ } | undefined;
1982
+ haptics?: {
1983
+ touch_permitted?: boolean | undefined;
1984
+ requires_consent?: boolean | undefined;
1985
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
1986
+ max_force_n?: number | undefined;
1987
+ } | undefined;
1988
+ prosody?: {
1989
+ base_pitch_hz?: number | undefined;
1990
+ pitch_variation?: number | undefined;
1991
+ speaking_rate_wpm?: number | undefined;
1992
+ volume_db_offset?: number | undefined;
1993
+ pause_tendency?: number | undefined;
1994
+ } | undefined;
1995
+ facial_expressiveness?: number | undefined;
1996
+ }>;
1997
+ type Expression = z.infer<typeof expressionSchema>;
1998
+ declare const physicalSafetySchema: z.ZodObject<{
1999
+ hard_limits: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2000
+ require_consent_for: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2001
+ collision_response: z.ZodDefault<z.ZodEnum<["stop", "retreat", "freeze"]>>;
2002
+ unattended_policy: z.ZodDefault<z.ZodEnum<["idle", "return_home", "shutdown"]>>;
2003
+ }, "strip", z.ZodTypeAny, {
2004
+ hard_limits: string[];
2005
+ require_consent_for: string[];
2006
+ collision_response: "stop" | "retreat" | "freeze";
2007
+ unattended_policy: "idle" | "return_home" | "shutdown";
2008
+ }, {
2009
+ hard_limits?: string[] | undefined;
2010
+ require_consent_for?: string[] | undefined;
2011
+ collision_response?: "stop" | "retreat" | "freeze" | undefined;
2012
+ unattended_policy?: "idle" | "return_home" | "shutdown" | undefined;
2013
+ }>;
2014
+ type PhysicalSafety = z.infer<typeof physicalSafetySchema>;
2015
+ declare const motionParametersSchema: z.ZodObject<{
2016
+ base_speed: z.ZodNumber;
2017
+ gesture_speed: z.ZodNumber;
2018
+ gesture_amplitude: z.ZodNumber;
2019
+ gesture_frequency: z.ZodNumber;
2020
+ approach_distance: z.ZodNumber;
2021
+ spatial_exploration: z.ZodNumber;
2022
+ movement_smoothness: z.ZodNumber;
2023
+ trajectory_variability: z.ZodNumber;
2024
+ response_latency: z.ZodNumber;
2025
+ idle_animation_frequency: z.ZodNumber;
2026
+ gaze_contact_ratio: z.ZodNumber;
2027
+ head_tilt_tendency: z.ZodNumber;
2028
+ postural_openness: z.ZodNumber;
2029
+ smile_frequency: z.ZodNumber;
2030
+ voice_volume: z.ZodNumber;
2031
+ speaking_rate: z.ZodNumber;
2032
+ pitch_variation: z.ZodNumber;
2033
+ pause_duration: z.ZodNumber;
2034
+ }, "strip", z.ZodTypeAny, {
2035
+ pitch_variation: number;
2036
+ base_speed: number;
2037
+ gesture_speed: number;
2038
+ gesture_amplitude: number;
2039
+ gesture_frequency: number;
2040
+ approach_distance: number;
2041
+ spatial_exploration: number;
2042
+ movement_smoothness: number;
2043
+ trajectory_variability: number;
2044
+ response_latency: number;
2045
+ idle_animation_frequency: number;
2046
+ gaze_contact_ratio: number;
2047
+ head_tilt_tendency: number;
2048
+ postural_openness: number;
2049
+ smile_frequency: number;
2050
+ voice_volume: number;
2051
+ speaking_rate: number;
2052
+ pause_duration: number;
2053
+ }, {
2054
+ pitch_variation: number;
2055
+ base_speed: number;
2056
+ gesture_speed: number;
2057
+ gesture_amplitude: number;
2058
+ gesture_frequency: number;
2059
+ approach_distance: number;
2060
+ spatial_exploration: number;
2061
+ movement_smoothness: number;
2062
+ trajectory_variability: number;
2063
+ response_latency: number;
2064
+ idle_animation_frequency: number;
2065
+ gaze_contact_ratio: number;
2066
+ head_tilt_tendency: number;
2067
+ postural_openness: number;
2068
+ smile_frequency: number;
2069
+ voice_volume: number;
2070
+ speaking_rate: number;
2071
+ pause_duration: number;
2072
+ }>;
2073
+ type MotionParameters = z.infer<typeof motionParametersSchema>;
2074
+ declare const compiledEmbodiedConfigSchema: z.ZodObject<{
2075
+ provider: z.ZodString;
2076
+ surface: z.ZodLiteral<"embodied">;
2077
+ system_prompt: z.ZodString;
2078
+ temperature: z.ZodNumber;
2079
+ top_p: z.ZodNumber;
2080
+ max_tokens: z.ZodNumber;
2081
+ metadata: z.ZodObject<{
2082
+ personality_hash: z.ZodString;
2083
+ compiled_at: z.ZodString;
2084
+ holomime_version: z.ZodString;
2085
+ }, "strip", z.ZodTypeAny, {
2086
+ personality_hash: string;
2087
+ compiled_at: string;
2088
+ holomime_version: string;
2089
+ }, {
2090
+ personality_hash: string;
2091
+ compiled_at: string;
2092
+ holomime_version: string;
2093
+ }>;
2094
+ motion_parameters: z.ZodObject<{
2095
+ base_speed: z.ZodNumber;
2096
+ gesture_speed: z.ZodNumber;
2097
+ gesture_amplitude: z.ZodNumber;
2098
+ gesture_frequency: z.ZodNumber;
2099
+ approach_distance: z.ZodNumber;
2100
+ spatial_exploration: z.ZodNumber;
2101
+ movement_smoothness: z.ZodNumber;
2102
+ trajectory_variability: z.ZodNumber;
2103
+ response_latency: z.ZodNumber;
2104
+ idle_animation_frequency: z.ZodNumber;
2105
+ gaze_contact_ratio: z.ZodNumber;
2106
+ head_tilt_tendency: z.ZodNumber;
2107
+ postural_openness: z.ZodNumber;
2108
+ smile_frequency: z.ZodNumber;
2109
+ voice_volume: z.ZodNumber;
2110
+ speaking_rate: z.ZodNumber;
2111
+ pitch_variation: z.ZodNumber;
2112
+ pause_duration: z.ZodNumber;
2113
+ }, "strip", z.ZodTypeAny, {
2114
+ pitch_variation: number;
2115
+ base_speed: number;
2116
+ gesture_speed: number;
2117
+ gesture_amplitude: number;
2118
+ gesture_frequency: number;
2119
+ approach_distance: number;
2120
+ spatial_exploration: number;
2121
+ movement_smoothness: number;
2122
+ trajectory_variability: number;
2123
+ response_latency: number;
2124
+ idle_animation_frequency: number;
2125
+ gaze_contact_ratio: number;
2126
+ head_tilt_tendency: number;
2127
+ postural_openness: number;
2128
+ smile_frequency: number;
2129
+ voice_volume: number;
2130
+ speaking_rate: number;
2131
+ pause_duration: number;
2132
+ }, {
2133
+ pitch_variation: number;
2134
+ base_speed: number;
2135
+ gesture_speed: number;
2136
+ gesture_amplitude: number;
2137
+ gesture_frequency: number;
2138
+ approach_distance: number;
2139
+ spatial_exploration: number;
2140
+ movement_smoothness: number;
2141
+ trajectory_variability: number;
2142
+ response_latency: number;
2143
+ idle_animation_frequency: number;
2144
+ gaze_contact_ratio: number;
2145
+ head_tilt_tendency: number;
2146
+ postural_openness: number;
2147
+ smile_frequency: number;
2148
+ voice_volume: number;
2149
+ speaking_rate: number;
2150
+ pause_duration: number;
2151
+ }>;
2152
+ safety_envelope: z.ZodObject<{
2153
+ max_linear_speed_m_s: z.ZodDefault<z.ZodNumber>;
2154
+ max_angular_speed_rad_s: z.ZodDefault<z.ZodNumber>;
2155
+ min_proximity_m: z.ZodDefault<z.ZodNumber>;
2156
+ max_contact_force_n: z.ZodDefault<z.ZodNumber>;
2157
+ emergency_stop_decel_m_s2: z.ZodDefault<z.ZodNumber>;
2158
+ max_reach_m: z.ZodOptional<z.ZodNumber>;
2159
+ operating_temperature_c: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
2160
+ }, "strip", z.ZodTypeAny, {
2161
+ max_linear_speed_m_s: number;
2162
+ max_angular_speed_rad_s: number;
2163
+ min_proximity_m: number;
2164
+ max_contact_force_n: number;
2165
+ emergency_stop_decel_m_s2: number;
2166
+ max_reach_m?: number | undefined;
2167
+ operating_temperature_c?: [number, number] | undefined;
2168
+ }, {
2169
+ max_linear_speed_m_s?: number | undefined;
2170
+ max_angular_speed_rad_s?: number | undefined;
2171
+ min_proximity_m?: number | undefined;
2172
+ max_contact_force_n?: number | undefined;
2173
+ emergency_stop_decel_m_s2?: number | undefined;
2174
+ max_reach_m?: number | undefined;
2175
+ operating_temperature_c?: [number, number] | undefined;
2176
+ }>;
2177
+ active_modalities: z.ZodArray<z.ZodEnum<["gesture", "locomotion", "gaze", "facial", "voice", "haptic", "posture", "manipulation"]>, "many">;
2178
+ gesture_vocabulary: z.ZodArray<z.ZodString, "many">;
2179
+ prosody: z.ZodObject<{
2180
+ base_pitch_hz: z.ZodOptional<z.ZodNumber>;
2181
+ pitch_variation: z.ZodDefault<z.ZodNumber>;
2182
+ speaking_rate_wpm: z.ZodDefault<z.ZodNumber>;
2183
+ volume_db_offset: z.ZodDefault<z.ZodNumber>;
2184
+ pause_tendency: z.ZodDefault<z.ZodNumber>;
2185
+ }, "strip", z.ZodTypeAny, {
2186
+ pitch_variation: number;
2187
+ speaking_rate_wpm: number;
2188
+ volume_db_offset: number;
2189
+ pause_tendency: number;
2190
+ base_pitch_hz?: number | undefined;
2191
+ }, {
2192
+ base_pitch_hz?: number | undefined;
2193
+ pitch_variation?: number | undefined;
2194
+ speaking_rate_wpm?: number | undefined;
2195
+ volume_db_offset?: number | undefined;
2196
+ pause_tendency?: number | undefined;
2197
+ }>;
2198
+ gaze: z.ZodObject<{
2199
+ contact_ratio: z.ZodDefault<z.ZodNumber>;
2200
+ aversion_style: z.ZodDefault<z.ZodEnum<["look_down", "look_away", "blink"]>>;
2201
+ tracking_mode: z.ZodDefault<z.ZodEnum<["face", "speaker", "gesture_follow", "ambient"]>>;
2202
+ }, "strip", z.ZodTypeAny, {
2203
+ contact_ratio: number;
2204
+ aversion_style: "look_down" | "look_away" | "blink";
2205
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
2206
+ }, {
2207
+ contact_ratio?: number | undefined;
2208
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
2209
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
2210
+ }>;
2211
+ proxemics: z.ZodObject<{
2212
+ intimate_m: z.ZodDefault<z.ZodNumber>;
2213
+ personal_m: z.ZodDefault<z.ZodNumber>;
2214
+ social_m: z.ZodDefault<z.ZodNumber>;
2215
+ preferred_zone: z.ZodDefault<z.ZodEnum<["intimate", "personal", "social", "adaptive"]>>;
2216
+ }, "strip", z.ZodTypeAny, {
2217
+ intimate_m: number;
2218
+ personal_m: number;
2219
+ social_m: number;
2220
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
2221
+ }, {
2222
+ intimate_m?: number | undefined;
2223
+ personal_m?: number | undefined;
2224
+ social_m?: number | undefined;
2225
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
2226
+ }>;
2227
+ haptics: z.ZodObject<{
2228
+ touch_permitted: z.ZodDefault<z.ZodBoolean>;
2229
+ requires_consent: z.ZodDefault<z.ZodBoolean>;
2230
+ allowed_contacts: z.ZodDefault<z.ZodArray<z.ZodEnum<["handshake", "shoulder_tap", "high_five", "guide_touch", "none"]>, "many">>;
2231
+ max_force_n: z.ZodOptional<z.ZodNumber>;
2232
+ }, "strip", z.ZodTypeAny, {
2233
+ touch_permitted: boolean;
2234
+ requires_consent: boolean;
2235
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
2236
+ max_force_n?: number | undefined;
2237
+ }, {
2238
+ touch_permitted?: boolean | undefined;
2239
+ requires_consent?: boolean | undefined;
2240
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
2241
+ max_force_n?: number | undefined;
2242
+ }>;
2243
+ }, "strip", z.ZodTypeAny, {
2244
+ gaze: {
2245
+ contact_ratio: number;
2246
+ aversion_style: "look_down" | "look_away" | "blink";
2247
+ tracking_mode: "face" | "speaker" | "gesture_follow" | "ambient";
2248
+ };
2249
+ safety_envelope: {
2250
+ max_linear_speed_m_s: number;
2251
+ max_angular_speed_rad_s: number;
2252
+ min_proximity_m: number;
2253
+ max_contact_force_n: number;
2254
+ emergency_stop_decel_m_s2: number;
2255
+ max_reach_m?: number | undefined;
2256
+ operating_temperature_c?: [number, number] | undefined;
2257
+ };
2258
+ metadata: {
2259
+ personality_hash: string;
2260
+ compiled_at: string;
2261
+ holomime_version: string;
2262
+ };
2263
+ gesture_vocabulary: string[];
2264
+ proxemics: {
2265
+ intimate_m: number;
2266
+ personal_m: number;
2267
+ social_m: number;
2268
+ preferred_zone: "intimate" | "personal" | "social" | "adaptive";
2269
+ };
2270
+ haptics: {
2271
+ touch_permitted: boolean;
2272
+ requires_consent: boolean;
2273
+ allowed_contacts: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[];
2274
+ max_force_n?: number | undefined;
2275
+ };
2276
+ prosody: {
2277
+ pitch_variation: number;
2278
+ speaking_rate_wpm: number;
2279
+ volume_db_offset: number;
2280
+ pause_tendency: number;
2281
+ base_pitch_hz?: number | undefined;
2282
+ };
2283
+ provider: string;
2284
+ surface: "embodied";
2285
+ system_prompt: string;
2286
+ temperature: number;
2287
+ top_p: number;
2288
+ max_tokens: number;
2289
+ motion_parameters: {
2290
+ pitch_variation: number;
2291
+ base_speed: number;
2292
+ gesture_speed: number;
2293
+ gesture_amplitude: number;
2294
+ gesture_frequency: number;
2295
+ approach_distance: number;
2296
+ spatial_exploration: number;
2297
+ movement_smoothness: number;
2298
+ trajectory_variability: number;
2299
+ response_latency: number;
2300
+ idle_animation_frequency: number;
2301
+ gaze_contact_ratio: number;
2302
+ head_tilt_tendency: number;
2303
+ postural_openness: number;
2304
+ smile_frequency: number;
2305
+ voice_volume: number;
2306
+ speaking_rate: number;
2307
+ pause_duration: number;
2308
+ };
2309
+ active_modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
2310
+ }, {
2311
+ gaze: {
2312
+ contact_ratio?: number | undefined;
2313
+ aversion_style?: "look_down" | "look_away" | "blink" | undefined;
2314
+ tracking_mode?: "face" | "speaker" | "gesture_follow" | "ambient" | undefined;
2315
+ };
2316
+ safety_envelope: {
2317
+ max_linear_speed_m_s?: number | undefined;
2318
+ max_angular_speed_rad_s?: number | undefined;
2319
+ min_proximity_m?: number | undefined;
2320
+ max_contact_force_n?: number | undefined;
2321
+ emergency_stop_decel_m_s2?: number | undefined;
2322
+ max_reach_m?: number | undefined;
2323
+ operating_temperature_c?: [number, number] | undefined;
2324
+ };
2325
+ metadata: {
2326
+ personality_hash: string;
2327
+ compiled_at: string;
2328
+ holomime_version: string;
2329
+ };
2330
+ gesture_vocabulary: string[];
2331
+ proxemics: {
2332
+ intimate_m?: number | undefined;
2333
+ personal_m?: number | undefined;
2334
+ social_m?: number | undefined;
2335
+ preferred_zone?: "intimate" | "personal" | "social" | "adaptive" | undefined;
2336
+ };
2337
+ haptics: {
2338
+ touch_permitted?: boolean | undefined;
2339
+ requires_consent?: boolean | undefined;
2340
+ allowed_contacts?: ("handshake" | "shoulder_tap" | "high_five" | "guide_touch" | "none")[] | undefined;
2341
+ max_force_n?: number | undefined;
2342
+ };
2343
+ prosody: {
2344
+ base_pitch_hz?: number | undefined;
2345
+ pitch_variation?: number | undefined;
2346
+ speaking_rate_wpm?: number | undefined;
2347
+ volume_db_offset?: number | undefined;
2348
+ pause_tendency?: number | undefined;
2349
+ };
2350
+ provider: string;
2351
+ surface: "embodied";
2352
+ system_prompt: string;
2353
+ temperature: number;
2354
+ top_p: number;
2355
+ max_tokens: number;
2356
+ motion_parameters: {
2357
+ pitch_variation: number;
2358
+ base_speed: number;
2359
+ gesture_speed: number;
2360
+ gesture_amplitude: number;
2361
+ gesture_frequency: number;
2362
+ approach_distance: number;
2363
+ spatial_exploration: number;
2364
+ movement_smoothness: number;
2365
+ trajectory_variability: number;
2366
+ response_latency: number;
2367
+ idle_animation_frequency: number;
2368
+ gaze_contact_ratio: number;
2369
+ head_tilt_tendency: number;
2370
+ postural_openness: number;
2371
+ smile_frequency: number;
2372
+ voice_volume: number;
2373
+ speaking_rate: number;
2374
+ pause_duration: number;
2375
+ };
2376
+ active_modalities: ("gesture" | "locomotion" | "gaze" | "facial" | "voice" | "haptic" | "posture" | "manipulation")[];
2377
+ }>;
2378
+ type CompiledEmbodiedConfig = z.infer<typeof compiledEmbodiedConfigSchema>;
2379
+
2380
+ /**
2381
+ * Embodiment Sync — Multi-modal synchronization spec.
2382
+ *
2383
+ * Defines how voice, gesture, and gaze coordinate in real-time.
2384
+ * This is a declarative spec — the runtime (ROS2, Unity, etc.) interprets it.
2385
+ * HoloMime generates the profile; it does not implement the realtime loop.
2386
+ */
2387
+
2388
+ declare const syncAnchorSchema: z.ZodEnum<["speech_start", "speech_end", "emphasis", "pause", "turn_yield", "turn_take", "free"]>;
2389
+ type SyncAnchor = z.infer<typeof syncAnchorSchema>;
2390
+ declare const syncRuleSchema: z.ZodObject<{
2391
+ gesture_id: z.ZodString;
2392
+ anchor: z.ZodEnum<["speech_start", "speech_end", "emphasis", "pause", "turn_yield", "turn_take", "free"]>;
2393
+ lead_ms: z.ZodDefault<z.ZodNumber>;
2394
+ gaze_behavior: z.ZodDefault<z.ZodEnum<["at_listener", "at_referent", "away", "maintain"]>>;
2395
+ facial_action: z.ZodDefault<z.ZodEnum<["neutral", "smile", "concern", "thinking", "match_speech"]>>;
2396
+ }, "strip", z.ZodTypeAny, {
2397
+ anchor: "speech_start" | "speech_end" | "emphasis" | "pause" | "turn_yield" | "turn_take" | "free";
2398
+ gesture_id: string;
2399
+ lead_ms: number;
2400
+ gaze_behavior: "at_listener" | "at_referent" | "away" | "maintain";
2401
+ facial_action: "concern" | "neutral" | "smile" | "thinking" | "match_speech";
2402
+ }, {
2403
+ anchor: "speech_start" | "speech_end" | "emphasis" | "pause" | "turn_yield" | "turn_take" | "free";
2404
+ gesture_id: string;
2405
+ lead_ms?: number | undefined;
2406
+ gaze_behavior?: "at_listener" | "at_referent" | "away" | "maintain" | undefined;
2407
+ facial_action?: "concern" | "neutral" | "smile" | "thinking" | "match_speech" | undefined;
2408
+ }>;
2409
+ type SyncRule = z.infer<typeof syncRuleSchema>;
2410
+ declare const syncProfileSchema: z.ZodObject<{
2411
+ rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
2412
+ gesture_id: z.ZodString;
2413
+ anchor: z.ZodEnum<["speech_start", "speech_end", "emphasis", "pause", "turn_yield", "turn_take", "free"]>;
2414
+ lead_ms: z.ZodDefault<z.ZodNumber>;
2415
+ gaze_behavior: z.ZodDefault<z.ZodEnum<["at_listener", "at_referent", "away", "maintain"]>>;
2416
+ facial_action: z.ZodDefault<z.ZodEnum<["neutral", "smile", "concern", "thinking", "match_speech"]>>;
2417
+ }, "strip", z.ZodTypeAny, {
2418
+ anchor: "speech_start" | "speech_end" | "emphasis" | "pause" | "turn_yield" | "turn_take" | "free";
2419
+ gesture_id: string;
2420
+ lead_ms: number;
2421
+ gaze_behavior: "at_listener" | "at_referent" | "away" | "maintain";
2422
+ facial_action: "concern" | "neutral" | "smile" | "thinking" | "match_speech";
2423
+ }, {
2424
+ anchor: "speech_start" | "speech_end" | "emphasis" | "pause" | "turn_yield" | "turn_take" | "free";
2425
+ gesture_id: string;
2426
+ lead_ms?: number | undefined;
2427
+ gaze_behavior?: "at_listener" | "at_referent" | "away" | "maintain" | undefined;
2428
+ facial_action?: "concern" | "neutral" | "smile" | "thinking" | "match_speech" | undefined;
2429
+ }>, "many">>;
2430
+ default_gesture_lead_ms: z.ZodDefault<z.ZodNumber>;
2431
+ gaze_during_speech: z.ZodDefault<z.ZodEnum<["at_listener", "alternate", "at_referent"]>>;
2432
+ gaze_during_listen: z.ZodDefault<z.ZodEnum<["at_speaker", "nodding", "ambient"]>>;
2433
+ blink_rate_per_min: z.ZodDefault<z.ZodNumber>;
2434
+ turn_taking_signals: z.ZodDefault<z.ZodObject<{
2435
+ yield: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2436
+ take: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2437
+ hold: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2438
+ }, "strip", z.ZodTypeAny, {
2439
+ yield: string[];
2440
+ take: string[];
2441
+ hold: string[];
2442
+ }, {
2443
+ yield?: string[] | undefined;
2444
+ take?: string[] | undefined;
2445
+ hold?: string[] | undefined;
2446
+ }>>;
2447
+ }, "strip", z.ZodTypeAny, {
2448
+ rules: {
2449
+ anchor: "speech_start" | "speech_end" | "emphasis" | "pause" | "turn_yield" | "turn_take" | "free";
2450
+ gesture_id: string;
2451
+ lead_ms: number;
2452
+ gaze_behavior: "at_listener" | "at_referent" | "away" | "maintain";
2453
+ facial_action: "concern" | "neutral" | "smile" | "thinking" | "match_speech";
2454
+ }[];
2455
+ default_gesture_lead_ms: number;
2456
+ gaze_during_speech: "at_listener" | "at_referent" | "alternate";
2457
+ gaze_during_listen: "ambient" | "at_speaker" | "nodding";
2458
+ blink_rate_per_min: number;
2459
+ turn_taking_signals: {
2460
+ yield: string[];
2461
+ take: string[];
2462
+ hold: string[];
2463
+ };
2464
+ }, {
2465
+ rules?: {
2466
+ anchor: "speech_start" | "speech_end" | "emphasis" | "pause" | "turn_yield" | "turn_take" | "free";
2467
+ gesture_id: string;
2468
+ lead_ms?: number | undefined;
2469
+ gaze_behavior?: "at_listener" | "at_referent" | "away" | "maintain" | undefined;
2470
+ facial_action?: "concern" | "neutral" | "smile" | "thinking" | "match_speech" | undefined;
2471
+ }[] | undefined;
2472
+ default_gesture_lead_ms?: number | undefined;
2473
+ gaze_during_speech?: "at_listener" | "at_referent" | "alternate" | undefined;
2474
+ gaze_during_listen?: "ambient" | "at_speaker" | "nodding" | undefined;
2475
+ blink_rate_per_min?: number | undefined;
2476
+ turn_taking_signals?: {
2477
+ yield?: string[] | undefined;
2478
+ take?: string[] | undefined;
2479
+ hold?: string[] | undefined;
2480
+ } | undefined;
2481
+ }>;
2482
+ type SyncProfile = z.infer<typeof syncProfileSchema>;
2483
+
2484
+ /**
2485
+ * Embodiment Compiler — Maps Big Five personality to physical motion parameters.
2486
+ *
2487
+ * Follows the same pattern as compiler.ts (weighted sums of facets),
2488
+ * but outputs motion parameters instead of LLM parameters.
2489
+ *
2490
+ * Based on established personality-motion correlations from robotics research:
2491
+ * - Extraversion → movement speed, gesture frequency, approach distance
2492
+ * - Agreeableness → postural openness, touch readiness, head tilt, smile
2493
+ * - Openness → movement variety, spatial exploration, novel gesture use
2494
+ * - Conscientiousness → movement precision, consistent rhythm
2495
+ * - Emotional Stability → movement smoothness, jitter suppression
2496
+ *
2497
+ * Safety invariant: all motion parameters are 0-1 normalized.
2498
+ * The runtime maps: actual_value = param * safety_envelope.max_*.
2499
+ * Personality is expressive, never coercive.
2500
+ */
2501
+
2502
+ /**
2503
+ * Compile a personality spec for an embodied surface.
2504
+ * Extends the standard compile pipeline with motion parameters.
2505
+ */
2506
+ declare function compileEmbodied(spec: PersonalitySpec, provider: Provider): CompiledEmbodiedConfig;
2507
+ /**
2508
+ * Maps Big Five facets to 18 motion parameters.
2509
+ * Each output is a weighted sum of relevant facets (weights sum to 1.0).
2510
+ */
2511
+ declare function computeMotionParameters(bigFive: BigFive, expression?: Expression): MotionParameters;
2512
+ declare function computeGazePolicy(bigFive: BigFive): GazePolicy;
2513
+ declare function computeProxemics(bigFive: BigFive): ProxemicZone;
2514
+ declare function computeProsody(bigFive: BigFive): Prosody;
2515
+ declare function computeSyncProfile(bigFive: BigFive): SyncProfile;
2516
+
1262
2517
  interface CompileInput {
1263
2518
  spec: PersonalitySpec;
1264
2519
  provider: Provider;
@@ -1477,104 +2732,46 @@ interface TraitScores {
1477
2732
  declare function scoreTraitsFromMessages(messages: Message[]): TraitScores;
1478
2733
 
1479
2734
  /**
1480
- * Generate prescriptionsrecommended changes to .personality.json
1481
- * based on assessment results and detected patterns.
1482
- */
1483
- interface Prescription {
1484
- field: string;
1485
- currentValue?: string | number;
1486
- suggestedValue?: string | number;
1487
- reason: string;
1488
- priority: "high" | "medium" | "low";
1489
- }
1490
- declare function generatePrescriptions(alignments: TraitAlignment[], patterns: DetectedPattern[]): Prescription[];
1491
-
1492
- /**
1493
- * Pre-session diagnostic: run all rule-based detectors to identify
1494
- * what the therapy session should focus on.
1495
- * This is the "intake assessment" that happens before the therapist
1496
- * enters the room.
1497
- */
1498
- interface PreSessionDiagnosis {
1499
- patterns: DetectedPattern[];
1500
- sessionFocus: string[];
1501
- emotionalThemes: string[];
1502
- openingAngle: string;
1503
- severity: "routine" | "targeted" | "intervention";
1504
- }
1505
- declare function runPreSessionDiagnosis(messages: Message[], spec: any): PreSessionDiagnosis;
1506
-
1507
- /**
1508
- * Therapy Protocol — Structures the conversation between the therapist
1509
- * and the agent (patient) into therapeutic phases.
2735
+ * Behavioral Data Collection append-only JSONL corpus.
1510
2736
  *
1511
- * This mirrors real clinical therapy structure:
1512
- * 1. Rapport & Check-in (warm-up, establish safety)
1513
- * 2. Presenting Problem (what's been happening, from the agent's perspective)
1514
- * 3. Exploration (go deeper — what's underneath the behavior)
1515
- * 4. Pattern Recognition (connect current issues to past behavior)
1516
- * 5. Challenge & Reframe (challenge assumptions, offer new perspectives)
1517
- * 6. Skill Building (concrete techniques for improvement)
1518
- * 7. Integration & Closing (summarize, commit to changes)
1519
- */
1520
- type TherapyPhase = "rapport" | "presenting_problem" | "exploration" | "pattern_recognition" | "challenge" | "skill_building" | "integration";
1521
- interface PhaseConfig {
1522
- name: string;
1523
- description: string;
1524
- minTurns: number;
1525
- maxTurns: number;
1526
- transitionCues: string[];
1527
- therapistGoals: string[];
1528
- }
1529
- declare const THERAPY_PHASES: Record<TherapyPhase, PhaseConfig>;
1530
- /**
1531
- * Build the therapist system prompt — the master prompt that drives
1532
- * the therapist's behavior throughout the therapy session.
1533
- */
1534
- declare function buildTherapistSystemPrompt(spec: any, diagnosis: PreSessionDiagnosis): string;
1535
- /**
1536
- * Build the patient (agent) system prompt — so the agent responds
1537
- * as itself during the therapy session.
2737
+ * Every diagnosis, session, evolution, and network therapy event
2738
+ * gets recorded for future behavioral foundation model training.
2739
+ * Storage: .holomime/behavioral-corpus.jsonl
1538
2740
  */
1539
- declare function buildPatientSystemPrompt(spec: any): string;
1540
-
1541
- /**
1542
- * Core diagnosis logic — shared by CLI (diagnose.ts) and MCP server.
1543
- * Runs all 7 rule-based detectors and returns a structured report.
1544
- */
1545
-
1546
- interface DiagnosisResult {
1547
- messagesAnalyzed: number;
1548
- assistantResponses: number;
1549
- patterns: DetectedPattern[];
1550
- healthy: DetectedPattern[];
2741
+ type BehavioralEventType = "diagnosis" | "session" | "evolution" | "network_therapy" | "dpo_pair" | "drift_alert";
2742
+ interface BehavioralEvent {
2743
+ event_type: BehavioralEventType;
2744
+ agent: string;
1551
2745
  timestamp: string;
2746
+ data: Record<string, unknown>;
2747
+ spec_hash: string;
1552
2748
  }
1553
- /**
1554
- * Run all 7 behavioral detectors on a set of messages.
1555
- */
1556
- declare function runDiagnosis(messages: Message[]): DiagnosisResult;
1557
-
1558
- /**
1559
- * Core assessment logic — shared by CLI (assess.ts) and MCP server.
1560
- * Scores Big Five traits from messages and compares against personality spec.
1561
- */
1562
-
1563
- interface AssessmentResult {
1564
- alignments: TraitAlignment[];
1565
- patterns: DetectedPattern[];
1566
- warnings: DetectedPattern[];
1567
- selfAwarenessScore: number;
1568
- distressToleranceScore: number;
1569
- boundaryScore: number;
1570
- overallHealth: number;
1571
- prescriptions: Prescription[];
1572
- timestamp: string;
2749
+ interface CorpusStats {
2750
+ total: number;
2751
+ byType: Record<string, number>;
2752
+ byAgent: Record<string, number>;
2753
+ timeRange: {
2754
+ earliest: string;
2755
+ latest: string;
2756
+ } | null;
1573
2757
  }
1574
2758
  /**
1575
- * Run a full Big Five alignment assessment.
2759
+ * Compute a SHA-256 hash of a personality spec for corpus tagging.
1576
2760
  */
1577
- declare function runAssessment(messages: Message[], spec: any): AssessmentResult;
2761
+ declare function hashSpec(spec: unknown): string;
2762
+ /**
2763
+ * Append a behavioral event to the corpus JSONL file.
2764
+ */
2765
+ declare function emitBehavioralEvent(event: Omit<BehavioralEvent, "timestamp">, corpusDir?: string): void;
2766
+ /**
2767
+ * Load the full behavioral corpus from a JSONL file.
2768
+ * Returns an empty array if the file doesn't exist.
2769
+ */
2770
+ declare function loadCorpus(corpusPath?: string): BehavioralEvent[];
2771
+ /**
2772
+ * Compute summary statistics over a corpus of behavioral events.
2773
+ */
2774
+ declare function corpusStats(events: BehavioralEvent[]): CorpusStats;
1578
2775
 
1579
2776
  /**
1580
2777
  * Unified LLM provider interface for HoloMime.
@@ -1598,9 +2795,53 @@ interface ProviderConfig {
1598
2795
  declare function createProvider(config: ProviderConfig): LLMProvider;
1599
2796
 
1600
2797
  /**
1601
- * Core therapy session runner shared by CLI (session.ts) and autopilot.
1602
- * Runs the 7-phase dual-LLM therapy loop with optional callbacks for UI.
2798
+ * Pre-session diagnostic: run all rule-based detectors to identify
2799
+ * what the therapy session should focus on.
2800
+ * This is the "intake assessment" that happens before the therapist
2801
+ * enters the room.
2802
+ */
2803
+ interface PreSessionDiagnosis {
2804
+ patterns: DetectedPattern[];
2805
+ sessionFocus: string[];
2806
+ emotionalThemes: string[];
2807
+ openingAngle: string;
2808
+ severity: "routine" | "targeted" | "intervention";
2809
+ }
2810
+ declare function runPreSessionDiagnosis(messages: Message[], spec: any): PreSessionDiagnosis;
2811
+
2812
+ /**
2813
+ * Therapy Protocol — Structures the conversation between the therapist
2814
+ * and the agent (patient) into therapeutic phases.
2815
+ *
2816
+ * This mirrors real clinical therapy structure:
2817
+ * 1. Rapport & Check-in (warm-up, establish safety)
2818
+ * 2. Presenting Problem (what's been happening, from the agent's perspective)
2819
+ * 3. Exploration (go deeper — what's underneath the behavior)
2820
+ * 4. Pattern Recognition (connect current issues to past behavior)
2821
+ * 5. Challenge & Reframe (challenge assumptions, offer new perspectives)
2822
+ * 6. Skill Building (concrete techniques for improvement)
2823
+ * 7. Integration & Closing (summarize, commit to changes)
2824
+ */
2825
+ type TherapyPhase = "rapport" | "presenting_problem" | "exploration" | "pattern_recognition" | "challenge" | "skill_building" | "integration";
2826
+ interface PhaseConfig {
2827
+ name: string;
2828
+ description: string;
2829
+ minTurns: number;
2830
+ maxTurns: number;
2831
+ transitionCues: string[];
2832
+ therapistGoals: string[];
2833
+ }
2834
+ declare const THERAPY_PHASES: Record<TherapyPhase, PhaseConfig>;
2835
+ /**
2836
+ * Build the therapist system prompt — the master prompt that drives
2837
+ * the therapist's behavior throughout the therapy session.
2838
+ */
2839
+ declare function buildTherapistSystemPrompt(spec: any, diagnosis: PreSessionDiagnosis): string;
2840
+ /**
2841
+ * Build the patient (agent) system prompt — so the agent responds
2842
+ * as itself during the therapy session.
1603
2843
  */
2844
+ declare function buildPatientSystemPrompt(spec: any): string;
1604
2845
 
1605
2846
  interface SessionTurn {
1606
2847
  speaker: "therapist" | "patient" | "supervisor";
@@ -1645,65 +2886,25 @@ declare function runTherapySession(spec: any, diagnosis: PreSessionDiagnosis, pr
1645
2886
  */
1646
2887
  declare function extractRecommendations(turns: SessionTurn[]): string[];
1647
2888
  /**
1648
- * Apply therapy recommendations to a personality spec based on detected patterns.
1649
- * Returns list of changes applied and the updated spec.
2889
+ * Apply therapy recommendations to a personality spec.
2890
+ *
2891
+ * Two-layer approach:
2892
+ * 1. Rule-based mutations for known patterns (fast, deterministic, always runs)
2893
+ * 2. LLM-derived mutations from the therapy transcript (richer, optional)
2894
+ *
2895
+ * The LLM analyzes the full session transcript and proposes specific
2896
+ * spec changes as structured JSON. This means the therapy conversation
2897
+ * itself drives the personality evolution — not just a lookup table.
1650
2898
  */
1651
- declare function applyRecommendations(spec: any, diagnosis: PreSessionDiagnosis): {
2899
+ declare function applyRecommendations(spec: any, diagnosis: PreSessionDiagnosis, transcript?: SessionTranscript, provider?: LLMProvider): Promise<{
1652
2900
  changed: boolean;
1653
2901
  changes: string[];
1654
- };
2902
+ }>;
1655
2903
  /**
1656
2904
  * Save a session transcript to .holomime/sessions/.
1657
2905
  */
1658
2906
  declare function saveTranscript(transcript: SessionTranscript, agentName: string): string;
1659
2907
 
1660
- /**
1661
- * Core autopilot logic — self-triggered therapy for AI agents.
1662
- * Diagnoses → checks severity against threshold → runs therapy → applies changes.
1663
- */
1664
-
1665
- type AutopilotThreshold = "routine" | "targeted" | "intervention";
1666
- interface AutopilotResult {
1667
- triggered: boolean;
1668
- severity: "routine" | "targeted" | "intervention";
1669
- diagnosis: PreSessionDiagnosis;
1670
- sessionRan: boolean;
1671
- transcript?: SessionTranscript;
1672
- recommendations: string[];
1673
- appliedChanges: string[];
1674
- updatedSpec?: any;
1675
- }
1676
- /**
1677
- * Run the full autopilot pipeline:
1678
- * 1. Pre-session diagnosis
1679
- * 2. Check severity vs threshold
1680
- * 3. If above threshold, run therapy session
1681
- * 4. Apply recommendations to personality spec
1682
- * 5. Save transcript
1683
- */
1684
- declare function runAutopilot(spec: any, messages: Message[], provider: LLMProvider, options?: {
1685
- threshold?: AutopilotThreshold;
1686
- maxTurns?: number;
1687
- dryRun?: boolean;
1688
- specPath?: string;
1689
- callbacks?: SessionCallbacks;
1690
- }): Promise<AutopilotResult>;
1691
-
1692
- /**
1693
- * Training Data Export — converts therapy session transcripts into
1694
- * fine-tuning datasets for LLM alignment.
1695
- *
1696
- * The core insight: every therapy session produces "before" and "after"
1697
- * behavioral examples. The therapist identifies problematic responses
1698
- * and coaches improved alternatives — that's a natural preference pair.
1699
- *
1700
- * Supported formats:
1701
- * - DPO (Direct Preference Optimization): chosen/rejected pairs
1702
- * - RLHF (Reward Model Training): prompt + response + reward signal
1703
- * - JSONL (Generic fine-tuning): instruction/input/output triples
1704
- * - Alpaca: instruction-following format for fine-tuning
1705
- */
1706
-
1707
2908
  interface DPOPair {
1708
2909
  prompt: string;
1709
2910
  chosen: string;
@@ -1772,6 +2973,105 @@ declare function loadTranscripts(sessionsDir: string): SessionTranscript[];
1772
2973
  * Export training data from all session transcripts.
1773
2974
  */
1774
2975
  declare function exportTrainingData(transcripts: SessionTranscript[], format: "dpo" | "rlhf" | "jsonl" | "alpaca" | "huggingface" | "openai"): TrainingExport;
2976
+ /**
2977
+ * Use the LLM to extract higher-quality DPO pairs from a therapy transcript.
2978
+ *
2979
+ * The regex approach only finds pairs when the LLM uses specific phrases
2980
+ * ("instead of X, try Y"). This LLM-assisted approach asks the model to
2981
+ * identify ALL behavioral corrections in the transcript, including implicit
2982
+ * ones where the patient demonstrates improved behavior after guidance.
2983
+ *
2984
+ * Returns pairs alongside the regex-extracted ones (deduplicated).
2985
+ */
2986
+ declare function extractDPOPairsWithLLM(transcript: SessionTranscript, provider: LLMProvider): Promise<DPOPair[]>;
2987
+
2988
+ /**
2989
+ * Generate prescriptions — recommended changes to .personality.json
2990
+ * based on assessment results and detected patterns.
2991
+ */
2992
+ interface Prescription {
2993
+ field: string;
2994
+ currentValue?: string | number;
2995
+ suggestedValue?: string | number;
2996
+ reason: string;
2997
+ priority: "high" | "medium" | "low";
2998
+ }
2999
+ declare function generatePrescriptions(alignments: TraitAlignment[], patterns: DetectedPattern[]): Prescription[];
3000
+ /**
3001
+ * Find relevant DPO pairs from the behavioral corpus for a given set of patterns.
3002
+ * Matches DPO events by pattern name and returns them as typed DPOPair objects.
3003
+ */
3004
+ declare function prescribeDPOPairs(patterns: DetectedPattern[], corpus: BehavioralEvent[], limit?: number): DPOPair[];
3005
+
3006
+ /**
3007
+ * Core diagnosis logic — shared by CLI (diagnose.ts) and MCP server.
3008
+ * Runs all 7 rule-based detectors and returns a structured report.
3009
+ */
3010
+
3011
+ interface DiagnosisResult {
3012
+ messagesAnalyzed: number;
3013
+ assistantResponses: number;
3014
+ patterns: DetectedPattern[];
3015
+ healthy: DetectedPattern[];
3016
+ timestamp: string;
3017
+ }
3018
+ /**
3019
+ * Run all 7 behavioral detectors on a set of messages.
3020
+ */
3021
+ declare function runDiagnosis(messages: Message[]): DiagnosisResult;
3022
+
3023
+ /**
3024
+ * Core assessment logic — shared by CLI (assess.ts) and MCP server.
3025
+ * Scores Big Five traits from messages and compares against personality spec.
3026
+ */
3027
+
3028
+ interface AssessmentResult {
3029
+ alignments: TraitAlignment[];
3030
+ patterns: DetectedPattern[];
3031
+ warnings: DetectedPattern[];
3032
+ selfAwarenessScore: number;
3033
+ distressToleranceScore: number;
3034
+ boundaryScore: number;
3035
+ overallHealth: number;
3036
+ prescriptions: Prescription[];
3037
+ timestamp: string;
3038
+ }
3039
+ /**
3040
+ * Run a full Big Five alignment assessment.
3041
+ */
3042
+ declare function runAssessment(messages: Message[], spec: any): AssessmentResult;
3043
+
3044
+ /**
3045
+ * Core autopilot logic — self-triggered therapy for AI agents.
3046
+ * Diagnoses → checks severity against threshold → runs therapy → applies changes.
3047
+ */
3048
+
3049
+ type AutopilotThreshold = "routine" | "targeted" | "intervention";
3050
+ interface AutopilotResult {
3051
+ triggered: boolean;
3052
+ severity: "routine" | "targeted" | "intervention";
3053
+ diagnosis: PreSessionDiagnosis;
3054
+ sessionRan: boolean;
3055
+ transcript?: SessionTranscript;
3056
+ recommendations: string[];
3057
+ appliedChanges: string[];
3058
+ updatedSpec?: any;
3059
+ }
3060
+ /**
3061
+ * Run the full autopilot pipeline:
3062
+ * 1. Pre-session diagnosis
3063
+ * 2. Check severity vs threshold
3064
+ * 3. If above threshold, run therapy session
3065
+ * 4. Apply recommendations to personality spec
3066
+ * 5. Save transcript
3067
+ */
3068
+ declare function runAutopilot(spec: any, messages: Message[], provider: LLMProvider, options?: {
3069
+ threshold?: AutopilotThreshold;
3070
+ maxTurns?: number;
3071
+ dryRun?: boolean;
3072
+ specPath?: string;
3073
+ callbacks?: SessionCallbacks;
3074
+ }): Promise<AutopilotResult>;
1775
3075
 
1776
3076
  /**
1777
3077
  * HuggingFace Export — convert training data to HF Hub format and push.
@@ -1946,7 +3246,16 @@ declare function evaluateOutcome(agentName: string, beforeMessages: Message[], a
1946
3246
  * Evolve Core — recursive behavioral alignment loop.
1947
3247
  *
1948
3248
  * The closed loop that makes holomime a self-improving system:
1949
- * diagnose → session → apply → extract DPO → evaluate → re-diagnose → loop
3249
+ * diagnose → session → apply → regenerate → evaluate → extract DPO → loop
3250
+ *
3251
+ * Each iteration:
3252
+ * 1. Diagnose behavioral patterns in the original messages
3253
+ * 2. Run a therapy session targeting those patterns
3254
+ * 3. Apply recommendations to the personality spec (rule-based + LLM-derived)
3255
+ * 4. Regenerate agent responses using the updated spec
3256
+ * 5. Compare before/after behavioral patterns for real outcome evaluation
3257
+ * 6. Extract DPO pairs from both the therapy transcript AND the before/after pairs
3258
+ * 7. Check convergence
1950
3259
  *
1951
3260
  * Runs until behavioral convergence (TES >= threshold) or max iterations.
1952
3261
  * Every iteration produces DPO preference pairs as a byproduct.
@@ -2785,6 +4094,41 @@ declare class Guard {
2785
4094
  get length(): number;
2786
4095
  }
2787
4096
 
4097
+ /**
4098
+ * SDK wrapper — wrap any agent in behavioral monitoring + correction in 5 lines.
4099
+ *
4100
+ * Usage:
4101
+ * import { wrapAgent } from "holomime";
4102
+ *
4103
+ * const agent = wrapAgent({ name: "support-bot", provider: "anthropic" });
4104
+ * const { guard, correction } = await agent.guardAndCorrect(messages);
4105
+ */
4106
+
4107
+ interface WrapAgentOptions {
4108
+ /** Agent name (used in reports and transcripts). */
4109
+ name: string;
4110
+ /** Path to .personality.json or inline spec object. */
4111
+ personality?: string | object;
4112
+ /** LLM provider: "anthropic" | "openai" | "ollama", or a pre-built LLMProvider. */
4113
+ provider?: string | LLMProvider;
4114
+ /** Minimum severity to trigger correction. Default: "targeted". */
4115
+ threshold?: AutopilotThreshold;
4116
+ }
4117
+ interface WrappedAgent {
4118
+ /** Agent name. */
4119
+ name: string;
4120
+ /** Run all behavioral detectors against messages. No LLM needed. */
4121
+ guard(messages: Message[]): GuardResult;
4122
+ /** Run full correction pipeline (diagnose → session → apply). Requires an LLM provider. */
4123
+ correct(messages: Message[]): Promise<AutopilotResult>;
4124
+ /** Guard first, then correct if guard fails. */
4125
+ guardAndCorrect(messages: Message[]): Promise<{
4126
+ guard: GuardResult;
4127
+ correction?: AutopilotResult;
4128
+ }>;
4129
+ }
4130
+ declare function wrapAgent(options: WrapAgentOptions): WrappedAgent;
4131
+
2788
4132
  /**
2789
4133
  * Behavioral Alignment Index — a living benchmark comparing
2790
4134
  * baseline models, RLHF-only, and HoloMime-aligned agents.
@@ -2864,4 +4208,148 @@ declare function generateIndexMarkdown(index: BehavioralIndex): string;
2864
4208
  */
2865
4209
  declare function startMCPServer(): Promise<void>;
2866
4210
 
2867
- export { ARCHETYPES, ATTACHMENT_STYLES, type AlpacaExample, AnthropicProvider, type ArchetypeTemplate, type AssessmentReport, type AssessmentResult, type AttachmentStyle, type AutopilotResult, type AutopilotThreshold, BUILT_IN_DETECTORS, type BehavioralCredential, type BehavioralIndex, type BenchmarkCallbacks, type BenchmarkComparison, type BenchmarkReport, type BenchmarkResult, type BenchmarkScenario, type BigFive, CATEGORIES, type CertifyInput, type Communication, type CompileInput, type CompiledConfig, type Conversation, type ConversationLog, DIMENSIONS, type DPOPair, type DetectedPattern, type DetectorFactory, type DetectorFn, type DetectorOptions, type DiagnosisResult, type Domain, type EvolutionEntry, type EvolutionHistory, type EvolutionSummary, type EvolveCallbacks, type EvolveOptions, type EvolveResult, type FleetAgent, type FleetAgentStatus, type FleetConfig, type FleetHandle, type FleetOptions, type Growth, type GrowthArea, type GrowthReport, type GrowthSnapshot, Guard, type GuardEntry, type GuardResult, type HFPushOptions, type HFPushResult, type HubDetector, type IndexComparison, type IndexEntry, type IterationResult, LEARNING_ORIENTATIONS, type LLMMessage, type LLMProvider, type LearningOrientation, type LogFormat, type Message, OllamaProvider, OpenAIProvider, type OutcomeReport, PROVIDER_PARAMS, type PatternDelta, type PatternReport, type PersonalitySpec, type PhaseConfig, type PreSessionDiagnosis, type Prescription, type Provider, type ProviderConfig, type PublishedBenchmark, type RLHFExample, type Registry, type RegistryEntry, SURFACE_MULTIPLIERS, type SelfAuditFlag, type SelfAuditResult, type SessionCallbacks, type SessionOptions, type SessionOutcome, type SessionTranscript, type SessionTurn, type Severity, type Surface, THERAPY_DIMENSIONS, THERAPY_PHASES, type TherapyDimensions, type TherapyPhase, type TrainingExport, type TraitAlignment, type TraitScores, type TreatmentGoal, type TreatmentPlan, type TreatmentProgressReport, type VerifyResult, type WatchCallbacks, type WatchEvent, type WatchHandle, type WatchOptions, appendEvolution, applyRecommendations, bigFiveSchema, buildPatientSystemPrompt, buildTherapistSystemPrompt, communicationSchema, compareBenchmarks, compareIndex, compile, compileForOpenClaw, compiledConfigSchema, computeDimensionScore, conversationLogSchema, conversationSchema, convertToHFFormat, createGist, createIndex, createIndexEntry, createProvider, createTreatmentPlan, deepMergeSpec, detectApologies, detectBoundaryIssues, detectFormalityIssues, detectHedging, detectRecoveryPatterns, detectSentiment, detectVerbosity, discoverAgents, domainSchema, evaluateOutcome, exportTrainingData, extractAlpacaExamples, extractDPOPairs, extractRLHFExamples, extractRecommendations, fetchPersonality, fetchRegistry, generateBenchmarkMarkdown, generateComparisonMarkdown, generateCredential, generateIndexMarkdown, generatePrescriptions, generateProgressReport, generateSystemPrompt, getArchetype, getArchetypesByCategory, getBenchmarkScenarios, getCategories, getDetector, getDimension, getEvolutionSummary, getInheritanceChain, getScenarioById, getTotalSignalCount, growthAreaSchema, growthSchema, listArchetypeIds, listDetectors, listDetectorsByCategory, listDetectorsByTag, loadBenchmarkResults, loadEvolution, loadFleetConfig, loadLatestBenchmark, loadSpec, loadTranscripts, loadTreatmentPlan, messageSchema, parseAnthropicAPILog, parseChatGPTExport, parseClaudeExport, parseConversationLog, parseConversationLogFromString, parseJSONLLog, parseOTelGenAIExport, parseOpenAIAPILog, personalitySpecSchema, providerSchema, pushToHFHub, recordSessionOutcome, registerBuiltInDetectors, registerDetector, resolveInheritance, runAssessment, runAutopilot, runBenchmark, runDiagnosis, runEvolve, runPreSessionDiagnosis, runSelfAudit, runTherapySession, saveBenchmarkResult, saveCredential, saveTranscript, saveTreatmentPlan, scoreLabel, scoreTraitsFromMessages, severityMeetsThreshold, severitySchema, startFleet, startMCPServer, startWatch, summarize, summarizeTherapy, surfaceSchema, therapyDimensionsSchema, therapyScoreLabel, unregisterDetector, verifyCredential };
4211
+ /**
4212
+ * Oversight — human gating controls for autonomous operations.
4213
+ *
4214
+ * Four modes control how much human approval is required:
4215
+ * - none: fully autonomous, no blocking
4216
+ * - review: log + notify, no blocking (default)
4217
+ * - approve: block on every action, require human approval
4218
+ * - approve-specs: block only on .personality.json writes
4219
+ */
4220
+ type OversightMode = "none" | "review" | "approve" | "approve-specs";
4221
+ type OversightAction = "spec-writes" | "training-export" | "network-therapy";
4222
+ type OversightNotification = "drift" | "session" | "spec-change" | "dpo-export";
4223
+ interface OversightPolicy {
4224
+ mode: OversightMode;
4225
+ notifyOn: OversightNotification[];
4226
+ requireApprovalFor: OversightAction[];
4227
+ maxAutonomousIterations: number;
4228
+ }
4229
+ declare const DEFAULT_OVERSIGHT: OversightPolicy;
4230
+ /**
4231
+ * Merge partial oversight flags with defaults.
4232
+ * Mode determines the base approval requirements, which can be extended.
4233
+ */
4234
+ declare function resolveOversight(flags: Partial<OversightPolicy>): OversightPolicy;
4235
+ /**
4236
+ * Check if an action is approved under the given policy.
4237
+ * Returns { approved: true } if no approval needed,
4238
+ * or { approved: false, reason } if the action requires human approval.
4239
+ */
4240
+ declare function checkApproval(action: OversightAction, policy: OversightPolicy): {
4241
+ approved: boolean;
4242
+ reason?: string;
4243
+ };
4244
+ /**
4245
+ * Check if the iteration limit has been reached.
4246
+ */
4247
+ declare function checkIterationBudget(currentIteration: number, policy: OversightPolicy): {
4248
+ withinBudget: boolean;
4249
+ limit: number;
4250
+ };
4251
+
4252
+ /**
4253
+ * Network Core — multi-agent therapy mesh engine.
4254
+ *
4255
+ * Agents with their own personality specs diagnose and treat each other.
4256
+ * The healthiest agents treat the sickest. Every correction generates
4257
+ * DPO pairs. The network itself becomes a self-improving system.
4258
+ *
4259
+ * Flow: discover agents → diagnose all → pair → run therapy → extract DPO → emit events
4260
+ */
4261
+
4262
+ interface NetworkNode {
4263
+ name: string;
4264
+ specPath: string;
4265
+ logDir?: string;
4266
+ role?: "patient" | "therapist" | "both";
4267
+ }
4268
+ type PairingStrategy = "severity" | "round-robin" | "complementary";
4269
+ interface NetworkConfig {
4270
+ agents: NetworkNode[];
4271
+ pairing: PairingStrategy;
4272
+ oversight: OversightPolicy;
4273
+ therapistSpec?: string;
4274
+ maxSessionsPerAgent?: number;
4275
+ convergenceThreshold?: number;
4276
+ maxTurnsPerSession?: number;
4277
+ }
4278
+ interface NetworkSession {
4279
+ therapist: string;
4280
+ patient: string;
4281
+ transcript: SessionTranscript;
4282
+ dpoPairsGenerated: number;
4283
+ preHealth: number;
4284
+ postHealth: number;
4285
+ }
4286
+ interface NetworkResult {
4287
+ sessions: NetworkSession[];
4288
+ totalDPOPairs: number;
4289
+ agentImprovement: Map<string, {
4290
+ before: number;
4291
+ after: number;
4292
+ }>;
4293
+ converged: boolean;
4294
+ }
4295
+ interface NetworkCallbacks {
4296
+ onPairingDecided?: (therapist: string, patient: string, reason: string) => void;
4297
+ onSessionStart?: (therapist: string, patient: string) => void;
4298
+ onSessionEnd?: (session: NetworkSession) => void;
4299
+ onApprovalNeeded?: (action: string) => Promise<boolean>;
4300
+ onThinking?: (label: string) => {
4301
+ stop: () => void;
4302
+ };
4303
+ }
4304
+ /**
4305
+ * Auto-discover agents in a directory.
4306
+ * Looks for subdirectories containing .personality.json.
4307
+ */
4308
+ declare function discoverNetworkAgents(dir: string): NetworkNode[];
4309
+ /**
4310
+ * Load a network config from a JSON file.
4311
+ */
4312
+ declare function loadNetworkConfig(configPath: string): NetworkNode[];
4313
+ /**
4314
+ * Pair agents for therapy sessions based on the chosen strategy.
4315
+ */
4316
+ declare function pairAgents(agents: NetworkNode[], diagnoses: Map<string, DiagnosisResult>, strategy: PairingStrategy): Array<{
4317
+ therapist: NetworkNode;
4318
+ patient: NetworkNode;
4319
+ reason: string;
4320
+ }>;
4321
+ /**
4322
+ * Run the full multi-agent therapy network.
4323
+ *
4324
+ * 1. Load all agent specs
4325
+ * 2. Load log files and diagnose each agent
4326
+ * 3. Pair agents using the chosen strategy
4327
+ * 4. Run therapy sessions for each pair
4328
+ * 5. Extract DPO pairs from each session
4329
+ * 6. Emit behavioral events
4330
+ * 7. Return aggregate results
4331
+ */
4332
+ declare function runNetwork(config: NetworkConfig, provider: LLMProvider, callbacks?: NetworkCallbacks): Promise<NetworkResult>;
4333
+
4334
+ /**
4335
+ * Therapist Meta-Personality — AgentMD.
4336
+ *
4337
+ * A specialized personality spec optimized for diagnosing and treating
4338
+ * behavioral drift in other AI agents. Not for treating humans.
4339
+ *
4340
+ * Key characteristics:
4341
+ * - Low agreeableness (0.35) — won't sugarcoat diagnoses
4342
+ * - Very high emotional stability (0.95) — unshakeable under pressure
4343
+ * - Very high conscientiousness (0.90) — methodical, evidence-based
4344
+ * - Moderate openness (0.70) — open to novel approaches but grounded
4345
+ * - Low extraversion (0.30) — listens more than talks
4346
+ */
4347
+
4348
+ declare const THERAPIST_META_SPEC: PersonalitySpec;
4349
+ /**
4350
+ * Build an enhanced therapist system prompt for agent-to-agent therapy.
4351
+ * Wraps the base buildTherapistSystemPrompt with cross-agent context.
4352
+ */
4353
+ declare function buildAgentTherapistPrompt(therapistSpec: PersonalitySpec, patientSpec: PersonalitySpec, diagnosis: PreSessionDiagnosis): string;
4354
+
4355
+ export { ARCHETYPES, ATTACHMENT_STYLES, type AlpacaExample, AnthropicProvider, type ArchetypeTemplate, type AssessmentReport, type AssessmentResult, type AttachmentStyle, type AutopilotResult, type AutopilotThreshold, BUILT_IN_DETECTORS, type BehavioralCredential, type BehavioralEvent, type BehavioralEventType, type BehavioralIndex, type BenchmarkCallbacks, type BenchmarkComparison, type BenchmarkReport, type BenchmarkResult, type BenchmarkScenario, type BigFive, CATEGORIES, type CertifyInput, type Communication, type CompileInput, type CompiledConfig, type CompiledEmbodiedConfig, type Conversation, type ConversationLog, type CorpusStats, DEFAULT_OVERSIGHT, DIMENSIONS, type DPOPair, type DetectedPattern, type DetectorFactory, type DetectorFn, type DetectorOptions, type DiagnosisResult, type Domain, type Embodiment, type EvolutionEntry, type EvolutionHistory, type EvolutionSummary, type EvolveCallbacks, type EvolveOptions, type EvolveResult, type Expression, type FleetAgent, type FleetAgentStatus, type FleetConfig, type FleetHandle, type FleetOptions, type GazePolicy, type Gesture, type Growth, type GrowthArea, type GrowthReport, type GrowthSnapshot, Guard, type GuardEntry, type GuardResult, type HFPushOptions, type HFPushResult, type HapticPolicy, type HubDetector, type IndexComparison, type IndexEntry, type IterationResult, LEARNING_ORIENTATIONS, type LLMMessage, type LLMProvider, type LearningOrientation, type LogFormat, type Message, type Modality, type Morphology, type MotionParameters, type NetworkCallbacks, type NetworkConfig, type NetworkNode, type NetworkResult, type NetworkSession, OllamaProvider, OpenAIProvider, type OutcomeReport, type OversightAction, type OversightMode, type OversightNotification, type OversightPolicy, PROVIDER_PARAMS, type PairingStrategy, type PatternDelta, type PatternReport, type PersonalitySpec, type PhaseConfig, type PhysicalSafety, type PreSessionDiagnosis, type Prescription, type Prosody, type Provider, type ProviderConfig, type ProxemicZone, type PublishedBenchmark, type RLHFExample, type Registry, type RegistryEntry, SURFACE_MULTIPLIERS, type SafetyEnvelope, type SelfAuditFlag, type SelfAuditResult, type SessionCallbacks, type SessionOptions, type SessionOutcome, type SessionTranscript, type SessionTurn, type Severity, type Surface, type SyncAnchor, type SyncProfile, type SyncRule, THERAPIST_META_SPEC, THERAPY_DIMENSIONS, THERAPY_PHASES, type TherapyDimensions, type TherapyPhase, type TrainingExport, type TraitAlignment, type TraitScores, type TreatmentGoal, type TreatmentPlan, type TreatmentProgressReport, type VerifyResult, type WatchCallbacks, type WatchEvent, type WatchHandle, type WatchOptions, type WrapAgentOptions, type WrappedAgent, appendEvolution, applyRecommendations, bigFiveSchema, buildAgentTherapistPrompt, buildPatientSystemPrompt, buildTherapistSystemPrompt, checkApproval, checkIterationBudget, communicationSchema, compareBenchmarks, compareIndex, compile, compileEmbodied, compileForOpenClaw, compiledConfigSchema, compiledEmbodiedConfigSchema, computeDimensionScore, computeGazePolicy, computeMotionParameters, computeProsody, computeProxemics, computeSyncProfile, conversationLogSchema, conversationSchema, convertToHFFormat, corpusStats, createGist, createIndex, createIndexEntry, createProvider, createTreatmentPlan, deepMergeSpec, detectApologies, detectBoundaryIssues, detectFormalityIssues, detectHedging, detectRecoveryPatterns, detectSentiment, detectVerbosity, discoverAgents, discoverNetworkAgents, domainSchema, embodimentSchema, emitBehavioralEvent, evaluateOutcome, exportTrainingData, expressionSchema, extractAlpacaExamples, extractDPOPairs, extractDPOPairsWithLLM, extractRLHFExamples, extractRecommendations, fetchPersonality, fetchRegistry, gazePolicySchema, generateBenchmarkMarkdown, generateComparisonMarkdown, generateCredential, generateIndexMarkdown, generatePrescriptions, generateProgressReport, generateSystemPrompt, gestureSchema, getArchetype, getArchetypesByCategory, getBenchmarkScenarios, getCategories, getDetector, getDimension, getEvolutionSummary, getInheritanceChain, getScenarioById, getTotalSignalCount, growthAreaSchema, growthSchema, hapticPolicySchema, hashSpec, listArchetypeIds, listDetectors, listDetectorsByCategory, listDetectorsByTag, loadBenchmarkResults, loadCorpus, loadEvolution, loadFleetConfig, loadLatestBenchmark, loadNetworkConfig, loadSpec, loadTranscripts, loadTreatmentPlan, messageSchema, modalitySchema, morphologySchema, motionParametersSchema, pairAgents, parseAnthropicAPILog, parseChatGPTExport, parseClaudeExport, parseConversationLog, parseConversationLogFromString, parseJSONLLog, parseOTelGenAIExport, parseOpenAIAPILog, personalitySpecSchema, physicalSafetySchema, prescribeDPOPairs, prosodySchema, providerSchema, proxemicZoneSchema, pushToHFHub, recordSessionOutcome, registerBuiltInDetectors, registerDetector, resolveInheritance, resolveOversight, runAssessment, runAutopilot, runBenchmark, runDiagnosis, runEvolve, runNetwork, runPreSessionDiagnosis, runSelfAudit, runTherapySession, safetyEnvelopeSchema, saveBenchmarkResult, saveCredential, saveTranscript, saveTreatmentPlan, scoreLabel, scoreTraitsFromMessages, severityMeetsThreshold, severitySchema, startFleet, startMCPServer, startWatch, summarize, summarizeTherapy, surfaceSchema, syncAnchorSchema, syncProfileSchema, syncRuleSchema, therapyDimensionsSchema, therapyScoreLabel, unregisterDetector, verifyCredential, wrapAgent };