universal-memory 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. {universal_memory-0.1.2 → universal_memory-0.1.3}/PKG-INFO +30 -2
  2. {universal_memory-0.1.2 → universal_memory-0.1.3}/README.md +29 -1
  3. {universal_memory-0.1.2 → universal_memory-0.1.3}/pyproject.toml +5 -1
  4. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/__init__.py +1 -1
  5. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/host/sync_instructions_use_case.py +9 -6
  6. universal_memory-0.1.3/src/universal_memory/application/onboarding/setup_project.py +687 -0
  7. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/storage/local_fact_repository.py +1 -7
  8. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/storage/local_latent_skill_repository.py +1 -7
  9. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/storage/local_rule_repository.py +1 -2
  10. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/interfaces/cli/init_command.py +8 -8
  11. universal_memory-0.1.2/src/universal_memory/application/onboarding/setup_project.py +0 -302
  12. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/__main__.py +0 -0
  13. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/__init__.py +0 -0
  14. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/diagnostics/__init__.py +0 -0
  15. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/diagnostics/doctor_use_case.py +0 -0
  16. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/host/__init__.py +0 -0
  17. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/host/drift_detector.py +0 -0
  18. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/host/setup_host_use_case.py +0 -0
  19. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/__init__.py +0 -0
  20. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/assemble_context_summary_use_case.py +0 -0
  21. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/context_hygiene_use_case.py +0 -0
  22. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/get_memory_status_use_case.py +0 -0
  23. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/list_facts_use_case.py +0 -0
  24. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/purge_fact_use_case.py +0 -0
  25. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/remember_fact_use_case.py +0 -0
  26. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/memory/search_facts_use_case.py +0 -0
  27. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/onboarding/__init__.py +0 -0
  28. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/security/__init__.py +0 -0
  29. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/security/list_audit_log_use_case.py +0 -0
  30. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/security/list_snapshots_use_case.py +0 -0
  31. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/security/rollback_use_case.py +0 -0
  32. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/security/safe_write_use_case.py +0 -0
  33. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/skills/__init__.py +0 -0
  34. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/skills/generate_skill.py +0 -0
  35. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/skills/list_skills.py +0 -0
  36. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/skills/native_skill_sync.py +0 -0
  37. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/skills/propose_skill.py +0 -0
  38. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/skills/track_latent_skill.py +0 -0
  39. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/skills/update_skill.py +0 -0
  40. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/update/__init__.py +0 -0
  41. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/application/update/update_use_cases.py +0 -0
  42. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/bootstrap/__init__.py +0 -0
  43. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/bootstrap/cli.py +0 -0
  44. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/bootstrap/mcp.py +0 -0
  45. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/__init__.py +0 -0
  46. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/__init__.py +0 -0
  47. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/audit_event.py +0 -0
  48. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/base.py +0 -0
  49. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/context_summary.py +0 -0
  50. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/fact.py +0 -0
  51. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/host.py +0 -0
  52. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/instruction_target.py +0 -0
  53. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/latent_skill.py +0 -0
  54. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/rule.py +0 -0
  55. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/runtime.py +0 -0
  56. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/safe_write_result.py +0 -0
  57. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/entities/snapshot.py +0 -0
  58. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/exceptions.py +0 -0
  59. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/__init__.py +0 -0
  60. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/audit_log_repository.py +0 -0
  61. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/config_validation_port.py +0 -0
  62. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/context_summary_repository.py +0 -0
  63. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/fact_repository.py +0 -0
  64. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/latent_skill_repository.py +0 -0
  65. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/project_layout_port.py +0 -0
  66. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/rule_repository.py +0 -0
  67. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/secret_scanner_port.py +0 -0
  68. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/ports/snapshot_repository.py +0 -0
  69. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/domain/project_layout.py +0 -0
  70. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/__init__.py +0 -0
  71. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/config/__init__.py +0 -0
  72. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/config/adapters.py +0 -0
  73. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/config/project_layout.py +0 -0
  74. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/config/toml_loader.py +0 -0
  75. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/security/__init__.py +0 -0
  76. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/security/entropy_secret_scanner.py +0 -0
  77. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/security/local_audit_log_repository.py +0 -0
  78. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/security/local_snapshot_repository.py +0 -0
  79. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/storage/__init__.py +0 -0
  80. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/infrastructure/storage/local_context_summary_repository.py +0 -0
  81. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/interfaces/__init__.py +0 -0
  82. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/interfaces/cli/__init__.py +0 -0
  83. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/interfaces/cli/message_catalog.py +0 -0
  84. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/interfaces/errors.py +0 -0
  85. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/interfaces/mcp/__init__.py +0 -0
  86. {universal_memory-0.1.2 → universal_memory-0.1.3}/src/universal_memory/interfaces/mcp/server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: universal-memory
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Vendor-agnostic cognitive persistence layer for AI agents.
5
5
  Keywords: agent-memory,ai,ai-agents,agent-skills,claude-code,codex,context-engineering,developer-tools,llm,mcp,memory
6
6
  Author: Yan L. Amorelli
@@ -25,7 +25,7 @@ Project-URL: Repository, https://github.com/YanAmorelli/universal-memory
25
25
  Description-Content-Type: text/markdown
26
26
 
27
27
  <p align="center">
28
- <img src="assets/umem-logo.png" alt="Universal Memory logo" width="720">
28
+ <img src="assets/umem-logo-transparent.png" alt="Universal Memory logo" width="720">
29
29
  </p>
30
30
 
31
31
  # Universal Memory (umem)
@@ -102,6 +102,34 @@ uvx --from universal-memory umem --help
102
102
  pip install universal-memory
