MCPcopy Create free account
hub / github.com/SkyworkAI/DeepResearchAgent / copy

Method copy

src/memory/context.py:556–658  ·  view source on GitHub ↗

Copy an existing memory configuration Args: memory_name: Name of the memory system to copy new_name: New name for the copied memory. If None, uses original name. new_version: New version for the copied memory. If None, increments version.

(self, 
                  memory_name: str,
                  new_name: Optional[str] = None, 
                  new_version: Optional[str] = None, 
                  new_config: Optional[Dict[str, Any]] = None)

Source from the content-addressed store, hash-verified

554 raise
555
556 async def copy(self,
557 memory_name: str,
558 new_name: Optional[str] = None,
559 new_version: Optional[str] = None,
560 new_config: Optional[Dict[str, Any]] = None) -> MemoryConfig:
561 """Copy an existing memory configuration
562
563 Args:
564 memory_name: Name of the memory system to copy
565 new_name: New name for the copied memory. If None, uses original name.
566 new_version: New version for the copied memory. If None, increments version.
567 new_config: New configuration dict for the copied memory. If None, uses original config.
568
569 Returns:
570 MemoryConfig: New memory configuration
571 """
572 try:
573 original_config = self._memory_configs.get(memory_name)
574 if original_config is None:
575 raise ValueError(f"Memory {memory_name} not found")
576
577 if original_config.cls is None:
578 raise ValueError(f"Cannot copy memory {memory_name}: no class provided")
579
580 # Determine new name
581 if new_name is None:
582 new_name = memory_name
583
584 # Prepare config dict (merge original config with new config)
585 memory_config_dict = original_config.config.copy() if original_config.config else {}
586 if new_config:
587 # Merge new config into original config
588 memory_config_dict.update(new_config)
589
590 # Instantiate memory instance (copy is a runtime operation)
591 try:
592 memory_instance = original_config.cls(**memory_config_dict)
593 except Exception as e:
594 logger.error(f"| ❌ Failed to create memory instance for {original_config.cls.__name__}: {e}")
595 raise ValueError(f"Failed to instantiate memory {original_config.cls.__name__} with provided config: {e}")
596
597 # Apply name override if provided (after instantiation)
598 if new_name != memory_name:
599 memory_instance.name = new_name
600
601 memory_description = memory_instance.description
602 memory_metadata = getattr(memory_instance, 'metadata', {})
603 memory_require_grad = memory_config_dict.get("require_grad", memory_instance.require_grad) if memory_config_dict and "require_grad" in memory_config_dict else memory_instance.require_grad
604
605 # Determine new version from version_manager
606 if new_version is None:
607 if new_name == memory_name:
608 # If copying with same name, get next version from version_manager
609 new_version = await version_manager.generate_next_version("memory", new_name, "patch")
610 else:
611 # If copying with different name, get or generate version for new name
612 new_version = await version_manager.get_version("memory", new_name)
613

Callers

nothing calls this directly

Calls 12

save_to_jsonMethod · 0.95
save_contractMethod · 0.95
MemoryConfigClass · 0.90
generate_next_versionMethod · 0.80
warningMethod · 0.80
register_versionMethod · 0.80
getMethod · 0.45
updateMethod · 0.45
errorMethod · 0.45
get_versionMethod · 0.45
infoMethod · 0.45

Tested by

no test coverage detected