memanto 0.2.2__tar.gz → 0.2.4__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 (303) hide show
  1. memanto-0.2.4/.github/workflows/sdk-typescript.yml +80 -0
  2. {memanto-0.2.2 → memanto-0.2.4}/.gitignore +3 -0
  3. {memanto-0.2.2 → memanto-0.2.4}/CONTRIBUTING.md +1 -1
  4. {memanto-0.2.2 → memanto-0.2.4}/PKG-INFO +14 -8
  5. {memanto-0.2.2 → memanto-0.2.4}/README.md +12 -6
  6. {memanto-0.2.2 → memanto-0.2.4}/docs/CLI_USER_GUIDE.md +1 -1
  7. {memanto-0.2.2 → memanto-0.2.4}/docs/GETTING_STARTED.md +11 -2
  8. {memanto-0.2.2 → memanto-0.2.4}/docs/V2_QUICK_START.md +1 -0
  9. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/memanto_mcp/tools.py +15 -0
  10. memanto-0.2.4/memanto/__init__.py +3 -0
  11. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/_version.py +2 -2
  12. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/constants.py +9 -0
  13. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/main.py +2 -2
  14. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/models/__init__.py +131 -0
  15. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/routes/memory.py +262 -57
  16. memanto-0.2.4/memanto/app/services/conversation_memory_extraction_service.py +176 -0
  17. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/memory_read_service.py +1 -0
  18. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/session_service.py +14 -0
  19. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/ui/routes/ui_router.py +0 -1
  20. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/ui/static/index.html +210 -6
  21. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/client/direct_client.py +132 -0
  22. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/client/sdk_client.py +129 -0
  23. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/_shared.py +1 -1
  24. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/core.py +2 -2
  25. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/memory.py +184 -3
  26. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/ui/display.py +1 -1
  27. {memanto-0.2.2 → memanto-0.2.4}/pyproject.toml +1 -1
  28. memanto-0.2.4/sdks/typescript/.gitignore +5 -0
  29. memanto-0.2.4/sdks/typescript/README.md +126 -0
  30. memanto-0.2.4/sdks/typescript/openapi-ts.config.ts +10 -0
  31. memanto-0.2.4/sdks/typescript/openapi.json +3804 -0
  32. memanto-0.2.4/sdks/typescript/package-lock.json +3371 -0
  33. memanto-0.2.4/sdks/typescript/package.json +56 -0
  34. memanto-0.2.4/sdks/typescript/scripts/fetch-openapi.mjs +33 -0
  35. memanto-0.2.4/sdks/typescript/src/doctor.ts +52 -0
  36. memanto-0.2.4/sdks/typescript/src/index.ts +474 -0
  37. memanto-0.2.4/sdks/typescript/src/lifecycle.ts +171 -0
  38. memanto-0.2.4/sdks/typescript/test/doctor.test.ts +10 -0
  39. memanto-0.2.4/sdks/typescript/test/lifecycle.test.ts +68 -0
  40. memanto-0.2.4/sdks/typescript/test/memanto.test.ts +130 -0
  41. memanto-0.2.4/sdks/typescript/tsconfig.json +22 -0
  42. memanto-0.2.4/sdks/typescript/tsup.config.ts +12 -0
  43. memanto-0.2.4/sdks/typescript/vitest.config.ts +8 -0
  44. {memanto-0.2.2 → memanto-0.2.4}/tests/conftest.py +7 -0
  45. {memanto-0.2.2 → memanto-0.2.4}/tests/test_api.py +434 -0
  46. {memanto-0.2.2 → memanto-0.2.4}/tests/test_cli.py +325 -1
  47. memanto-0.2.4/tests/test_conversation_memory_extraction.py +97 -0
  48. memanto-0.2.2/memanto/__init__.py +0 -3
  49. {memanto-0.2.2 → memanto-0.2.4}/.dockerignore +0 -0
  50. {memanto-0.2.2 → memanto-0.2.4}/.env.example +0 -0
  51. {memanto-0.2.2 → memanto-0.2.4}/.gitattributes +0 -0
  52. {memanto-0.2.2 → memanto-0.2.4}/.github/workflows/ci.yml +0 -0
  53. {memanto-0.2.2 → memanto-0.2.4}/.github/workflows/publish.yml +0 -0
  54. {memanto-0.2.2 → memanto-0.2.4}/.github/workflows/release-integration.yml +0 -0
  55. {memanto-0.2.2 → memanto-0.2.4}/.pre-commit-config.yaml +0 -0
  56. {memanto-0.2.2 → memanto-0.2.4}/CODE_OF_CONDUCT.md +0 -0
  57. {memanto-0.2.2 → memanto-0.2.4}/Dockerfile +0 -0
  58. {memanto-0.2.2 → memanto-0.2.4}/LICENSE +0 -0
  59. {memanto-0.2.2 → memanto-0.2.4}/SECURITY.md +0 -0
  60. {memanto-0.2.2 → memanto-0.2.4}/assets/After.gif +0 -0
  61. {memanto-0.2.2 → memanto-0.2.4}/assets/Architecture-diagram.png +0 -0
  62. {memanto-0.2.2 → memanto-0.2.4}/assets/Before.gif +0 -0
  63. {memanto-0.2.2 → memanto-0.2.4}/assets/On-prem-architecture-diagram.png +0 -0
  64. {memanto-0.2.2 → memanto-0.2.4}/assets/crewai-architecture.png +0 -0
  65. {memanto-0.2.2 → memanto-0.2.4}/assets/memanto-logo.png +0 -0
  66. {memanto-0.2.2 → memanto-0.2.4}/assets/memanto-logo.svg +0 -0
  67. {memanto-0.2.2 → memanto-0.2.4}/assets/memanto.svg +0 -0
  68. {memanto-0.2.2 → memanto-0.2.4}/docker-compose.yml +0 -0
  69. {memanto-0.2.2 → memanto-0.2.4}/docs/AGENT_INTEGRATION_GUIDE.md +0 -0
  70. {memanto-0.2.2 → memanto-0.2.4}/docs/AGENT_MEMORY_BEST_PRACTICES.md +0 -0
  71. {memanto-0.2.2 → memanto-0.2.4}/docs/CLI_INSTALLATION.md +0 -0
  72. {memanto-0.2.2 → memanto-0.2.4}/docs/DEPLOYMENT_GUIDE.md +0 -0
  73. {memanto-0.2.2 → memanto-0.2.4}/docs/HYBRID_TIMELINE_GUIDE.md +0 -0
  74. {memanto-0.2.2 → memanto-0.2.4}/docs/SESSION_ARCHITECTURE.md +0 -0
  75. {memanto-0.2.2 → memanto-0.2.4}/docs/TIMELINE_VISUALIZATION_EXAMPLES.md +0 -0
  76. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/.claude-plugin/plugin.json +0 -0
  77. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/.env.example +0 -0
  78. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/.gitignore +0 -0
  79. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/README.md +0 -0
  80. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/assets/component-architecture.png +0 -0
  81. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/assets/how-it-works-three-real-lifecycle-hooks.png +0 -0
  82. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/demo_session_1.py +0 -0
  83. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/demo_session_2.py +0 -0
  84. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/demo_session_3.py +0 -0
  85. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/hooks/__init__.py +0 -0
  86. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/hooks/_common.py +0 -0
  87. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/hooks/on_prompt.py +0 -0
  88. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/hooks/on_stop.py +0 -0
  89. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/hooks/session_start.py +0 -0
  90. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/install.py +0 -0
  91. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/__init__.py +0 -0
  92. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/cli.py +0 -0
  93. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/client.py +0 -0
  94. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/config.py +0 -0
  95. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/extractor.py +0 -0
  96. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/installer.py +0 -0
  97. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/profile.py +0 -0
  98. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/memanto_skills/skill_map.py +0 -0
  99. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/pyproject.toml +0 -0
  100. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/skills/memanto-companion/SKILL.md +0 -0
  101. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/__init__.py +0 -0
  102. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/conftest.py +0 -0
  103. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/test_client.py +0 -0
  104. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/test_extractor.py +0 -0
  105. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/test_hooks.py +0 -0
  106. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/test_installer.py +0 -0
  107. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/test_profile.py +0 -0
  108. {memanto-0.2.2 → memanto-0.2.4}/examples/claudecode-skills-memanto/lifecycle-hooks/tests/test_skill_map.py +0 -0
  109. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/.env.example +0 -0
  110. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/README.md +0 -0
  111. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/agents.py +0 -0
  112. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/crew.py +0 -0
  113. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/requirements.txt +0 -0
  114. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/run_contradiction.py +0 -0
  115. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/run_full_pipeline.py +0 -0
  116. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/run_research.py +0 -0
  117. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/run_writer.py +0 -0
  118. {memanto-0.2.2 → memanto-0.2.4}/examples/crewai-memory/tasks.py +0 -0
  119. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/.env.example +0 -0
  120. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/.gitignore +0 -0
  121. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/README.md +0 -0
  122. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/basic_integration/__init__.py +0 -0
  123. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/basic_integration/agent.py +0 -0
  124. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/basic_integration/demo.py +0 -0
  125. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/cross_session_recall/graph.py +0 -0
  126. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/cross_session_recall/main.py +0 -0
  127. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/custom_memory_saver/__init__.py +0 -0
  128. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/custom_memory_saver/agent.py +0 -0
  129. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/custom_memory_saver/demo.py +0 -0
  130. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/custom_memory_saver/langgraph_agent.py +0 -0
  131. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/custom_memory_saver/memanto_memory.py +0 -0
  132. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/custom_memory_saver/run_demo.py +0 -0
  133. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/README.md +0 -0
  134. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/app.py +0 -0
  135. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/graph.py +0 -0
  136. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/langgraph-architecture-diagram.png +0 -0
  137. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/memanto_store.py +0 -0
  138. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/run_contradiction.py +0 -0
  139. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/run_full_demo.py +0 -0
  140. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/run_session_1.py +0 -0
  141. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/run_session_2.py +0 -0
  142. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/memanto_base_store/state.py +0 -0
  143. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/requirements.txt +0 -0
  144. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/.gitignore +0 -0
  145. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/langgraph_memanto/__init__.py +0 -0
  146. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/langgraph_memanto/graph.py +0 -0
  147. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/langgraph_memanto/nodes.py +0 -0
  148. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/langgraph_memanto/state.py +0 -0
  149. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/pipeline/__init__.py +0 -0
  150. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/pipeline/graph.py +0 -0
  151. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/pipeline/nodes.py +0 -0
  152. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/pipeline/state.py +0 -0
  153. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/run_full_pipeline.py +0 -0
  154. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/run_research.py +0 -0
  155. {memanto-0.2.2 → memanto-0.2.4}/examples/langgraph-memanto/research_pipeline/run_writer.py +0 -0
  156. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/CLAUDE.md +0 -0
  157. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/README.md +0 -0
  158. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/assets/component-architecture.png +0 -0
  159. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/assets/how-it-works-three-real-lifecycle-hooks.png +0 -0
  160. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/__init__.py +0 -0
  161. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/cli.py +0 -0
  162. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/client.py +0 -0
  163. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/config.py +0 -0
  164. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/extractor.py +0 -0
  165. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/installer.py +0 -0
  166. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/profile.py +0 -0
  167. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/claudecode_memanto/skill_map.py +0 -0
  168. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/hooks/__init__.py +0 -0
  169. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/hooks/_common.py +0 -0
  170. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/hooks/on_prompt.py +0 -0
  171. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/hooks/on_stop.py +0 -0
  172. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/hooks/session_start.py +0 -0
  173. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/pyproject.toml +0 -0
  174. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/__init__.py +0 -0
  175. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/conftest.py +0 -0
  176. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/test_client.py +0 -0
  177. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/test_extractor.py +0 -0
  178. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/test_hooks.py +0 -0
  179. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/test_installer.py +0 -0
  180. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/test_profile.py +0 -0
  181. {memanto-0.2.2 → memanto-0.2.4}/integrations/claudecode/tests/test_skill_map.py +0 -0
  182. {memanto-0.2.2 → memanto-0.2.4}/integrations/crewai/README.md +0 -0
  183. {memanto-0.2.2 → memanto-0.2.4}/integrations/crewai/crewai_memanto/__init__.py +0 -0
  184. {memanto-0.2.2 → memanto-0.2.4}/integrations/crewai/crewai_memanto/tools.py +0 -0
  185. {memanto-0.2.2 → memanto-0.2.4}/integrations/crewai/pyproject.toml +0 -0
  186. {memanto-0.2.2 → memanto-0.2.4}/integrations/crewai/tests/test_tools.py +0 -0
  187. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/.env.example +0 -0
  188. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/LICENSE +0 -0
  189. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/README.md +0 -0
  190. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/hermes_memanto/PLUGIN_README.md +0 -0
  191. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/hermes_memanto/__init__.py +0 -0
  192. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/hermes_memanto/install.py +0 -0
  193. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/hermes_memanto/plugin.yaml +0 -0
  194. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/hermes_memanto/provider.py +0 -0
  195. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/pyproject.toml +0 -0
  196. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/tests/__init__.py +0 -0
  197. {memanto-0.2.2 → memanto-0.2.4}/integrations/hermes-agents/tests/test_provider.py +0 -0
  198. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/README.md +0 -0
  199. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/langgraph_memanto/__init__.py +0 -0
  200. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/langgraph_memanto/nodes.py +0 -0
  201. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/langgraph_memanto/store.py +0 -0
  202. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/langgraph_memanto/tools.py +0 -0
  203. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/pyproject.toml +0 -0
  204. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/tests/test_nodes.py +0 -0
  205. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/tests/test_store.py +0 -0
  206. {memanto-0.2.2 → memanto-0.2.4}/integrations/langgraph/tests/test_tools.py +0 -0
  207. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/.env.example +0 -0
  208. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/LICENSE +0 -0
  209. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/README.md +0 -0
  210. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/memanto_mcp/__init__.py +0 -0
  211. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/memanto_mcp/__main__.py +0 -0
  212. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/memanto_mcp/config.py +0 -0
  213. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/memanto_mcp/lifecycle.py +0 -0
  214. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/memanto_mcp/server.py +0 -0
  215. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/pyproject.toml +0 -0
  216. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/tests/__init__.py +0 -0
  217. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/tests/conftest.py +0 -0
  218. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/tests/test_cli.py +0 -0
  219. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/tests/test_config.py +0 -0
  220. {memanto-0.2.2 → memanto-0.2.4}/integrations/mcp/tests/test_server.py +0 -0
  221. {memanto-0.2.2 → memanto-0.2.4}/memanto/__main__.py +0 -0
  222. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/__init__.py +0 -0
  223. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/clients/backend.py +0 -0
  224. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/clients/moorcheh.py +0 -0
  225. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/clients/onprem.py +0 -0
  226. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/config.py +0 -0
  227. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/core.py +0 -0
  228. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/legacy/context.py +0 -0
  229. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/legacy/context_summarization_service.py +0 -0
  230. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/legacy/memory.py +0 -0
  231. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/legacy/memory_validation_service.py +0 -0
  232. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/legacy/universal_endpoints.py +0 -0
  233. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/legacy/universal_services.py +0 -0
  234. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/models/phase_d.py +0 -0
  235. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/models/session.py +0 -0
  236. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/models/universal_endpoints.py +0 -0
  237. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/routes/auth_deps.py +0 -0
  238. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/routes/health.py +0 -0
  239. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/routes/namespaces.py +0 -0
  240. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/routes/sessions.py +0 -0
  241. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/__init__.py +0 -0
  242. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/agent_service.py +0 -0
  243. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/daily_analysis_service.py +0 -0
  244. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/memory_export_service.py +0 -0
  245. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/memory_parsing_service.py +0 -0
  246. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/memory_write_service.py +0 -0
  247. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/namespace_service.py +0 -0
  248. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/services/summary_visualization_service.py +0 -0
  249. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/ui/__init__.py +0 -0
  250. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/ui/routes/__init__.py +0 -0
  251. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/ui/static/favicon.ico +0 -0
  252. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/ui/static/logo.svg +0 -0
  253. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/auth.py +0 -0
  254. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/errors.py +0 -0
  255. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/idempotency.py +0 -0
  256. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/ids.py +0 -0
  257. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/logging.py +0 -0
  258. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/metrics.py +0 -0
  259. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/rate_limiting.py +0 -0
  260. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/safe_deletion.py +0 -0
  261. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/temporal_helpers.py +0 -0
  262. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/tracing.py +0 -0
  263. {memanto-0.2.2 → memanto-0.2.4}/memanto/app/utils/validation.py +0 -0
  264. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/__init__.py +0 -0
  265. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/__init__.py +0 -0
  266. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/ingestion_cost.py +0 -0
  267. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/letta_compare.py +0 -0
  268. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/letta_export.py +0 -0
  269. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/mem0_compare.py +0 -0
  270. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/mem0_export.py +0 -0
  271. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/supermemory_compare.py +0 -0
  272. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/analyze/supermemory_export.py +0 -0
  273. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/client/__init__.py +0 -0
  274. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/__init__.py +0 -0
  275. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/agent.py +0 -0
  276. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/config_cmd.py +0 -0
  277. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/connect.py +0 -0
  278. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/memory_mgmt.py +0 -0
  279. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/migrate.py +0 -0
  280. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/schedule.py +0 -0
  281. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/commands/session.py +0 -0
  282. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/config/__init__.py +0 -0
  283. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/config/manager.py +0 -0
  284. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/connect/__init__.py +0 -0
  285. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/connect/agent_registry.py +0 -0
  286. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/connect/engine.py +0 -0
  287. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/connect/templates.py +0 -0
  288. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/main.py +0 -0
  289. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/migrate/__init__.py +0 -0
  290. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/migrate/mappers.py +0 -0
  291. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/migrate/runner.py +0 -0
  292. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/schedule_manager.py +0 -0
  293. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/ui/__init__.py +0 -0
  294. {memanto-0.2.2 → memanto-0.2.4}/memanto/cli/ui/theme.py +0 -0
  295. {memanto-0.2.2 → memanto-0.2.4}/pytest.ini +0 -0
  296. {memanto-0.2.2 → memanto-0.2.4}/tests/__init__.py +0 -0
  297. {memanto-0.2.2 → memanto-0.2.4}/tests/requirements.txt +0 -0
  298. {memanto-0.2.2 → memanto-0.2.4}/tests/test_analyze.py +0 -0
  299. {memanto-0.2.2 → memanto-0.2.4}/tests/test_backend.py +0 -0
  300. {memanto-0.2.2 → memanto-0.2.4}/tests/test_batch_memories.json +0 -0
  301. {memanto-0.2.2 → memanto-0.2.4}/tests/test_e2e.py +0 -0
  302. {memanto-0.2.2 → memanto-0.2.4}/tests/test_memory_parsing.py +0 -0
  303. {memanto-0.2.2 → memanto-0.2.4}/tests/test_unit.py +0 -0
