agmem 0.1.1__tar.gz → 0.1.2__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 (117) hide show
  1. {agmem-0.1.1/agmem.egg-info → agmem-0.1.2}/PKG-INFO +20 -3
  2. {agmem-0.1.1 → agmem-0.1.2}/README.md +12 -0
  3. {agmem-0.1.1 → agmem-0.1.2/agmem.egg-info}/PKG-INFO +20 -3
  4. {agmem-0.1.1 → agmem-0.1.2}/agmem.egg-info/SOURCES.txt +28 -1
  5. {agmem-0.1.1 → agmem-0.1.2}/agmem.egg-info/requires.txt +10 -1
  6. agmem-0.1.2/docs/AGMEM_PUBLISHING_SETUP.md +62 -0
  7. {agmem-0.1.1 → agmem-0.1.2}/memvcs/__init__.py +1 -1
  8. {agmem-0.1.1 → agmem-0.1.2}/memvcs/cli.py +35 -31
  9. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/__init__.py +9 -9
  10. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/add.py +77 -76
  11. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/blame.py +46 -53
  12. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/branch.py +13 -33
  13. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/checkout.py +27 -32
  14. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/clean.py +18 -23
  15. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/clone.py +4 -1
  16. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/commit.py +40 -39
  17. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/daemon.py +81 -76
  18. agmem-0.1.2/memvcs/commands/decay.py +77 -0
  19. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/diff.py +56 -57
  20. agmem-0.1.2/memvcs/commands/distill.py +74 -0
  21. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/fsck.py +55 -61
  22. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/garden.py +28 -37
  23. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/graph.py +41 -48
  24. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/init.py +16 -24
  25. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/log.py +25 -40
  26. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/merge.py +16 -28
  27. agmem-0.1.2/memvcs/commands/pack.py +129 -0
  28. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/pull.py +4 -1
  29. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/push.py +4 -2
  30. agmem-0.1.2/memvcs/commands/recall.py +145 -0
  31. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/reflog.py +13 -22
  32. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/remote.py +1 -0
  33. agmem-0.1.2/memvcs/commands/repair.py +66 -0
  34. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/reset.py +23 -33
  35. agmem-0.1.2/memvcs/commands/resurrect.py +82 -0
  36. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/search.py +3 -4
  37. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/serve.py +2 -1
  38. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/show.py +66 -36
  39. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/stash.py +34 -34
  40. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/status.py +27 -35
  41. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/tag.py +23 -47
  42. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/test.py +30 -44
  43. agmem-0.1.2/memvcs/commands/timeline.py +111 -0
  44. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/tree.py +26 -27
  45. agmem-0.1.2/memvcs/commands/verify.py +59 -0
  46. agmem-0.1.2/memvcs/commands/when.py +115 -0
  47. agmem-0.1.2/memvcs/core/access_index.py +167 -0
  48. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/config_loader.py +3 -1
  49. agmem-0.1.2/memvcs/core/consistency.py +214 -0
  50. agmem-0.1.2/memvcs/core/decay.py +185 -0
  51. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/diff.py +158 -143
  52. agmem-0.1.2/memvcs/core/distiller.py +277 -0
  53. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/gardener.py +164 -132
  54. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/hooks.py +48 -14
  55. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/knowledge_graph.py +134 -138
  56. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/merge.py +248 -171
  57. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/objects.py +95 -96
  58. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/pii_scanner.py +147 -146
  59. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/refs.py +132 -115
  60. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/repository.py +174 -164
  61. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/schema.py +155 -113
  62. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/staging.py +60 -65
  63. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/storage/__init__.py +20 -18
  64. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/storage/base.py +74 -70
  65. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/storage/gcs.py +70 -68
  66. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/storage/local.py +42 -40
  67. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/storage/s3.py +105 -110
  68. agmem-0.1.2/memvcs/core/temporal_index.py +112 -0
  69. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/test_runner.py +101 -93
  70. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/vector_store.py +41 -35
  71. {agmem-0.1.1 → agmem-0.1.2}/memvcs/integrations/mcp_server.py +1 -3
  72. {agmem-0.1.1 → agmem-0.1.2}/memvcs/integrations/web_ui/server.py +25 -26
  73. agmem-0.1.2/memvcs/retrieval/__init__.py +22 -0
  74. agmem-0.1.2/memvcs/retrieval/base.py +54 -0
  75. agmem-0.1.2/memvcs/retrieval/pack.py +128 -0
  76. agmem-0.1.2/memvcs/retrieval/recaller.py +105 -0
  77. agmem-0.1.2/memvcs/retrieval/strategies.py +314 -0
  78. {agmem-0.1.1 → agmem-0.1.2}/memvcs/utils/__init__.py +3 -3
  79. {agmem-0.1.1 → agmem-0.1.2}/memvcs/utils/helpers.py +52 -52
  80. {agmem-0.1.1 → agmem-0.1.2}/pyproject.toml +14 -6
  81. agmem-0.1.2/setup.py +64 -0
  82. agmem-0.1.2/tests/test_access_index.py +67 -0
  83. agmem-0.1.2/tests/test_advanced_commands.py +157 -0
  84. agmem-0.1.2/tests/test_commit_importance.py +47 -0
  85. agmem-0.1.2/tests/test_consistency.py +49 -0
  86. agmem-0.1.2/tests/test_decay.py +59 -0
  87. {agmem-0.1.1 → agmem-0.1.2}/tests/test_objects.py +39 -39
  88. {agmem-0.1.1 → agmem-0.1.2}/tests/test_plan_features.py +15 -2
  89. agmem-0.1.2/tests/test_repository.py +88 -0
  90. agmem-0.1.2/tests/test_retrieval.py +134 -0
  91. agmem-0.1.2/tests/test_temporal_index.py +54 -0
  92. agmem-0.1.1/setup.py +0 -64
  93. agmem-0.1.1/tests/test_repository.py +0 -90
  94. {agmem-0.1.1 → agmem-0.1.2}/LICENSE +0 -0
  95. {agmem-0.1.1 → agmem-0.1.2}/MANIFEST.in +0 -0
  96. {agmem-0.1.1 → agmem-0.1.2}/agmem.egg-info/dependency_links.txt +0 -0
  97. {agmem-0.1.1 → agmem-0.1.2}/agmem.egg-info/entry_points.txt +0 -0
  98. {agmem-0.1.1 → agmem-0.1.2}/agmem.egg-info/top_level.txt +0 -0
  99. {agmem-0.1.1 → agmem-0.1.2}/docs/CONFIG.md +0 -0
  100. {agmem-0.1.1 → agmem-0.1.2}/docs/GTM.md +0 -0
  101. {agmem-0.1.1 → agmem-0.1.2}/docs/KNOWLEDGE_GRAPH.md +0 -0
  102. {agmem-0.1.1 → agmem-0.1.2}/docs/TEST_REPORT.md +0 -0
  103. {agmem-0.1.1 → agmem-0.1.2}/docs/aux/INSTALL.md +0 -0
  104. {agmem-0.1.1 → agmem-0.1.2}/docs/aux/MARKET_POSITIONING.md +0 -0
  105. {agmem-0.1.1 → agmem-0.1.2}/docs/aux/README.md +0 -0
  106. {agmem-0.1.1 → agmem-0.1.2}/docs/aux/STRESS_TEST_REPORT.md +0 -0
  107. {agmem-0.1.1 → agmem-0.1.2}/examples/basic_workflow.sh +0 -0
  108. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/base.py +0 -0
  109. {agmem-0.1.1 → agmem-0.1.2}/memvcs/commands/mcp.py +0 -0
  110. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/__init__.py +0 -0
  111. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/constants.py +0 -0
  112. {agmem-0.1.1 → agmem-0.1.2}/memvcs/core/remote.py +0 -0
  113. {agmem-0.1.1 → agmem-0.1.2}/memvcs/integrations/__init__.py +0 -0
  114. {agmem-0.1.1 → agmem-0.1.2}/memvcs/integrations/web_ui/__init__.py +0 -0
  115. {agmem-0.1.1 → agmem-0.1.2}/setup.cfg +0 -0
  116. {agmem-0.1.1 → agmem-0.1.2}/tests/test_edge_cases.py +0 -0
  117. {agmem-0.1.1 → agmem-0.1.2}/tests/test_pii.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agmem
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Agentic Memory Version Control System - Git for AI agent memories
5
5
  Home-page: https://github.com/vivek-tiwari-vt/agmem
6
6
  Author: agmem Team
@@ -16,7 +16,6 @@ Classifier: Intended Audience :: Developers
16
16
  Classifier: License :: OSI Approved :: MIT License
17
17
  Classifier: Operating System :: OS Independent
18
18
  Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.8
20
19
  Classifier: Programming Language :: Python :: 3.9
21
20
  Classifier: Programming Language :: Python :: 3.10
22
21
  Classifier: Programming Language :: Python :: 3.11
@@ -30,7 +29,7 @@ Requires-Dist: PyYAML>=6.0.0
30
29
  Provides-Extra: dev
31
30
  Requires-Dist: pytest>=7.0.0; extra == "dev"
32
31
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
33
- Requires-Dist: black>=22.0.0; extra == "dev"
32
+ Requires-Dist: black==24.10.0; extra == "dev"
34
33
  Requires-Dist: flake8>=5.0.0; extra == "dev"
35
34
  Requires-Dist: mypy>=1.0.0; extra == "dev"
36
35
  Provides-Extra: mcp
@@ -53,6 +52,12 @@ Provides-Extra: daemon
53
52
  Requires-Dist: watchdog>=3.0.0; extra == "daemon"
54
53
  Provides-Extra: graph
55
54
  Requires-Dist: networkx>=3.0; extra == "graph"
55
+ Provides-Extra: pack
56
+ Requires-Dist: tiktoken>=0.5.0; extra == "pack"
57
+ Provides-Extra: distill
58
+ Requires-Dist: openai>=1.0.0; extra == "distill"
59
+ Provides-Extra: verify
60
+ Requires-Dist: openai>=1.0.0; extra == "verify"
56
61
  Provides-Extra: all
57
62
  Requires-Dist: mcp>=1.0.0; extra == "all"
58
63
  Requires-Dist: sqlite-vec>=0.1.0; extra == "all"
@@ -72,6 +77,7 @@ Dynamic: requires-python
72
77
 
73
78
  # agmem - Agentic Memory Version Control System
74
79
 
80
+ [![PyPI version](https://img.shields.io/pypi/v/agmem.svg)](https://pypi.org/project/agmem/)
75
81
  [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
76
82
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
77
83
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
@@ -109,6 +115,8 @@ agmem solves all of these problems with a familiar Git-like interface.
109
115
 
110
116
  ### Installation
111
117
 
118
+ **From PyPI** ([pypi.org/project/agmem](https://pypi.org/project/agmem/)):
119
+
112
120
  ```bash
113
121
  pip install agmem
114
122
  ```
@@ -639,6 +647,15 @@ Or connect via MCP and call `memory_add` from your agent.
639
647
  3. Write via `agmem add` + `agmem commit` or MCP `memory_add`
640
648
  4. Optional: Use `agmem search` for semantic retrieval
641
649
 
650
+ ## Links
651
+
652
+ - **PyPI:** [pypi.org/project/agmem](https://pypi.org/project/agmem/) — `pip install agmem`
653
+
654
+ **GitHub repo (About):** Use this description and topics in your repo’s **About** (gear → Description & topics):
655
+
656
+ - **Description:** Git for AI agent memories. Version control for episodic logs, semantic knowledge, and procedural workflows.
657
+ - **Topics:** `ai` `agent` `memory` `version-control` `git` `vcs` `llm` `python`
658
+
642
659
  ## Contributing
643
660
 
644
661
  Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details.
@@ -1,5 +1,6 @@
1
1
  # agmem - Agentic Memory Version Control System
2
2
 
3
+ [![PyPI version](https://img.shields.io/pypi/v/agmem.svg)](https://pypi.org/project/agmem/)
3
4
  [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
4
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
6
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
@@ -37,6 +38,8 @@ agmem solves all of these problems with a familiar Git-like interface.
37
38
 
38
39
  ### Installation
39
40
 
41
+ **From PyPI** ([pypi.org/project/agmem](https://pypi.org/project/agmem/)):
42
+
40
43
  ```bash
41
44
  pip install agmem
42
45
  ```
@@ -567,6 +570,15 @@ Or connect via MCP and call `memory_add` from your agent.
567
570
  3. Write via `agmem add` + `agmem commit` or MCP `memory_add`
568
571
  4. Optional: Use `agmem search` for semantic retrieval
569
572
 
573
+ ## Links
574
+
575
+ - **PyPI:** [pypi.org/project/agmem](https://pypi.org/project/agmem/) — `pip install agmem`
576
+
577
+ **GitHub repo (About):** Use this description and topics in your repo’s **About** (gear → Description & topics):
578
+
579
+ - **Description:** Git for AI agent memories. Version control for episodic logs, semantic knowledge, and procedural workflows.
580
+ - **Topics:** `ai` `agent` `memory` `version-control` `git` `vcs` `llm` `python`
581
+
570
582
  ## Contributing
571
583
 
572
584
  Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agmem
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Agentic Memory Version Control System - Git for AI agent memories
5
5
  Home-page: https://github.com/vivek-tiwari-vt/agmem
6
6
  Author: agmem Team
@@ -16,7 +16,6 @@ Classifier: Intended Audience :: Developers
16
16
  Classifier: License :: OSI Approved :: MIT License
17
17
  Classifier: Operating System :: OS Independent
18
18
  Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.8
20
19
  Classifier: Programming Language :: Python :: 3.9
21
20
  Classifier: Programming Language :: Python :: 3.10
22
21
  Classifier: Programming Language :: Python :: 3.11
@@ -30,7 +29,7 @@ Requires-Dist: PyYAML>=6.0.0
30
29
  Provides-Extra: dev
31
30
  Requires-Dist: pytest>=7.0.0; extra == "dev"
32
31
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
33
- Requires-Dist: black>=22.0.0; extra == "dev"
32
+ Requires-Dist: black==24.10.0; extra == "dev"
34
33
  Requires-Dist: flake8>=5.0.0; extra == "dev"
35
34
  Requires-Dist: mypy>=1.0.0; extra == "dev"
36
35
  Provides-Extra: mcp
@@ -53,6 +52,12 @@ Provides-Extra: daemon
53
52
  Requires-Dist: watchdog>=3.0.0; extra == "daemon"
54
53
  Provides-Extra: graph
55
54
  Requires-Dist: networkx>=3.0; extra == "graph"
55
+ Provides-Extra: pack
56
+ Requires-Dist: tiktoken>=0.5.0; extra == "pack"
57
+ Provides-Extra: distill
58
+ Requires-Dist: openai>=1.0.0; extra == "distill"
59
+ Provides-Extra: verify
60
+ Requires-Dist: openai>=1.0.0; extra == "verify"
56
61
  Provides-Extra: all
57
62
  Requires-Dist: mcp>=1.0.0; extra == "all"
58
63
  Requires-Dist: sqlite-vec>=0.1.0; extra == "all"
@@ -72,6 +77,7 @@ Dynamic: requires-python
72
77
 
73
78
  # agmem - Agentic Memory Version Control System
74
79
 
80
+ [![PyPI version](https://img.shields.io/pypi/v/agmem.svg)](https://pypi.org/project/agmem/)
75
81
  [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
76
82
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
77
83
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
@@ -109,6 +115,8 @@ agmem solves all of these problems with a familiar Git-like interface.
109
115
 
110
116
  ### Installation
111
117
 
118
+ **From PyPI** ([pypi.org/project/agmem](https://pypi.org/project/agmem/)):
119
+
112
120
  ```bash
113
121
  pip install agmem
114
122
  ```
@@ -639,6 +647,15 @@ Or connect via MCP and call `memory_add` from your agent.
639
647
  3. Write via `agmem add` + `agmem commit` or MCP `memory_add`
640
648
  4. Optional: Use `agmem search` for semantic retrieval
641
649
 
650
+ ## Links
651
+
652
+ - **PyPI:** [pypi.org/project/agmem](https://pypi.org/project/agmem/) — `pip install agmem`
653
+
654
+ **GitHub repo (About):** Use this description and topics in your repo’s **About** (gear → Description & topics):
655
+
656
+ - **Description:** Git for AI agent memories. Version control for episodic logs, semantic knowledge, and procedural workflows.
657
+ - **Topics:** `ai` `agent` `memory` `version-control` `git` `vcs` `llm` `python`
658
+
642
659
  ## Contributing
643
660
 
644
661
  Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details.
@@ -9,6 +9,7 @@ agmem.egg-info/dependency_links.txt
9
9
  agmem.egg-info/entry_points.txt
10
10
  agmem.egg-info/requires.txt
11
11
  agmem.egg-info/top_level.txt
12
+ docs/AGMEM_PUBLISHING_SETUP.md
12
13
  docs/CONFIG.md
13
14
  docs/GTM.md
14
15
  docs/KNOWLEDGE_GRAPH.md
@@ -30,7 +31,9 @@ memvcs/commands/clean.py
30
31
  memvcs/commands/clone.py
31
32
  memvcs/commands/commit.py
32
33
  memvcs/commands/daemon.py
34
+ memvcs/commands/decay.py
33
35
  memvcs/commands/diff.py
36
+ memvcs/commands/distill.py
34
37
  memvcs/commands/fsck.py
35
38
  memvcs/commands/garden.py
36
39
  memvcs/commands/graph.py
@@ -38,11 +41,15 @@ memvcs/commands/init.py
38
41
  memvcs/commands/log.py
39
42
  memvcs/commands/mcp.py
40
43
  memvcs/commands/merge.py
44
+ memvcs/commands/pack.py
41
45
  memvcs/commands/pull.py
42
46
  memvcs/commands/push.py
47
+ memvcs/commands/recall.py
43
48
  memvcs/commands/reflog.py
44
49
  memvcs/commands/remote.py
50
+ memvcs/commands/repair.py
45
51
  memvcs/commands/reset.py
52
+ memvcs/commands/resurrect.py
46
53
  memvcs/commands/search.py
47
54
  memvcs/commands/serve.py
48
55
  memvcs/commands/show.py
@@ -50,11 +57,18 @@ memvcs/commands/stash.py
50
57
  memvcs/commands/status.py
51
58
  memvcs/commands/tag.py
52
59
  memvcs/commands/test.py
60
+ memvcs/commands/timeline.py
53
61
  memvcs/commands/tree.py
62
+ memvcs/commands/verify.py
63
+ memvcs/commands/when.py
54
64
  memvcs/core/__init__.py
65
+ memvcs/core/access_index.py
55
66
  memvcs/core/config_loader.py
67
+ memvcs/core/consistency.py
56
68
  memvcs/core/constants.py
69
+ memvcs/core/decay.py
57
70
  memvcs/core/diff.py
71
+ memvcs/core/distiller.py
58
72
  memvcs/core/gardener.py
59
73
  memvcs/core/hooks.py
60
74
  memvcs/core/knowledge_graph.py
@@ -66,6 +80,7 @@ memvcs/core/remote.py
66
80
  memvcs/core/repository.py
67
81
  memvcs/core/schema.py
68
82
  memvcs/core/staging.py
83
+ memvcs/core/temporal_index.py
69
84
  memvcs/core/test_runner.py
70
85
  memvcs/core/vector_store.py
71
86
  memvcs/core/storage/__init__.py
@@ -77,10 +92,22 @@ memvcs/integrations/__init__.py
77
92
  memvcs/integrations/mcp_server.py
78
93
  memvcs/integrations/web_ui/__init__.py
79
94
  memvcs/integrations/web_ui/server.py
95
+ memvcs/retrieval/__init__.py
96
+ memvcs/retrieval/base.py
97
+ memvcs/retrieval/pack.py
98
+ memvcs/retrieval/recaller.py
99
+ memvcs/retrieval/strategies.py
80
100
  memvcs/utils/__init__.py
81
101
  memvcs/utils/helpers.py
102
+ tests/test_access_index.py
103
+ tests/test_advanced_commands.py
104
+ tests/test_commit_importance.py
105
+ tests/test_consistency.py
106
+ tests/test_decay.py
82
107
  tests/test_edge_cases.py
83
108
  tests/test_objects.py
84
109
  tests/test_pii.py
85
110
  tests/test_plan_features.py
86
- tests/test_repository.py
111
+ tests/test_repository.py
112
+ tests/test_retrieval.py
113
+ tests/test_temporal_index.py
@@ -23,10 +23,13 @@ watchdog>=3.0.0
23
23
  [dev]
24
24
  pytest>=7.0.0
25
25
  pytest-cov>=4.0.0
26
- black>=22.0.0
26
+ black==24.10.0
27
27
  flake8>=5.0.0
28
28
  mypy>=1.0.0
29
29
 
30
+ [distill]
31
+ openai>=1.0.0
32
+
30
33
  [gardener]
31
34
  scikit-learn>=1.3.0
32
35
  openai>=1.0.0
@@ -37,6 +40,9 @@ networkx>=3.0
37
40
  [mcp]
38
41
  mcp>=1.0.0
39
42
 
43
+ [pack]
44
+ tiktoken>=0.5.0
45
+
40
46
  [pii]
41
47
  presidio-analyzer>=2.2.0
42
48
 
@@ -44,6 +50,9 @@ presidio-analyzer>=2.2.0
44
50
  sqlite-vec>=0.1.0
45
51
  sentence-transformers>=2.0.0
46
52
 
53
+ [verify]
54
+ openai>=1.0.0
55
+
47
56
  [web]
48
57
  fastapi>=0.100.0
49
58
  uvicorn>=0.22.0
@@ -0,0 +1,62 @@
1
+ # PyPI Trusted Publishing Setup
2
+
3
+ The `ci-and-publish.yml` workflow uses **PyPI Trusted Publishing** (OIDC) to publish packages without API tokens. You need to configure this on PyPI to allow your GitHub repository to upload releases.
4
+
5
+ ## 1. If the project `agmem` ALREADY exists on PyPI
6
+
7
+ 1. Log in to [pypi.org](https://pypi.org/).
8
+ 2. Go to your project's publishing settings: `https://pypi.org/manage/project/agmem/settings/publishing/`
9
+ 3. Scroll to **"Add a new publisher"** and select **GitHub**.
10
+ 4. Fill in the details:
11
+ - **Owner**: `vivek-tiwari-vt`
12
+ - **Repository name**: `agmem`
13
+ - **Workflow name**: `ci-and-publish.yml`
14
+ - **Environment name**: *Leave this blank* (unless you uncommented `environment: pypi` in the YAML).
15
+ 5. Click **Add**.
16
+
17
+ ## 2. If the project does NOT exist on PyPI yet
18
+
19
+ You cannot "register" a package via OIDC directly for the very first upload *unless* you use "Pending Publishers".
20
+
21
+ ### Option A: Use Pending Publishers (Recommended)
22
+ 1. Go to [https://pypi.org/manage/account/publishing/](https://pypi.org/manage/account/publishing/)
23
+ 2. Click **Add a new pending publisher**.
24
+ 3. Fill in the details:
25
+ - **Project name**: `agmem`
26
+ - **Owner**: `vivek-tiwari-vt`
27
+ - **Repository name**: `agmem`
28
+ - **Workflow name**: `ci-and-publish.yml`
29
+ - **Environment name**: *Leave blank*.
30
+ 4. Click **Add**.
31
+ 5. The next time your GitHub Action runs for a release, PyPI will create the project for you.
32
+
33
+ ### Option B: Manual First Release
34
+ 1. Build the package locally:
35
+ ```bash
36
+ pip install build twine
37
+ python -m build
38
+ ```
39
+ 2. Upload manually (requires your username/password or an API token):
40
+ ```bash
41
+ twine upload dist/*
42
+ ```
43
+ 3. Once created, follow the steps in **Section 1** to enable automation for future releases.
44
+
45
+ ## 3. Triggering the Release
46
+
47
+ The workflow runs when a **GitHub Release** is published.
48
+
49
+ 1. **Tag**: Push a tag starting with `v` (e.g., `v0.1.2`).
50
+ ```bash
51
+ git tag v0.1.2
52
+ git push origin v0.1.2
53
+ ```
54
+ *(This triggers the `release-on-tag.yml` workflow, which creates the GitHub Release)*
55
+
56
+ 2. **Release**: The `release-on-tag` workflow will create a GitHub Release.
57
+ 3. **Publish**: The creation of that Release triggers `ci-and-publish.yml`, which runs tests and then uploads to PyPI (if the Trusted Publisher is set up).
58
+
59
+ ## Troubleshooting
60
+
61
+ - **"OpenID Connect not supported"**: You forgot to set up the Trusted Publisher on PyPI.
62
+ - **"File already exists"**: You are trying to publish a version (`0.1.0` or `0.1.1`) that is already on PyPI. Bump the version in `pyproject.toml` and `memvcs/__init__.py` before tagging.
@@ -4,6 +4,6 @@ agmem - Agentic Memory Version Control System
4
4
  A Git-inspired version control system for AI agent memory artifacts.
5
5
  """
6
6
 
7
- __version__ = "0.1.1"
7
+ __version__ = "0.1.3"
8
8
  __author__ = "agmem Team"
9
9
  __license__ = "MIT"
@@ -49,6 +49,15 @@ from .commands.fsck import FsckCommand
49
49
  from .commands.graph import GraphCommand
50
50
  from .commands.daemon import DaemonCommand
51
51
  from .commands.garden import GardenCommand
52
+ from .commands.recall import RecallCommand
53
+ from .commands.when import WhenCommand
54
+ from .commands.timeline import TimelineCommand
55
+ from .commands.pack import PackCommand
56
+ from .commands.distill import DistillCommand
57
+ from .commands.decay import DecayCommand
58
+ from .commands.resurrect import ResurrectCommand
59
+ from .commands.verify import VerifyCommand
60
+ from .commands.repair import RepairCommand
52
61
 
53
62
 
54
63
  # List of available commands
@@ -82,14 +91,23 @@ COMMANDS = [
82
91
  GraphCommand,
83
92
  DaemonCommand,
84
93
  GardenCommand,
94
+ RecallCommand,
95
+ WhenCommand,
96
+ TimelineCommand,
97
+ PackCommand,
98
+ DistillCommand,
99
+ DecayCommand,
100
+ ResurrectCommand,
101
+ VerifyCommand,
102
+ RepairCommand,
85
103
  ]
86
104
 
87
105
 
88
106
  def create_parser() -> argparse.ArgumentParser:
89
107
  """Create the main argument parser."""
90
108
  parser = argparse.ArgumentParser(
91
- prog='agmem',
92
- description='agmem - Agentic Memory Version Control System',
109
+ prog="agmem",
110
+ description="agmem - Agentic Memory Version Control System",
93
111
  formatter_class=argparse.RawDescriptionHelpFormatter,
94
112
  epilog="""
95
113
  Examples:
@@ -110,36 +128,21 @@ Examples:
110
128
  agmem tree Show directory tree visually
111
129
 
112
130
  For more information: https://github.com/vivek-tiwari-vt/agmem
113
- """
131
+ """,
114
132
  )
115
-
116
- parser.add_argument(
117
- '--version', '-v',
118
- action='version',
119
- version='%(prog)s 0.1.0'
120
- )
121
-
122
- parser.add_argument(
123
- '--verbose',
124
- action='store_true',
125
- help='Enable verbose output'
126
- )
127
-
133
+
134
+ parser.add_argument("--version", "-v", action="version", version="%(prog)s 0.1.0")
135
+
136
+ parser.add_argument("--verbose", action="store_true", help="Enable verbose output")
137
+
128
138
  # Create subparsers for commands
129
- subparsers = parser.add_subparsers(
130
- dest='command',
131
- help='Available commands',
132
- metavar='COMMAND'
133
- )
134
-
139
+ subparsers = parser.add_subparsers(dest="command", help="Available commands", metavar="COMMAND")
140
+
135
141
  # Add each command
136
142
  for cmd_class in COMMANDS:
137
- cmd_parser = subparsers.add_parser(
138
- cmd_class.name,
139
- help=cmd_class.help
140
- )
143
+ cmd_parser = subparsers.add_parser(cmd_class.name, help=cmd_class.help)
141
144
  cmd_class.add_arguments(cmd_parser)
142
-
145
+
143
146
  return parser
144
147
 
145
148
 
@@ -147,12 +150,12 @@ def main(args: List[str] = None) -> int:
147
150
  """Main entry point."""
148
151
  parser = create_parser()
149
152
  parsed_args = parser.parse_args(args)
150
-
153
+
151
154
  # No command specified
152
155
  if not parsed_args.command:
153
156
  parser.print_help()
154
157
  return 0
155
-
158
+
156
159
  # Find and execute the command
157
160
  for cmd_class in COMMANDS:
158
161
  if cmd_class.name == parsed_args.command:
@@ -164,15 +167,16 @@ def main(args: List[str] = None) -> int:
164
167
  except Exception as e:
165
168
  if parsed_args.verbose:
166
169
  import traceback
170
+
167
171
  traceback.print_exc()
168
172
  else:
169
173
  print(f"Error: {e}")
170
174
  return 1
171
-
175
+
172
176
  # Unknown command
173
177
  print(f"Unknown command: {parsed_args.command}")
174
178
  return 1
175
179
 
176
180
 
177
- if __name__ == '__main__':
181
+ if __name__ == "__main__":
178
182
  sys.exit(main())
@@ -11,13 +11,13 @@ from .merge import MergeCommand
11
11
  from .diff import DiffCommand
12
12
 
13
13
  __all__ = [
14
- 'InitCommand',
15
- 'AddCommand',
16
- 'CommitCommand',
17
- 'StatusCommand',
18
- 'LogCommand',
19
- 'BranchCommand',
20
- 'CheckoutCommand',
21
- 'MergeCommand',
22
- 'DiffCommand',
14
+ "InitCommand",
15
+ "AddCommand",
16
+ "CommitCommand",
17
+ "StatusCommand",
18
+ "LogCommand",
19
+ "BranchCommand",
20
+ "CheckoutCommand",
21
+ "MergeCommand",
22
+ "DiffCommand",
23
23
  ]