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/README.md +53 -16
- package/dist/cli.js +1717 -279
- package/dist/index.d.ts +1666 -178
- package/dist/index.js +1454 -157
- package/dist/mcp-server.js +404 -93
- package/package.json +8 -5
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: "
|
|
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: "
|
|
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: "
|
|
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?: "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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?: "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: "
|
|
1171
|
+
learning_orientation: "fixed" | "growth" | "mixed";
|
|
884
1172
|
boundary_awareness: number;
|
|
885
1173
|
interpersonal_sensitivity: number;
|
|
886
1174
|
};
|
|
887
1175
|
communication: {
|
|
888
|
-
register: "
|
|
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
|
-
|
|
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: "
|
|
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?: "
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
1512
|
-
*
|
|
1513
|
-
*
|
|
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
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
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
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
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
|
-
*
|
|
2759
|
+
* Compute a SHA-256 hash of a personality spec for corpus tagging.
|
|
1576
2760
|
*/
|
|
1577
|
-
declare function
|
|
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
|
-
*
|
|
1602
|
-
*
|
|
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
|
|
1649
|
-
*
|
|
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 →
|
|
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
|
-
|
|
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 };
|