103
103
  ```
104
104
 
105
+ ### Upgrade Universal Memory
106
+ `umem update` does not upgrade the Python package from PyPI. It performs local, offline
107
+ maintenance for the current `.umem` workspace, such as schema migrations, benchmark refreshes,
108
+ and skill synchronization.
109
+
110
+ To upgrade the installed `umem` executable, use the package manager that installed it:
111
+
112
+ ```bash
113
+ # If installed with uv tool
114
+ uv tool upgrade universal-memory
115
+
116
+ # If installed with pipx
117
+ pipx upgrade universal-memory
118
+
119
+ # If installed with pip
120
+ python -m pip install --upgrade universal-memory
121
+
122
+ # If running temporarily with uvx
123
+ uvx --refresh --from universal-memory umem --version
124
+ ```
125
+
126
+ Confirm the executable you are running:
127
+
128
+ ```bash
129
+ umem --version
130
+ which umem
131
+ ```
132
+
105
133
  ---
106
134
 
107
135
  ## Quick Start Guide
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="assets/umem-logo.png" alt="Universal Memory logo" width="720">
2
+ <img src="assets/umem-logo-transparent.png" alt="Universal Memory logo" width="720">
3
3
  </p>
4
4
 
5
5
  # Universal Memory (umem)
@@ -76,6 +76,34 @@ uvx --from universal-memory umem --help
76
76
  pip install universal-memory
77
77
  ```
78
78
 
79
+ ### Upgrade Universal Memory
80
+ `umem update` does not upgrade the Python package from PyPI. It performs local, offline
81
+ maintenance for the current `.umem` workspace, such as schema migrations, benchmark refreshes,
82
+ and skill synchronization.
83
+
84
+ To upgrade the installed `umem` executable, use the package manager that installed it:
85
+
86
+ ```bash
87
+ # If installed with uv tool
88
+ uv tool upgrade universal-memory
89
+
90
+ # If installed with pipx
91
+ pipx upgrade universal-memory
92
+
93
+ # If installed with pip
94
+ python -m pip install --upgrade universal-memory
95
+
96
+ # If running temporarily with uvx
97
+ uvx --refresh --from universal-memory umem --version
98
+ ```
99
+
100
+ Confirm the executable you are running:
101
+
102
+ ```bash
103
+ umem --version
104
+ which umem
105
+ ```
106
+
79
107
  ---
80
108
 
81
109
  ## Quick Start Guide
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "universal-memory"
3
- version = "0.1.2"
3
+ version = "0.1.3"
4
4
  description = "Vendor-agnostic cognitive persistence layer for AI agents."
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -54,6 +54,10 @@ dev = [
54
54
  "pytest>=8.0.0",
55
55
  "ruff>=0.3.0",
56
56
  ]
57
+ docs = [
58
+ "mkdocs-material>=9.5.0",
59
+ "mkdocs>=1.6.0",
60
+ ]
57
61
 
58
62
  [build-system]
59
63
  requires = ["uv_build>=0.11.7,<0.12.0"]
@@ -5,4 +5,4 @@ from importlib.metadata import PackageNotFoundError, version
5
5
  try:
6
6
  __version__ = version("universal-memory")
7
7
  except PackageNotFoundError:
8
- __version__ = "0.1.2"
8
+ __version__ = "0.1.3"
@@ -95,7 +95,10 @@ class SyncInstructionsUseCase:
95
95
  )
96
96
  command = replace(command, max_managed_lines=max_lines, max_managed_chars=max_chars)
97
97
 
98
- host_ids, config_warnings = self._host_ids_for_command(command.host_ids)
98
+ host_ids, config_warnings = self._host_ids_for_command(
99
+ command.host_ids,
100
+ apply=command.apply,
101
+ )
99
102
  all_blocks = self._active_rule_blocks()
100
103
  plans = self._plan_commands(host_ids, all_blocks, command)
101
104
 
@@ -306,8 +309,6 @@ class SyncInstructionsUseCase:
306
309
  should_write_agents,
307
310
  )
308
311
  )
309
- if not plans and host_ids:
310
- raise ValidationFailedError("Nenhum host suportado informado para sincronizacao.")
311
312
  return plans
312
313
 
313
314
  def _active_rule_blocks(self) -> list[InstructionBlock]:
@@ -359,7 +360,9 @@ class SyncInstructionsUseCase:
359
360
  raise ValidationFailedError(f"Hosts nao suportados: {', '.join(unsupported)}")
360
361
  return normalized
361
362
 
362
- def _host_ids_for_command(self, host_ids: list[str] | None) -> tuple[list[str], list[str]]:
363
+ def _host_ids_for_command(
364
+ self, host_ids: list[str] | None, *, apply: bool
365
+ ) -> tuple[list[str], list[str]]:
363
366
  normalized = self._normalized_host_ids(host_ids)
364
367
  enabled_hosts = self._enabled_hosts_from_config()
365
368
  if enabled_hosts is None:
@@ -371,14 +374,14 @@ class SyncInstructionsUseCase:
371
374
  warnings = []
372
375
  to_enable = []
373
376
  for host_id in normalized:
374
- if host_id not in enabled_hosts:
377
+ if host_id not in enabled_hosts and apply:
375
378
  warnings.append(
376
379
  f"Host '{host_id}' nao esta habilitado em .umem/config.toml; "
377
380
  "ativando automaticamente."
378
381
  )
379
382
  to_enable.append(host_id)
380
383
 
381
- if to_enable:
384
+ if to_enable and apply:
382
385
  new_enabled = list(enabled_hosts)
383
386
  for h in to_enable:
384
387
  if h not in new_enabled: