@@ -344,8 +344,12 @@ def _build_deployment_manifest(
344344 backend : str ,
345345 anyllm_provider : str | None ,
346346 region : str | None ,
347- proxy_mode : str ,
347+ proxy_mode : str | None ,
348348 memory : bool ,
349+ learn_enabled : bool | None ,
350+ memory_storage_mode : str ,
351+ traffic_learning_min_evidence : int ,
352+ memory_project_root : str ,
349353 telemetry : bool ,
350354 no_telemetry : bool ,
351355 image : str ,
@@ -370,9 +374,13 @@ def _build_deployment_manifest(
370374 anyllm_provider = anyllm_provider ,
371375 region = region ,
372376 proxy_mode = proxy_mode ,
373- memory_enabled = memory ,
377+ memory_enabled = memory or learn_enabled is True ,
374378 telemetry_enabled = telemetry and not no_telemetry ,
375379 image = image ,
380+ learn_enabled = learn_enabled ,
381+ memory_storage_mode = memory_storage_mode ,
382+ traffic_learning_min_evidence = traffic_learning_min_evidence ,
383+ memory_project_root = memory_project_root ,
376384 no_http2 = no_http2 ,
377385 code_aware = code_aware ,
378386 intercept_tool_results = intercept_tool_results ,
@@ -524,11 +532,38 @@ def _echo_installed(manifest: DeploymentManifest, *, prefix: str = "Installed pe
524532@click .option (
525533 "--mode" ,
526534 "proxy_mode" ,
527- default = "cache" ,
528- show_default = True ,
529- help = "Proxy optimization mode. cache = delta-only compression at ~0 prefix-cache busts." ,
535+ default = None ,
536+ help = "Proxy optimization mode. Omit to use runtime/settings defaults." ,
530537)
531538@click .option ("--memory" , is_flag = True , help = "Enable persistent memory in the proxy runtime." )
539+ @click .option (
540+ "--learn/--no-learn" ,
541+ "learn_enabled" ,
542+ default = None ,
543+ help = "Explicitly enable or disable traffic learning." ,
544+ )
545+ @click .option (
546+ "--memory-storage" ,
547+ "memory_storage_mode" ,
548+ type = click .Choice (["project" , "user" , "global" ], case_sensitive = False ),
549+ default = "project" ,
550+ show_default = True ,
551+ help = "Persistent memory storage scope." ,
552+ )
553+ @click .option (
554+ "--min-evidence" ,
555+ "traffic_learning_min_evidence" ,
556+ type = click .IntRange (min = 1 ),
557+ default = 5 ,
558+ show_default = True ,
559+ help = "Evidence count required before learning persists a pattern." ,
560+ )
561+ @click .option (
562+ "--memory-project-root" ,
563+ type = click .Path (path_type = str ),
564+ default = "" ,
565+ help = "Override the project root used by project memory storage." ,
566+ )
532567@click .option (
533568 "--telemetry" ,
534569 is_flag = True ,
@@ -606,8 +641,12 @@ def install_apply(
606641 backend : str ,
607642 anyllm_provider : str | None ,
608643 region : str | None ,
609- proxy_mode : str ,
644+ proxy_mode : str | None ,
610645 memory : bool ,
646+ learn_enabled : bool | None ,
647+ memory_storage_mode : str ,
648+ traffic_learning_min_evidence : int ,
649+ memory_project_root : str ,
611650 telemetry : bool ,
612651 no_telemetry : bool ,
613652 image : str ,
@@ -654,6 +693,10 @@ def install_apply(
654693 region = region ,
655694 proxy_mode = proxy_mode ,
656695 memory = memory ,
696+ learn_enabled = learn_enabled ,
697+ memory_storage_mode = memory_storage_mode ,
698+ traffic_learning_min_evidence = traffic_learning_min_evidence ,
699+ memory_project_root = memory_project_root ,
657700 telemetry = telemetry ,
658701 no_telemetry = no_telemetry ,
659702 image = image ,
@@ -699,9 +742,8 @@ def install_apply(
699742@click .option (
700743 "--mode" ,
701744 "proxy_mode" ,
702- default = "cache" ,
703- show_default = True ,
704- help = "Proxy optimization mode. cache = delta-only compression at ~0 prefix-cache busts." ,
745+ default = None ,
746+ help = "Proxy optimization mode. Omit to use runtime/settings defaults." ,
705747)
706748@click .option (
707749 "--scope" ,
@@ -726,6 +768,34 @@ def install_apply(
726768 help = "Tool target to configure when --providers manual is used." ,
727769)
728770@click .option ("--memory" , is_flag = True , help = "Enable persistent memory in the proxy runtime." )
771+ @click .option (
772+ "--learn/--no-learn" ,
773+ "learn_enabled" ,
774+ default = None ,
775+ help = "Explicitly enable or disable traffic learning." ,
776+ )
777+ @click .option (
778+ "--memory-storage" ,
779+ "memory_storage_mode" ,
780+ type = click .Choice (["project" , "user" , "global" ], case_sensitive = False ),
781+ default = "project" ,
782+ show_default = True ,
783+ help = "Persistent memory storage scope." ,
784+ )
785+ @click .option (
786+ "--min-evidence" ,
787+ "traffic_learning_min_evidence" ,
788+ type = click .IntRange (min = 1 ),
789+ default = 5 ,
790+ show_default = True ,
791+ help = "Evidence count required before learning persists a pattern." ,
792+ )
793+ @click .option (
794+ "--memory-project-root" ,
795+ type = click .Path (path_type = str ),
796+ default = "" ,
797+ help = "Override the project root used by project memory storage." ,
798+ )
729799@click .option (
730800 "--telemetry" ,
731801 is_flag = True ,
@@ -758,11 +828,15 @@ def deploy(
758828 backend : str ,
759829 anyllm_provider : str | None ,
760830 region : str | None ,
761- proxy_mode : str ,
831+ proxy_mode : str | None ,
762832 scope : str ,
763833 provider_mode : str ,
764834 targets : tuple [str , ...],
765835 memory : bool ,
836+ learn_enabled : bool | None ,
837+ memory_storage_mode : str ,
838+ traffic_learning_min_evidence : int ,
839+ memory_project_root : str ,
766840 telemetry : bool ,
767841 no_telemetry : bool ,
768842 image : str ,
@@ -786,6 +860,10 @@ def deploy(
786860 region = region ,
787861 proxy_mode = proxy_mode ,
788862 memory = memory ,
863+ learn_enabled = learn_enabled ,
864+ memory_storage_mode = memory_storage_mode ,
865+ traffic_learning_min_evidence = traffic_learning_min_evidence ,
866+ memory_project_root = memory_project_root ,
789867 telemetry = telemetry ,
790868 no_telemetry = no_telemetry ,
791869 image = image ,
@@ -809,6 +887,18 @@ def install_status(profile: str) -> None:
809887 click .echo (f"Runtime: { manifest .runtime_kind } " )
810888 click .echo (f"Supervisor: { manifest .supervisor_kind } " )
811889 click .echo (f"Scope: { manifest .scope } " )
890+ click .echo (f"Mode: { getattr (manifest , 'proxy_mode' , None ) or 'runtime default' } " )
891+ click .echo (
892+ f"Memory: { 'enabled' if getattr (manifest , 'memory_enabled' , False ) else 'disabled' } "
893+ )
894+ learn_enabled = getattr (manifest , "learn_enabled" , None )
895+ learning = (
896+ "runtime default" if learn_enabled is None else ("enabled" if learn_enabled else "disabled" )
897+ )
898+ click .echo (f"Learning: { learning } " )
899+ click .echo (f"Storage: { getattr (manifest , 'memory_storage_mode' , 'project' )} " )
900+ click .echo (f"Min evidence: { getattr (manifest , 'traffic_learning_min_evidence' , 5 )} " )
901+ click .echo (f"Project root: { getattr (manifest , 'memory_project_root' , '' ) or 'runtime default' } " )
812902 click .echo (f"Port: { manifest .port } " )
813903 click .echo (f"Status: { runtime_status (manifest )} " )
814904 click .echo (f"Healthy: { 'yes' if probe_ready (manifest .health_url ) else 'no' } " )
0 commit comments