@@ -0,0 +1,80 @@
1
+ name: TypeScript SDK
2
+
3
+ on:
4
+ push:
5
+ branches: main
6
+ paths:
7
+ - "memanto/app/**"
8
+ - "sdks/typescript/**"
9
+ - ".github/workflows/sdk-typescript.yml"
10
+ pull_request:
11
+ paths:
12
+ - "memanto/app/**"
13
+ - "sdks/typescript/**"
14
+ - ".github/workflows/sdk-typescript.yml"
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ openapi-drift:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+
25
+ - name: Set up Python
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.12"
29
+
30
+ - name: Install uv
31
+ uses: astral-sh/setup-uv@v4
32
+
33
+ - name: Install dependencies
34
+ run: uv sync --all-extras --dev
35
+
36
+ - name: Create version fallback
37
+ run: echo '__version__ = "0.0.0.dev0"' > memanto/app/_version.py
38
+
39
+ - name: Generate fresh OpenAPI spec
40
+ run: |
41
+ uv run python -c "
42
+ import json
43
+ from memanto.app.main import app
44
+ print(json.dumps(app.openapi(), indent=2))
45
+ " > /tmp/openapi.fresh.json
46
+
47
+ - name: Diff against committed spec
48
+ run: |
49
+ diff -u sdks/typescript/openapi.json /tmp/openapi.fresh.json \
50
+ || (echo "::error::OpenAPI drift detected. Run \`npm run openapi:regenerate\` in sdks/typescript and commit." && exit 1)
51
+
52
+ build:
53
+ runs-on: ubuntu-latest
54
+ defaults:
55
+ run:
56
+ working-directory: sdks/typescript
57
+ steps:
58
+ - uses: actions/checkout@v4
59
+
60
+ - name: Set up Node
61
+ uses: actions/setup-node@v4
62
+ with:
63
+ node-version: "20"
64
+ cache: "npm"
65
+ cache-dependency-path: sdks/typescript/package-lock.json
66
+
67
+ - name: Install dependencies
68
+ run: npm ci || npm install
69
+
70
+ - name: Generate client from committed spec
71
+ run: npm run openapi:generate
72
+
73
+ - name: Typecheck
74
+ run: npm run typecheck
75
+
76
+ - name: Build
77
+ run: npm run build
78
+
79
+ - name: Test
80
+ run: npm test
@@ -104,3 +104,6 @@ temp/
104
104
 
105
105
  # Generated version file
106
106
  **/_version.py
107
+
108
+ # npm pack output
109
+ *.tgz
@@ -265,7 +265,7 @@ Rules:
265
265
 
266
266
  ## Community
267
267
 
268
- - **Discord**: [Join our server](https://discord.gg/CyxRFQSQ3p) — the best place for quick questions and discussions
268
+ - **Discord**: [Join our server](https://memanto.ai/discord) — the best place for quick questions and discussions
269
269
  - **GitHub Issues**: https://github.com/moorcheh-ai/memanto/issues — bugs and feature requests
270
270
  - **Email**: support@moorcheh.ai — for anything that doesn't fit the above
271
271
  - **Docs**: https://docs.memanto.ai
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memanto
3
- Version: 0.2.2
4
- Summary: A companion memory agent with its own intelligence that keeps your agents focused on their tasks.
3
+ Version: 0.2.4
4
+ Summary: A companion memory agent that lets your agents focus and improve while you keep ownership of everything they learn.
5
5
  Project-URL: Homepage, https://www.moorcheh.ai
6
6
  Project-URL: Documentation, https://docs.moorcheh.ai
7
7
  Project-URL: Repository, https://github.com/moorcheh-ai/memanto
@@ -55,11 +55,11 @@ Description-Content-Type: text/markdown
55
55
  </p>
56
56
 
57
57
  <div align="center">
58
- <h1>Your agents focus. Memanto remembers.</h1>
58
+ <h1>Memory that AI Agents Love!</h1>
59
59
  </div>
60
60
 
61
61
  <h2 align="center">
62
- <em>A companion memory agent with its own intelligence that keeps your agents focused on their tasks.</em>
62
+ <em>A companion memory agent that lets your agents focus and improve while you keep ownership of everything they learn.</em>
63
63
  </h2>
64
64
 
65
65
  <p align="center">
@@ -67,7 +67,7 @@ Description-Content-Type: text/markdown
67
67
  </p>
68
68
 
69
69
  <p align="center">
70
- <a href="https://discord.gg/CyxRFQSQ3p">
70
+ <a href="https://memanto.ai/discord">
71
71
  <img src="https://img.shields.io/badge/Join-Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord">
72
72
  </a>
73
73
  <a href="https://www.youtube.com/watch?v=vEtOaoweIG4">
@@ -233,8 +233,8 @@ This means Memanto doesn't need a separate vector DB, embedding pipeline, or rer
233
233
  | System status dashboard | `memanto status` | View environment, configuration, server health, active session, and registered agents. |
234
234
  | Local REST API + Web UI | `memanto serve`, `memanto ui` | Run the MEMANTO REST API locally and open an interactive browser UI. (Optional for CLI usage). |
235
235
  | Agent lifecycle management | `memanto agent ...` | Create/list/delete agents, activate/deactivate sessions, and run `agent bootstrap` for an intelligence snapshot. |
236
- | Memory capture at scale | `memanto remember` | Store single memories with metadata or batch-ingest up to 100 records from JSON. |
237
- | Single-memory deletion | `memanto forget` | Delete one bad or outdated memory from the active agent after confirmation, or without the prompt with `--force`. |
236
+ | Memory capture at scale | `memanto remember` | Store single memories, batch-ingest from JSON, or `--from-conversation` to automatically extract facts from chat logs. |
237
+ | Single-memory editing & deletion | `memanto edit`, `memanto forget` | Update fields on an existing memory, or permanently delete a bad/outdated memory. |
238
238
  | File upload to memory | `memanto upload` | Upload documents (.pdf, .docx, .xlsx, .json, .txt, .csv, .md) directly into an agent's memory namespace — content becomes instantly searchable via `recall`. |
239
239
  | Advanced retrieval modes | `memanto recall` | Run standard search plus temporal queries (`--as-of`, `--changed-since`) with filters. |
240
240
  | Grounded QA over memory | `memanto answer` | Generate RAG answers using retrieved memory context. |
@@ -256,6 +256,12 @@ Use memory types to categorize what you store so retrieval is cleaner and more c
256
256
 
257
257
  ---
258
258
 
259
+ ## 📦 SDKs
260
+
261
+ - **TypeScript / Node.js** — [`@moorcheh-ai/memanto`](sdks/typescript) — boots a local Memanto server via `uvx` and exposes an ergonomic `Memanto` client (`remember` / `recall` / `answer`).
262
+
263
+ ---
264
+
259
265
  ## REST API
260
266
 
261
267
  Memanto exposes a session-based REST API for programmatic access. Start the server locally:
@@ -290,7 +296,7 @@ Full endpoint reference is available at [docs.memanto.ai/api](https://docs.meman
290
296
 
291
297
  Have questions or feedback? We're here to help:
292
298
  - **Docs**: [https://docs.memanto.ai](https://docs.memanto.ai)
293
- - **Discord**: [Join our Discord server](https://discord.gg/CyxRFQSQ3p)
299
+ - **Discord**: [Join our Discord server](https://memanto.ai/discord)
294
300
  - **Email**: support@moorcheh.ai
295
301
  - **X / Twitter**: [@moorcheh_ai](https://x.com/moorcheh_ai)
296
302
 
@@ -5,11 +5,11 @@
5
5
  </p>
6
6
 
7
7
  <div align="center">
8
- <h1>Your agents focus. Memanto remembers.</h1>
8
+ <h1>Memory that AI Agents Love!</h1>
9
9
  </div>
10
10
 
11
11
  <h2 align="center">
12
- <em>A companion memory agent with its own intelligence that keeps your agents focused on their tasks.</em>
12
+ <em>A companion memory agent that lets your agents focus and improve while you keep ownership of everything they learn.</em>
13
13
  </h2>
14
14
 
15
15
  <p align="center">
@@ -17,7 +17,7 @@
17
17
  </p>
18
18
 
19
19
  <p align="center">
20
- <a href="https://discord.gg/CyxRFQSQ3p">
20
+ <a href="https://memanto.ai/discord">
21
21
  <img src="https://img.shields.io/badge/Join-Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord">
22
22
  </a>
23
23
  <a href="https://www.youtube.com/watch?v=vEtOaoweIG4">
@@ -183,8 +183,8 @@ This means Memanto doesn't need a separate vector DB, embedding pipeline, or rer
183
183
  | System status dashboard | `memanto status` | View environment, configuration, server health, active session, and registered agents. |
184
184
  | Local REST API + Web UI | `memanto serve`, `memanto ui` | Run the MEMANTO REST API locally and open an interactive browser UI. (Optional for CLI usage). |
185
185
  | Agent lifecycle management | `memanto agent ...` | Create/list/delete agents, activate/deactivate sessions, and run `agent bootstrap` for an intelligence snapshot. |
186
- | Memory capture at scale | `memanto remember` | Store single memories with metadata or batch-ingest up to 100 records from JSON. |
187
- | Single-memory deletion | `memanto forget` | Delete one bad or outdated memory from the active agent after confirmation, or without the prompt with `--force`. |
186
+ | Memory capture at scale | `memanto remember` | Store single memories, batch-ingest from JSON, or `--from-conversation` to automatically extract facts from chat logs. |
187
+ | Single-memory editing & deletion | `memanto edit`, `memanto forget` | Update fields on an existing memory, or permanently delete a bad/outdated memory. |
188
188
  | File upload to memory | `memanto upload` | Upload documents (.pdf, .docx, .xlsx, .json, .txt, .csv, .md) directly into an agent's memory namespace — content becomes instantly searchable via `recall`. |
189
189
  | Advanced retrieval modes | `memanto recall` | Run standard search plus temporal queries (`--as-of`, `--changed-since`) with filters. |
190
190
  | Grounded QA over memory | `memanto answer` | Generate RAG answers using retrieved memory context. |
@@ -206,6 +206,12 @@ Use memory types to categorize what you store so retrieval is cleaner and more c
206
206
 
207
207
  ---
208
208
 
209
+ ## 📦 SDKs
210
+
211
+ - **TypeScript / Node.js** — [`@moorcheh-ai/memanto`](sdks/typescript) — boots a local Memanto server via `uvx` and exposes an ergonomic `Memanto` client (`remember` / `recall` / `answer`).
212
+
213
+ ---
214
+
209
215
  ## REST API
210
216
 
211
217
  Memanto exposes a session-based REST API for programmatic access. Start the server locally:
@@ -240,7 +246,7 @@ Full endpoint reference is available at [docs.memanto.ai/api](https://docs.meman
240
246
 
241
247
  Have questions or feedback? We're here to help:
242
248
  - **Docs**: [https://docs.memanto.ai](https://docs.memanto.ai)
243
- - **Discord**: [Join our Discord server](https://discord.gg/CyxRFQSQ3p)
249
+ - **Discord**: [Join our Discord server](https://memanto.ai/discord)
244
250
  - **Email**: support@moorcheh.ai
245
251
  - **X / Twitter**: [@moorcheh_ai](https://x.com/moorcheh_ai)
246
252
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  ## Introduction
22
22
 
23
- MEMANTO CLI provides a command-line interface for interacting with MEMANTO (Your agents focus. Memanto remembers.). It enables you to:
23
+ MEMANTO CLI provides a command-line interface for interacting with MEMANTO (Memory that AI Agents Love!). It enables you to:
24
24
 
25
25
  - Create and manage AI agents
26
26
  - Store and retrieve agent memories
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## What is MEMANTO?
10
10
 
11
- MEMANTO (Your agents focus. Memanto remembers.) is a production-ready FastAPI service that gives your AI agents persistent memory across conversations, sessions, and workflows.
11
+ MEMANTO (Memory that AI Agents Love!) is a production-ready FastAPI service that gives your AI agents persistent memory across conversations, sessions, and workflows.
12
12
 
13
13
  **Think of it as**: A PostgreSQL database, but optimized for AI agents - with semantic search, AI-powered summarization, and built specifically for agent workflows.
14
14
 
@@ -278,7 +278,16 @@ You'll see all 17 API endpoints with interactive testing!
278
278
  "content": "MEMANTO is working",
279
279
  "type": "fact",
280
280
  "confidence": 1.0,
281
- "created_at": "2025-12-28T10:30:00Z"
281
+ "status": "active",
282
+ "tags": [],
283
+ "source": "agent",
284
+ "source_ref": null,
285
+ "provenance": "explicit_statement",
286
+ "validation_count": 0,
287
+ "contradiction_detected": false,
288
+ "score": 0.92,
289
+ "created_at": "2025-12-28T10:30:00Z",
290
+ "updated_at": "2025-12-28T10:30:00Z"
282
291
  }
283
292
  ]
284
293
  }
@@ -326,6 +326,7 @@ except httpx.HTTPStatusError as e:
326
326
 
327
327
  - **Full Documentation**: [SESSION_ARCHITECTURE.md](SESSION_ARCHITECTURE.md)
328
328
  - **API Reference**: http://localhost:8000/docs
329
+ - **TypeScript SDK**: See [`@moorcheh-ai/memanto`](../sdks/typescript) for the Node.js/TypeScript client
329
330
 
330
331
  ---
331
332
 
@@ -95,6 +95,17 @@ class MemoryHit(BaseModel):
95
95
  content: str | None = None
96
96
  confidence: float | None = None
97
97
  tags: list[str] = Field(default_factory=list)
98
+ status: str | None = None
99
+ source: str | None = Field(
100
+ default=None, description="Origin of the memory (e.g. user, agent, tool)."
101
+ )
102
+ source_ref: str | None = Field(
103
+ default=None, description="Reference to the source (e.g. file name, tool id)."
104
+ )
105
+ provenance: str | None = Field(
106
+ default=None,
107
+ description="How the memory was obtained (explicit_statement, inferred, ...).",
108
+ )
98
109
  created_at: str | None = None
99
110
  score: float | None = Field(
100
111
  default=None, description="Similarity score when available."
@@ -893,6 +904,10 @@ def _to_memory_hit(raw: dict[str, Any]) -> MemoryHit:
893
904
  content=raw.get("content"),
894
905
  confidence=raw.get("confidence"),
895
906
  tags=list(raw.get("tags") or []),
907
+ status=raw.get("status"),
908
+ source=raw.get("source"),
909
+ source_ref=raw.get("source_ref"),
910
+ provenance=raw.get("provenance"),
896
911
  created_at=str(raw.get("created_at")) if raw.get("created_at") else None,
897
912
  score=(
898
913
  raw.get("score")
@@ -0,0 +1,3 @@
1
+ """
2
+ Memanto - Memory that AI Agents Love!
3
+ """
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.2.2'
22
- __version_tuple__ = version_tuple = (0, 2, 2)
21
+ __version__ = version = '0.2.4'
22
+ __version_tuple__ = version_tuple = (0, 2, 4)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -73,4 +73,13 @@ VALID_PROVENANCE_TYPES = {
73
73
 
74
74
  VALID_SCOPE_TYPES = {"user", "workspace", "agent", "session", "project", "task"}
75
75
 
76
+ ALLOWED_UPDATE_FIELDS = {
77
+ "title",
78
+ "content",
79
+ "type",
80
+ "confidence",
81
+ "tags",
82
+ "source",
83
+ }
84
+
76
85
  VALID_PATTERNS = {"support", "project", "tool"}
@@ -64,7 +64,7 @@ async def lifespan(_: FastAPI):
64
64
 
65
65
  # Create FastAPI app
66
66
  app = FastAPI(
67
- title="Memanto - Your agents focus. Memanto remembers.",
67
+ title="Memanto - Memory that AI Agents Love!",
68
68
  description="A memory layer service for agentic AI systems using Moorcheh SDK",
69
69
  version=__version__,
70
70
  docs_url="/docs",
@@ -97,7 +97,7 @@ mount_ui_static(app)
97
97
  async def root():
98
98
  return {
99
99
  "service": "MEMANTO",
100
- "description": "A companion memory agent with its own intelligence that keeps your agents focused on their tasks.",
100
+ "description": "A companion memory agent that lets your agents focus and improve while you keep ownership of everything they learn.",
101
101
  "version": __version__,
102
102
  "docs": "/docs",
103
103
  }
@@ -89,6 +89,38 @@ class BatchRememberRequest(BaseModel):
89
89
  )
90
90
 
91
91
 
92
+ class ConversationMessage(BaseModel):
93
+ """Chat-style message used for conversation memory extraction."""
94
+
95
+ role: str = Field(..., min_length=1, max_length=50)
96
+ content: str = Field(..., min_length=1, max_length=10000)
97
+
98
+
99
+ class ExtractMemoriesRequest(BaseModel):
100
+ """Request body for extracting typed memories from conversation turns."""
101
+
102
+ messages: list[ConversationMessage] = Field(
103
+ ...,
104
+ min_length=1,
105
+ max_length=200,
106
+ description="Conversation turns to extract durable memories from",
107
+ )
108
+ dry_run: bool = Field(
109
+ False,
110
+ description="When true, return candidates without storing them",
111
+ )
112
+ max_memories: int = Field(
113
+ 20,
114
+ ge=1,
115
+ le=100,
116
+ description="Maximum candidate memories to extract",
117
+ )
118
+ ai_model: str | None = Field(
119
+ None,
120
+ description="Optional model override for extraction",
121
+ )
122
+
123
+
92
124
  class SupersedeRequest(BaseModel):
93
125
  """Request body for supersede endpoint"""
94
126
 
@@ -348,3 +380,102 @@ class HealthResponse(BaseModel):
348
380
  service: str
349
381
  version: str
350
382
  moorcheh_connected: bool
383
+
384
+
385
+ # Session-based v2 endpoint responses (typed for OpenAPI codegen)
386
+
387
+
388
+ class MemoryItem(BaseModel):
389
+ """Single memory record as returned by recall/answer endpoints."""
390
+
391
+ id: str | None = None
392
+ title: str = ""
393
+ content: str = ""
394
+ text: str = ""
395
+ type: str | None = None
396
+ confidence: float | None = None
397
+ status: str | None = None
398
+ tags: list[str] = Field(default_factory=list)
399
+ created_at: str | None = None
400
+ updated_at: str | None = None
401
+ expires_at: str | None = None
402
+ ttl_seconds: int | None = None
403
+ actor_id: str | None = None
404
+ source: str | None = None
405
+ scope_type: str | None = None
406
+ scope_id: str | None = None
407
+ score: float | None = None
408
+ provenance: str = "explicit_statement"
409
+ validation_count: int = 0
410
+ contradiction_detected: bool = False
411
+ superseded_by: str | None = None
412
+ supersedes: str | None = None
413
+ validated_at: str | None = None
414
+ change_type: str | None = None
415
+
416
+
417
+ class RememberResponse(BaseModel):
418
+ memory_id: str
419
+ agent_id: str
420
+ session_id: str
421
+ namespace: str
422
+ status: str
423
+ provenance: str
424
+ confidence: float
425
+ type: str | None = None
426
+
427
+
428
+ class BatchRememberResultItem(BaseModel):
429
+ id: str
430
+ status: str
431
+ action: str | None = None
432
+ reason: str | None = None
433
+ error: str | None = None
434
+ type: str | None = None
435
+
436
+
437
+ class BatchRememberResponse(BaseModel):
438
+ agent_id: str
439
+ session_id: str
440
+ namespace: str
441
+ total_submitted: int
442
+ successful: int
443
+ failed: int
444
+ results: list[BatchRememberResultItem]
445
+
446
+
447
+ class UploadFileResponse(BaseModel):
448
+ agent_id: str
449
+ session_id: str
450
+ namespace: str
451
+ file_name: str
452
+ file_size: int | None = None
453
+ status: str
454
+ message: str = ""
455
+
456
+
457
+ class RecallResponse(BaseModel):
458
+ agent_id: str
459
+ session_id: str
460
+ query: str
461
+ memories: list[MemoryItem]
462
+ count: int
463
+
464
+
465
+ class TemporalRecallResponse(BaseModel):
466
+ agent_id: str
467
+ session_id: str
468
+ memories: list[MemoryItem]
469
+ count: int
470
+ temporal_mode: str
471
+ as_of_date: str | None = None
472
+ since_date: str | None = None
473
+
474
+
475
+ class AnswerResponse(BaseModel):
476
+ agent_id: str
477
+ session_id: str
478
+ question: str
479
+ answer: str
480
+ sources: list[Any] = Field(default_factory=list)
481
+ namespace: str