agent-notes 2.28.0__tar.gz → 2.30.0__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 (315) hide show
  1. {agent_notes-2.28.0 → agent_notes-2.30.0}/PKG-INFO +161 -146
  2. {agent_notes-2.28.0 → agent_notes-2.30.0}/README.md +159 -145
  3. agent_notes-2.30.0/agent_notes/VERSION +1 -0
  4. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/cli.py +1 -1
  5. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/config.py +5 -15
  6. agent_notes-2.30.0/agent_notes/commands/hook.py +479 -0
  7. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/wizard/__init__.py +9 -25
  8. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/constants.py +6 -0
  9. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/coder.md +1 -0
  10. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/refactorer.md +1 -0
  11. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/execution.md +8 -0
  12. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/guardrails.md +1 -0
  13. agent_notes-2.30.0/agent_notes/data/agents/shared/pipelines.md +18 -0
  14. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/verification.md +4 -0
  15. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/plugin/claude.yaml +1 -0
  16. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/pricing.yaml +8 -6
  17. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/roles/reasoner.yaml +0 -1
  18. agent_notes-2.30.0/agent_notes/data/skills/chrome-test/SKILL.md +262 -0
  19. agent_notes-2.30.0/agent_notes/data/templates/frontmatter/__pycache__/base.cpython-314.pyc +0 -0
  20. agent_notes-2.30.0/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-314.pyc +0 -0
  21. agent_notes-2.30.0/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  22. agent_notes-2.30.0/agent_notes/data/templates/frontmatter/base.py +47 -0
  23. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/codex.py +7 -24
  24. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/opencode.py +3 -47
  25. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/model.py +1 -0
  26. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/role.py +1 -2
  27. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/model_registry.py +1 -0
  28. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/role_registry.py +0 -1
  29. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/scripts/_claude_backend.py +24 -8
  30. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/scripts/_pricing.py +39 -7
  31. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/credentials.py +2 -2
  32. agent_notes-2.30.0/agent_notes/services/install_executor.py +142 -0
  33. agent_notes-2.30.0/agent_notes/services/install_plan.py +283 -0
  34. agent_notes-2.30.0/agent_notes/services/installer.py +306 -0
  35. agent_notes-2.30.0/agent_notes/services/memory_backend.py +63 -0
  36. agent_notes-2.30.0/agent_notes/services/memory_router.py +14 -0
  37. agent_notes-2.30.0/agent_notes/services/model_resolver.py +222 -0
  38. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/rendering.py +13 -98
  39. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/settings_writer.py +2 -2
  40. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes.egg-info/PKG-INFO +161 -146
  41. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes.egg-info/SOURCES.txt +17 -0
  42. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes.egg-info/requires.txt +1 -0
  43. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes.egg-info/top_level.txt +0 -1
  44. {agent_notes-2.28.0 → agent_notes-2.30.0}/pyproject.toml +4 -1
  45. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/conftest.py +2 -1
  46. agent_notes-2.30.0/tests/functional/commands/test_install_roundtrip.py +162 -0
  47. agent_notes-2.30.0/tests/functional/commands/test_uninstall_full_hooks.py +297 -0
  48. agent_notes-2.30.0/tests/functional/commands/test_wizard_happy_path.py +163 -0
  49. agent_notes-2.30.0/tests/unit/commands/test_guard_credentials.py +652 -0
  50. agent_notes-2.30.0/tests/unit/commands/test_precompact_memory_bridge.py +182 -0
  51. agent_notes-2.30.0/tests/unit/commands/test_wizard_role_model_default.py +108 -0
  52. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_wizard_steps.py +3 -5
  53. agent_notes-2.30.0/tests/unit/scripts/test_cache_write_pricing.py +348 -0
  54. agent_notes-2.30.0/tests/unit/services/test_installer_credential_guard.py +149 -0
  55. agent_notes-2.30.0/tests/unit/services/test_installer_precompact_hook.py +154 -0
  56. agent_notes-2.30.0/tests/unit/services/test_model_resolver_characterization.py +530 -0
  57. agent_notes-2.28.0/agent_notes/VERSION +0 -1
  58. agent_notes-2.28.0/agent_notes/commands/hook.py +0 -69
  59. agent_notes-2.28.0/agent_notes/data/agents/shared/pipelines.md +0 -16
  60. agent_notes-2.28.0/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-314.pyc +0 -0
  61. agent_notes-2.28.0/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  62. agent_notes-2.28.0/agent_notes/services/installer.py +0 -586
  63. agent_notes-2.28.0/agent_notes/services/memory_router.py +0 -32
  64. {agent_notes-2.28.0 → agent_notes-2.30.0}/LICENSE +0 -0
  65. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/__init__.py +0 -0
  66. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/__main__.py +0 -0
  67. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/__init__.py +0 -0
  68. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/_install_helpers.py +0 -0
  69. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/build.py +0 -0
  70. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/doctor.py +0 -0
  71. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/info.py +0 -0
  72. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/install.py +0 -0
  73. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/list.py +0 -0
  74. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/__init__.py +0 -0
  75. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/_common.py +0 -0
  76. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/migrate.py +0 -0
  77. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/notes.py +0 -0
  78. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/reset.py +0 -0
  79. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/transfer.py +0 -0
  80. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/vault.py +0 -0
  81. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/memory/wiki.py +0 -0
  82. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/regenerate.py +0 -0
  83. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/set_role.py +0 -0
  84. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/uninstall.py +0 -0
  85. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/validate.py +0 -0
  86. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/wizard/_common.py +0 -0
  87. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/wizard/cost_report.py +0 -0
  88. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/wizard/execute.py +0 -0
  89. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/commands/wizard/orchestrator.py +0 -0
  90. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/config.py +0 -0
  91. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/agents.yaml +0 -0
  92. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/analyst.md +0 -0
  93. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  94. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/architect.md +0 -0
  95. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/database-specialist.md +0 -0
  96. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/debugger.md +0 -0
  97. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/devil.md +0 -0
  98. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/devops.md +0 -0
  99. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/explorer.md +0 -0
  100. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/integrations.md +0 -0
  101. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/lead.md +0 -0
  102. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  103. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/reviewer.md +0 -0
  104. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/security-auditor.md +0 -0
  105. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  106. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/hard_limits.md +0 -0
  107. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/phase0.md +0 -0
  108. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/review.md +0 -0
  109. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/shared/wiki_compile.md +0 -0
  110. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/system-auditor.md +0 -0
  111. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/tech-writer.md +0 -0
  112. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/test-runner.md +0 -0
  113. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/test-writer.md +0 -0
  114. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/agents/wiki-compiler.md +0 -0
  115. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/cli/claude.yaml +0 -0
  116. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/cli/codex.yaml +0 -0
  117. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/cli/copilot.yaml +0 -0
  118. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/cli/opencode.yaml +0 -0
  119. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/commands/brainstorm.md +0 -0
  120. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/commands/debug.md +0 -0
  121. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/commands/review.md +0 -0
  122. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/global-claude.md +0 -0
  123. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/global-codex.md +0 -0
  124. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/global-copilot.md +0 -0
  125. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/global-opencode.md +0 -0
  126. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  127. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  128. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  129. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  130. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  131. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  132. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-opus-4-8.yaml +0 -0
  133. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  134. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  135. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  136. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/gpt-5-4-mini.yaml +0 -0
  137. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/gpt-5-4.yaml +0 -0
  138. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/models/gpt-5-5.yaml +0 -0
  139. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  140. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  141. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  142. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/roles/scout.yaml +0 -0
  143. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/roles/worker.yaml +0 -0
  144. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/rules/code-quality.md +0 -0
  145. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/rules/safety.md +0 -0
  146. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  147. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  148. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
  149. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
  150. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/docker/SKILL.md +0 -0
  151. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/docker/compose.md +0 -0
  152. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/docker/dockerfile.md +0 -0
  153. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/git/SKILL.md +0 -0
  154. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  155. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  156. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/handoff/SKILL.md +0 -0
  157. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  158. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/ingest/SKILL.md +0 -0
  159. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/migrate-memory/SKILL.md +0 -0
  160. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +0 -0
  161. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/prototype/LOGIC.md +0 -0
  162. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/prototype/SKILL.md +0 -0
  163. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/prototype/UI.md +0 -0
  164. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rails/SKILL.md +0 -0
  165. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rails/controllers.md +0 -0
  166. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rails/frontend.md +0 -0
  167. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rails/infra.md +0 -0
  168. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rails/models.md +0 -0
  169. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rails/testing.md +0 -0
  170. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rails/views.md +0 -0
  171. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  172. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/rsi/SKILL.md +0 -0
  173. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  174. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
  175. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/to-issues/SKILL.md +0 -0
  176. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/to-prd/SKILL.md +0 -0
  177. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/write-a-skill/SKILL.md +0 -0
  178. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  179. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/__init__.py +0 -0
  180. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/__pycache__/__init__.cpython-312.pyc +0 -0
  181. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  182. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  183. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-312.pyc +0 -0
  184. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  185. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-312.pyc +0 -0
  186. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  187. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/__pycache__/codex.cpython-312.pyc +0 -0
  188. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-312.pyc +0 -0
  189. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  190. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/doctor_checks.py +0 -0
  191. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/__init__.py +0 -0
  192. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/agent.py +0 -0
  193. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/cli_backend.py +0 -0
  194. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/diagnostics.py +0 -0
  195. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/diff.py +0 -0
  196. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/rule.py +0 -0
  197. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/skill.py +0 -0
  198. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/domain/state.py +0 -0
  199. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/__init__.py +0 -0
  200. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/_base.py +0 -0
  201. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/agent_registry.py +0 -0
  202. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/cli_registry.py +0 -0
  203. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/rule_registry.py +0 -0
  204. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/registries/skill_registry.py +0 -0
  205. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/scripts/__init__.py +0 -0
  206. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/scripts/_formatting.py +0 -0
  207. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/scripts/_opencode_backend.py +0 -0
  208. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/scripts/cost_report.py +0 -0
  209. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/__init__.py +0 -0
  210. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/_memory_utils.py +0 -0
  211. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/counts.py +0 -0
  212. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  213. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  214. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/diagnostics/_display.py +0 -0
  215. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  216. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/diff.py +0 -0
  217. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/fs.py +0 -0
  218. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/install_state_builder.py +0 -0
  219. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/local_backend.py +0 -0
  220. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/migrations/__init__.py +0 -0
  221. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/obsidian_backend.py +0 -0
  222. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/session_context.py +0 -0
  223. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/state_store.py +0 -0
  224. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/ui.py +0 -0
  225. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/user_config.py +0 -0
  226. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/validation.py +0 -0
  227. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki/__init__.py +0 -0
  228. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki/_wiki_utils.py +0 -0
  229. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki/wiki_index.py +0 -0
  230. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki/wiki_ingest.py +0 -0
  231. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki/wiki_lint.py +0 -0
  232. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki/wiki_query.py +0 -0
  233. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki/wiki_storage.py +0 -0
  234. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes/services/wiki_backend.py +0 -0
  235. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  236. {agent_notes-2.28.0 → agent_notes-2.30.0}/agent_notes.egg-info/entry_points.txt +0 -0
  237. {agent_notes-2.28.0 → agent_notes-2.30.0}/setup.cfg +0 -0
  238. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/__init__.py +0 -0
  239. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/__init__.py +0 -0
  240. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_config_command.py +0 -0
  241. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_doctor_command.py +0 -0
  242. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_info_command.py +0 -0
  243. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_install_command.py +0 -0
  244. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_list_command.py +0 -0
  245. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  246. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_uninstall_command.py +0 -0
  247. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_validate_command.py +0 -0
  248. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/commands/test_validate_path_filter.py +0 -0
  249. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/memory/__init__.py +0 -0
  250. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/memory/test_memory_add_local_backend.py +0 -0
  251. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/memory/test_memory_command.py +0 -0
  252. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/scripts/__init__.py +0 -0
  253. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/functional/scripts/test_release_script.py +0 -0
  254. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/integration/__init__.py +0 -0
  255. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/integration/build_output/__init__.py +0 -0
  256. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/integration/build_output/test_build_output.py +0 -0
  257. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/integration/install/__init__.py +0 -0
  258. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/integration/install/test_install_methods.py +0 -0
  259. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/integration/plugin_builders/__init__.py +0 -0
  260. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  261. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/plugins/__init__.py +0 -0
  262. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/plugins/claude/__init__.py +0 -0
  263. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/plugins/claude/test_agents.py +0 -0
  264. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/plugins/codex/__init__.py +0 -0
  265. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/plugins/codex/test_agents.py +0 -0
  266. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/plugins/test_skills.py +0 -0
  267. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/__init__.py +0 -0
  268. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/__init__.py +0 -0
  269. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  270. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_count_agents.py +0 -0
  271. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_info.py +0 -0
  272. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_memory_add_description.py +0 -0
  273. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_memory_imports.py +0 -0
  274. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_memory_migrate.py +0 -0
  275. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_wizard_imports.py +0 -0
  276. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  277. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  278. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/commands/wizard/test_cost_report_step.py +0 -0
  279. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/registries/__init__.py +0 -0
  280. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/registries/test_cli_registry.py +0 -0
  281. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/registries/test_registries.py +0 -0
  282. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/scripts/__init__.py +0 -0
  283. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/scripts/test_cost_report.py +0 -0
  284. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/scripts/test_cost_report_scoping.py +0 -0
  285. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  286. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/scripts/test_opencode_backend_connection.py +0 -0
  287. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/scripts/test_opencode_backend_pricing.py +0 -0
  288. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  289. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/__init__.py +0 -0
  290. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_build_functions.py +0 -0
  291. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_credential_filter.py +0 -0
  292. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_credentials.py +0 -0
  293. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_fs.py +0 -0
  294. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_installer_codex.py +0 -0
  295. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_installer_hook_quoting.py +0 -0
  296. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_installer_hooks.py +0 -0
  297. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_installer_plan.py +0 -0
  298. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_local_backend.py +0 -0
  299. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_memory_backend.py +0 -0
  300. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  301. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_memory_router.py +0 -0
  302. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_rendering_includes.py +0 -0
  303. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_session_context.py +0 -0
  304. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_settings_writer.py +0 -0
  305. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_skill_filtering.py +0 -0
  306. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_state_store.py +0 -0
  307. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_user_config_cost_report.py +0 -0
  308. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_validation.py +0 -0
  309. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_wiki_atomic_write.py +0 -0
  310. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_wiki_backend.py +0 -0
  311. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/services/test_wiki_imports.py +0 -0
  312. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/templates/__init__.py +0 -0
  313. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/templates/test_codex_frontmatter.py +0 -0
  314. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/test_import_health.py +0 -0
  315. {agent_notes-2.28.0 → agent_notes-2.30.0}/tests/unit/test_memory_dir_for_backend.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-notes
3
- Version: 2.28.0
3
+ Version: 2.30.0
4
4
  Summary: AI agent configuration manager for Claude Code, OpenCode, and Copilot
5
5
  Author-email: Eugene Naumov <min.verkligheten@gmail.com>
6
6
  License-Expression: MIT
@@ -27,6 +27,7 @@ Requires-Dist: tomli>=1.1.0; python_version < "3.11"
27
27
  Requires-Dist: tomli-w>=1.0.0
28
28
  Provides-Extra: dev
29
29
  Requires-Dist: pytest>=7.0; extra == "dev"
30
+ Requires-Dist: build>=1.0; extra == "dev"
30
31
  Dynamic: license-file
31
32
 
32
33
  # agent-notes
@@ -55,32 +56,61 @@ agent-notes doctor
55
56
 
56
57
  ### PyPI (recommended)
57
58
 
59
+ **pipx (isolated environment, no manual venv needed):**
60
+
58
61
  ```bash
59
- pip install agent-notes
60
- # or
61
62
  pipx install agent-notes
62
63
  agent-notes install
63
64
  ```
64
65
 
65
- Update anytime:
66
+ **venv + pip (if you prefer to manage your own environment):**
66
67
 
67
68
  ```bash
68
- pip install --upgrade agent-notes && agent-notes install
69
- # or
69
+ python -m venv .venv && source .venv/bin/activate
70
+ pip install agent-notes
71
+ agent-notes install
72
+ ```
73
+
74
+ ### Upgrade from a previous version
75
+
76
+ **Update in place (normal upgrade):**
77
+
78
+ With pipx:
79
+ ```bash
70
80
  pipx upgrade agent-notes && agent-notes install
71
81
  ```
72
82
 
83
+ With venv:
84
+ ```bash
85
+ pip install --upgrade agent-notes && agent-notes install
86
+ ```
87
+
88
+ **Clean reinstall (from an older version, fresh slate):**
89
+
90
+ If you are on a significantly older version or want a fresh configuration, uninstall completely and reinstall:
91
+
92
+ With pipx:
93
+ ```bash
94
+ agent-notes uninstall && pipx uninstall agent-notes && pipx install agent-notes && agent-notes install
95
+ ```
96
+
97
+ With venv:
98
+ ```bash
99
+ agent-notes uninstall && pip uninstall agent-notes && pip install agent-notes && agent-notes install
100
+ ```
101
+
73
102
  ### Local build (developers)
74
103
 
75
104
  ```bash
76
105
  git clone https://github.com/rubakas/agent-notes.git
77
106
  cd agent-notes
78
- python -m build # produces dist/*.whl
79
- pipx install dist/*.whl # or pip install --user dist/*.whl
107
+ pipx install -e . # editable: CLI runs live from the working tree
80
108
  agent-notes install
81
109
  ```
82
110
 
83
- Iteration loop: edit source `python -m build` `pipx reinstall dist/*.whl`. Not editable mode. Not `pip install -e .`.
111
+ With editable mode, the CLI runs directly from your source files. After edits, run `agent-notes install` to rebuild `dist/` and reinstall into your Claude config. No rebuild command needed between iterations.
112
+
113
+ To produce a release artifact (wheel for distribution), use `python -m build` + `pipx reinstall dist/*.whl` — this is separate from local development.
84
114
 
85
115
  ### Plugin (limited functionality)
86
116
 
@@ -105,6 +135,36 @@ agent-notes config provider openrouter # prints "configured" or "no key"
105
135
 
106
136
  </details>
107
137
 
138
+ <details>
139
+ <summary>Uninstall</summary>
140
+
141
+ To fully remove agent-notes:
142
+
143
+ **pipx:**
144
+
145
+ ```bash
146
+ agent-notes uninstall
147
+ pipx uninstall agent-notes
148
+ ```
149
+
150
+ Run `agent-notes uninstall` first — it removes agent files, hooks, settings.json entries, context file, and state that agent-notes installed. Then `pipx uninstall` removes the package itself. The `agent-notes uninstall` command must run while the CLI is still installed.
151
+
152
+ **venv:**
153
+
154
+ ```bash
155
+ agent-notes uninstall
156
+ deactivate
157
+ rm -rf .venv
158
+ ```
159
+
160
+ Run `agent-notes uninstall` first to clean up installed components, then deactivate the environment and delete the `.venv` directory.
161
+
162
+ **Note on memory and vault permissions:**
163
+
164
+ If you configured agent-notes to access your memory vault (Obsidian or local), those read/write permissions are intentionally left in place after uninstalling so Claude Code and other tools can still access your notes. To remove them, edit `~/.claude/settings.json` and delete the entries under `permissions.allow` that reference your vault path (e.g. `Read(/path/to/your/vault/**)`, `Write(/path/to/your/vault/**)`, `Edit(/path/to/your/vault/**)`).
165
+
166
+ </details>
167
+
108
168
  ---
109
169
 
110
170
  <details>
@@ -163,148 +223,57 @@ Specialized subagents with hierarchical model strategy: **Opus 4.6 reasons, Sonn
163
223
  <details>
164
224
  <summary>Memory Storage</summary>
165
225
 
166
- Agents accumulate knowledge across sessions using one of three storage options, chosen during `agent-notes install`.
167
-
168
- ### Storage comparison
169
-
170
- | Feature | Local | Obsidian | Wiki |
171
- |---|---|---|---|
172
- | Location | `~/.claude/agent-memory/` | Obsidian vault | Obsidian vault |
173
- | Project scoping | No | Yes (per CWD) | Yes (per CWD) |
174
- | Organization | Per-agent folders | Categories (Patterns, Decisions, etc.) | Wiki pages (sources, concepts, entities) |
175
- | Best for | Simple setup | Process memory, visual browsing | Domain knowledge, team knowledge bases |
176
-
177
- ### Local (default)
226
+ Agents accumulate knowledge across sessions. Choose a backend during `agent-notes install`:
178
227
 
179
- Plain markdown storage in `~/.claude/agent-memory/<agent>/` — one folder per agent, no project scoping or cross-referencing. Simplest setup, no external tools needed.
228
+ **Backends:**
229
+ - **`default - Claude Code built-in md files`** (default) — Plain markdown in `~/.claude/agent-memory/<agent>/`. No external tools. Simple, portable.
230
+ - **`Obsidian - session`** — Per-project session notes in Obsidian vault. Auto-creates `<vault>/<project>/` with categories: `Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`. Includes YAML frontmatter and `[[wikilinks]]`.
231
+ - **`Obsidian - brain`** — Karpathy's LLM Wiki pattern. Per-project knowledge brain in `<vault>/<project>/raw/` and `wiki/` (sources, concepts, entities, synthesis, sessions). Supports ingest/query/lint operations.
232
+ - **`None`** — Disables memory.
180
233
 
181
- **Commands:**
234
+ **To reconfigure after install:**
182
235
  ```bash
183
- agent-notes memory list # list all notes by agent
184
- agent-notes memory show <agent> # show one agent's notes
185
- agent-notes memory size # disk usage
186
- agent-notes memory reset [agent] # clear memory (confirmation required)
187
- agent-notes memory export # back up to memory-backup/
188
- agent-notes memory import # restore from memory-backup/
236
+ agent-notes install --reconfigure # switch storage
237
+ agent-notes config memory # interactive backend selector
189
238
  ```
190
239
 
191
- ### Obsidian (per-project sessions)
240
+ ### Local (default)
192
241
 
193
- Category vault with YAML frontmatter and `[[wikilinks]]`. Auto-creates a folder per project (derived from current working directory name) and organizes notes into categories: `Patterns/`, `Decisions/`, `Mistakes/`, `Context/`, `Sessions/`.
242
+ **Storage:** `~/.claude/agent-memory/<agent>/`
194
243
 
195
- **Structure:**
196
- ```
197
- <vault-root>/<project-name>/
198
- ├── Patterns/
199
- ├── Decisions/
200
- ├── Mistakes/
201
- ├── Context/
202
- ├── Sessions/
203
- └── Index.md
244
+ ```bash
245
+ agent-notes memory list # list all notes by agent
246
+ agent-notes memory show <agent> # show one agent's notes
247
+ agent-notes memory size # disk usage
248
+ agent-notes memory reset [agent] # clear memory (confirmation required)
249
+ agent-notes memory export # back up to memory-backup/
250
+ agent-notes memory import # restore from memory-backup/
204
251
  ```
205
252
 
206
- **Note types:** pattern, decision, mistake, context, session
253
+ ### Obsidian (session or brain mode)
207
254
 
208
- **Key features:**
209
- - YAML frontmatter for filtering and Dataview queries (created_at, type, agent, project, tags)
210
- - Auto-linking: when you write a non-session note during an active session, the CLI auto-appends a wikilink to the session note via `[[note-name]]`
211
- - Plan mirroring: plans created during a session are automatically mirrored as Decision notes
212
- - Visual browsing in Obsidian with backlinks and Dataview queries
255
+ **Storage:** `<vault-root>/<project-name>/` (auto-created per CWD)
213
256
 
214
- **Commands:**
257
+ **Session mode commands:**
215
258
  ```bash
216
- agent-notes memory init # create folder structure and Index.md
217
- agent-notes memory list # list all notes (by category or agent)
218
- agent-notes memory vault # show storage, path, and init status
219
- agent-notes memory index # regenerate Index.md
259
+ agent-notes memory init # create folder structure and Index.md
260
+ agent-notes memory list # list all notes (by category or agent)
261
+ agent-notes memory vault # show storage path and init status
262
+ agent-notes memory index # regenerate Index.md
220
263
  agent-notes memory add <title> <body> [type] [agent] # type: pattern|decision|mistake|context|session
221
- agent-notes memory show <agent> # show one agent's notes
222
- agent-notes memory reset [agent] # clear memory (confirmation required)
223
- agent-notes memory export # back up to memory-backup/
224
- agent-notes memory import # restore from memory-backup/
225
- agent-notes install --reconfigure # switch storage
264
+ agent-notes memory reset [agent] # clear memory (confirmation required)
265
+ agent-notes memory export # back up to memory-backup/
266
+ agent-notes memory import # restore from memory-backup/
226
267
  ```
227
268
 
228
- **Note format example:**
229
- ```markdown
230
- ---
231
- created_at: 2026-04-28T19:30:35Z
232
- type: pattern
233
- agent: coder
234
- project: rubakas
235
- tags: [rails, models]
236
- ---
237
-
238
- # Rails Enum Prefix
239
-
240
- Always use `_prefix: true` with Rails enums to avoid method name collisions.
241
- ```
242
-
243
- ### Wiki (per-project knowledge brain)
244
-
245
- Implements Karpathy's LLM Wiki pattern (v1). Auto-creates a folder per project (derived from current working directory name) with immutable source material and LLM-maintained wiki pages.
246
-
247
- **Structure:**
248
- ```
249
- <vault-root>/<project-name>/
250
- ├── raw/ # immutable source material
251
- └── wiki/
252
- ├── sources/ # ingested source pages
253
- ├── concepts/ # domain concepts
254
- ├── entities/ # external tools/services
255
- ├── synthesis/ # cross-cutting themes
256
- ├── sessions/ # session logs
257
- ├── index.md
258
- └── log.md
259
- ```
260
-
261
- **Key operations:**
262
-
263
- - **Ingest** — Process source material (URLs, files, folders), extract key info, update entity/concept pages, append to log. Feeds external knowledge into the wiki brain for persistent, queryable knowledge.
264
-
265
- Use during Claude Code sessions: `/ingest https://docs.example.com/api` or `/ingest ./path/to/file.py`
266
-
267
- CLI fallback: `agent-notes memory ingest "<title>" "<body>" "<concepts>" "<entities>" "<tags>"`
268
-
269
- - **Query** — Search wiki pages, synthesize answers with citations, optionally file answers back as new pages
270
-
271
- - **Lint** — Health-check for contradictions, stale pages, data gaps, orphan pages, missing cross-references
272
-
273
- **Commands:**
269
+ **Brain mode adds:**
274
270
  ```bash
275
- agent-notes memory init # create folder structure and Index.md
276
- agent-notes memory list # list all notes
277
- agent-notes memory vault # show storage, path, and init status
278
- agent-notes memory index # regenerate Index.md
279
- agent-notes memory add <title> <body> [type] # type: source|concept|entity|synthesis|session
280
271
  agent-notes memory ingest <title> <body> <concepts> <entities> <tags> # manual ingest
281
- agent-notes memory query <question> # search wiki pages
282
- agent-notes memory lint # health-check
283
- agent-notes memory reset # clear memory (confirmation required)
284
- agent-notes memory export # back up to memory-backup/
285
- agent-notes memory import # restore from memory-backup/
286
- agent-notes install --reconfigure # switch storage
287
- ```
288
-
289
- ### Project scoping (Obsidian + Wiki only)
290
-
291
- Both Obsidian and Wiki storage modes auto-create a folder named after the current working directory, isolating different projects' memory.
292
-
293
- **Example:**
294
- - Working in `~/code/my-app/` → memory stored at `<vault>/my-app/`
295
- - Working in `~/code/another-project/` → memory stored at `<vault>/another-project/`
296
-
297
- The vault root is configured once during `agent-notes install`; the project path is resolved at runtime from the current working directory.
298
-
299
- ### Obsidian setup
300
-
301
- Run `agent-notes install` and pick Obsidian when prompted. The wizard auto-detects existing vaults under `~/Documents`, `~/Desktop`, and `~`. To initialize the vault structure:
302
-
303
- ```bash
304
- agent-notes memory init
272
+ agent-notes memory query <question> # search wiki pages
273
+ agent-notes memory lint # health-check
305
274
  ```
306
275
 
307
- The installed `CLAUDE.md` already points agents to your vault. At the start of a session Claude reads `Index.md`; at the end it can save insights with `agent-notes memory add`.
276
+ **Setup:** Run `agent-notes install` and choose `Obsidian - session` or `Obsidian - brain`. The wizard auto-detects vaults under `~/Documents`, `~/Desktop`, and `~`. Then run `agent-notes memory init`.
308
277
 
309
278
  </details>
310
279
 
@@ -447,20 +416,46 @@ agent-notes config provider <name> # check if configured (without exposing
447
416
 
448
417
  ### Building and testing
449
418
 
450
- Python 3.10+ required. Build from source and run tests:
419
+ Python 3.10+ required. Create an isolated environment and run tests:
451
420
 
452
421
  ```bash
453
- python -m build && pipx install dist/*.whl
454
- python3 -m pytest tests/ -q
422
+ python -m venv .venv && source .venv/bin/activate
423
+ pip install -e ".[dev]" # installs runtime deps + pytest
424
+ pytest -q
455
425
  ```
456
426
 
427
+ The test suite automatically builds `dist/` before collection (via the `pytest_sessionstart` hook in `tests/conftest.py`), so you do not need to run `python -m build` manually before testing.
428
+
457
429
  ### Development workflow
458
430
 
459
- 1. Edit source files in `agent_notes/data/` or Python modules
460
- 2. Run `python -m build` to rebuild the wheel
461
- 3. Run `pipx reinstall dist/*.whl` to install the updated version
431
+ **One-time setup (choose one):**
432
+
433
+ - Inside a venv: `python -m venv .venv && source .venv/bin/activate && pip install -e ".[dev]"`
434
+ - Or expose the CLI globally via pipx (editable): `pipx install -e .`
435
+
436
+ **Iteration loop:**
437
+
438
+ 1. Edit source in `agent_notes/data/` (skills, rules, agents, etc.) or Python modules
439
+ 2. Run `agent-notes install` to rebuild `dist/` and reinstall into your Claude config
440
+ 3. For a clean reset, run `agent-notes uninstall && agent-notes install`
462
441
  4. Run `agent-notes validate` to lint configuration files
463
- 5. Run tests: `python3 -m pytest tests/ -q`
442
+ 5. Run tests: `pytest -q` (the suite auto-builds `dist/` first via the conftest hook)
443
+
444
+ **Full local reset (one-liner):**
445
+
446
+ ```bash
447
+ pipx uninstall agent-notes && pipx install -e . && agent-notes uninstall && agent-notes install
448
+ ```
449
+
450
+ This command swaps any wheel install for an editable one and clears your Claude config. After this, future edits only need `agent-notes install` (or `agent-notes uninstall && agent-notes install` for a clean wipe).
451
+
452
+ **Profiles:**
453
+
454
+ By default, `agent-notes install` re-runs the interactive wizard and prompts for an optional profile label. To reinstall non-interactively into the same profile, use `agent-notes install --profile <label>` (e.g. `work` → installs into `~/.claude-work`).
455
+
456
+ The plugin build scripts (`scripts/build-claude-plugin.sh`, `scripts/build-opencode-plugin.sh`) automatically use `.venv/bin/python` when present, fall back to system `python3`, and honor a `PYTHON=` override.
457
+
458
+ **Note:** `uv` is used only in the local development and release workflow (see `scripts/release`). It is not required to install or use agent-notes — end users should use `pipx` or `pip` / `venv`.
464
459
 
465
460
  ### Test structure
466
461
 
@@ -468,18 +463,38 @@ python3 -m pytest tests/ -q
468
463
  - `tests/integration/` — Build output and artifact validation
469
464
  - `tests/plugins/` — Plugin artifact validation
470
465
 
466
+ ### Releasing
467
+
468
+ The release process is automated via `scripts/release`, which runs **exclusively against the project `.venv`** (invoking `.venv/bin/python` directly, never system `python3`). The pre-flight phase aborts with a clear error if `.venv` does not exist or cannot import `agent_notes`, `tomli_w`, `build`, and `twine`.
469
+
470
+ **Provision the release environment once:**
471
+
472
+ ```bash
473
+ pip install -e ".[dev]" twine
474
+ ```
475
+
476
+ **Run the release:**
477
+
478
+ ```bash
479
+ scripts/release # Full release: tests, build, PyPI upload, git tag, marketplace bundle
480
+ scripts/release --dry-run # Check-only: tests, build, twine check, smoke install; skip upload
481
+ ```
482
+
483
+ The `--dry-run` flag is useful to validate the entire workflow before committing tags and pushing to PyPI.
484
+
471
485
  ### Contributing guidelines
472
486
 
473
487
  When adding new content:
474
488
 
475
489
  1. **Edit source files** — all changes go in `agent_notes/data/` directory
476
- 2. **Run build** — `python -m build` to generate platform configs
477
- 3. **Run tests** — `python3 -m pytest tests/ -q` before committing
478
- 4. **Validate** — `agent-notes validate` before committing
479
- 5. **Keep it generic** — remove app-specific references
480
- 6. **Show examples** — include code samples with explanations
481
- 7. **Stay modular** — each skill should be independently usable
482
- 8. **Stay concise** — agent prompts under 60 lines
490
+ 2. **Rebuild and test** — `agent-notes install` rebuilds `dist/` and reinstalls; `pytest -q` auto-builds first
491
+ 3. **Validate** — `agent-notes validate` before committing
492
+ 4. **Keep it generic** — remove app-specific references
493
+ 5. **Show examples** — include code samples with explanations
494
+ 6. **Stay modular** — each skill should be independently usable
495
+ 7. **Stay concise** — agent prompts under 60 lines
496
+
497
+ (Note: `python -m build` is only needed to produce a release wheel for distribution, not for local development.)
483
498
 
484
499
  ### Architecture
485
500