agent-notes 2.10.0__tar.gz → 2.12.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 (225) hide show
  1. {agent_notes-2.10.0 → agent_notes-2.12.0}/PKG-INFO +2 -3
  2. agent_notes-2.12.0/agent_notes/VERSION +1 -0
  3. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/__init__.py +7 -7
  4. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/scripts/_claude_backend.py +21 -4
  5. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/diagnostics/_display.py +2 -2
  6. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes.egg-info/PKG-INFO +2 -3
  7. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes.egg-info/top_level.txt +1 -0
  8. {agent_notes-2.10.0 → agent_notes-2.12.0}/pyproject.toml +1 -2
  9. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_uninstall_command.py +1 -0
  10. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/scripts/test_cost_report_scoping.py +66 -0
  11. agent_notes-2.10.0/agent_notes/VERSION +0 -1
  12. {agent_notes-2.10.0 → agent_notes-2.12.0}/LICENSE +0 -0
  13. {agent_notes-2.10.0 → agent_notes-2.12.0}/README.md +0 -0
  14. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/__init__.py +0 -0
  15. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/__main__.py +0 -0
  16. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/cli.py +0 -0
  17. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/_install_helpers.py +0 -0
  18. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/build.py +0 -0
  19. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/config.py +0 -0
  20. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/doctor.py +0 -0
  21. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/info.py +0 -0
  22. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/install.py +0 -0
  23. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/list.py +0 -0
  24. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/memory.py +0 -0
  25. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/regenerate.py +0 -0
  26. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/set_role.py +0 -0
  27. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/uninstall.py +0 -0
  28. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/update.py +0 -0
  29. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/validate.py +0 -0
  30. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/commands/wizard.py +0 -0
  31. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/config.py +0 -0
  32. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/agents.yaml +0 -0
  33. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/analyst.md +0 -0
  34. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/api-reviewer.md +0 -0
  35. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/architect.md +0 -0
  36. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/coder.md +0 -0
  37. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/database-specialist.md +0 -0
  38. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/debugger.md +0 -0
  39. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/devil.md +0 -0
  40. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/devops.md +0 -0
  41. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/explorer.md +0 -0
  42. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/integrations.md +0 -0
  43. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/lead.md +0 -0
  44. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/performance-profiler.md +0 -0
  45. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/refactorer.md +0 -0
  46. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/reviewer.md +0 -0
  47. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/security-auditor.md +0 -0
  48. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/shared/cost_reporting.md +0 -0
  49. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/system-auditor.md +0 -0
  50. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/tech-writer.md +0 -0
  51. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/test-runner.md +0 -0
  52. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/agents/test-writer.md +0 -0
  53. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/cli/claude.yaml +0 -0
  54. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/cli/copilot.yaml +0 -0
  55. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/cli/opencode.yaml +0 -0
  56. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/commands/brainstorm.md +0 -0
  57. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/commands/debug.md +0 -0
  58. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/commands/review.md +0 -0
  59. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/global-claude.md +0 -0
  60. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/global-copilot.md +0 -0
  61. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/global-opencode.md +0 -0
  62. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/hooks/session-context.md.tpl +0 -0
  63. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-haiku-4-5.yaml +0 -0
  64. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-opus-4-1.yaml +0 -0
  65. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-opus-4-5.yaml +0 -0
  66. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-opus-4-6.yaml +0 -0
  67. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-opus-4-7.yaml +0 -0
  68. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-sonnet-4-5.yaml +0 -0
  69. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-sonnet-4-6.yaml +0 -0
  70. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/models/claude-sonnet-4.yaml +0 -0
  71. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/plugin/claude.yaml +0 -0
  72. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/plugin/opencode-index.js.template +0 -0
  73. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/plugin/opencode.yaml +0 -0
  74. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/pricing.yaml +0 -0
  75. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/roles/orchestrator.yaml +0 -0
  76. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/roles/reasoner.yaml +0 -0
  77. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/roles/scout.yaml +0 -0
  78. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/roles/worker.yaml +0 -0
  79. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/rules/code-quality.md +0 -0
  80. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/rules/safety.md +0 -0
  81. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/brainstorming/SKILL.md +0 -0
  82. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/caveman/SKILL.md +0 -0
  83. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/code-review/SKILL.md +0 -0
  84. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/debugging-protocol/SKILL.md +0 -0
  85. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/docker-compose/SKILL.md +0 -0
  86. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/docker-compose-advanced/SKILL.md +0 -0
  87. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/docker-dockerfile/SKILL.md +0 -0
  88. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/docker-dockerfile-languages/SKILL.md +0 -0
  89. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/git/SKILL.md +0 -0
  90. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/grill-me/SKILL.md +0 -0
  91. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/grill-with-docs/SKILL.md +0 -0
  92. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/improve-codebase-architecture/SKILL.md +0 -0
  93. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/obsidian-memory/SKILL.md +0 -0
  94. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-active-storage/SKILL.md +0 -0
  95. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-broadcasting/SKILL.md +0 -0
  96. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-concerns/SKILL.md +0 -0
  97. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-controllers/SKILL.md +0 -0
  98. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-controllers-advanced/SKILL.md +0 -0
  99. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-helpers/SKILL.md +0 -0
  100. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-initializers/SKILL.md +0 -0
  101. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-javascript/SKILL.md +0 -0
  102. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-jobs/SKILL.md +0 -0
  103. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-kamal/SKILL.md +0 -0
  104. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-lib/SKILL.md +0 -0
  105. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-mailers/SKILL.md +0 -0
  106. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-migrations/SKILL.md +0 -0
  107. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-models/SKILL.md +0 -0
  108. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-models-advanced/SKILL.md +0 -0
  109. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-routes/SKILL.md +0 -0
  110. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-style/SKILL.md +0 -0
  111. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-testing-controllers/SKILL.md +0 -0
  112. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-testing-models/SKILL.md +0 -0
  113. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-testing-system/SKILL.md +0 -0
  114. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-validations/SKILL.md +0 -0
  115. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-view-components/SKILL.md +0 -0
  116. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-view-components-advanced/SKILL.md +0 -0
  117. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-views/SKILL.md +0 -0
  118. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/rails-views-advanced/SKILL.md +0 -0
  119. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/refactoring-protocol/SKILL.md +0 -0
  120. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/setup-project-context/SKILL.md +0 -0
  121. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/tdd/SKILL.md +0 -0
  122. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/skills/zoom-out/SKILL.md +0 -0
  123. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/__init__.py +0 -0
  124. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/__pycache__/__init__.cpython-314.pyc +0 -0
  125. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/frontmatter/__init__.py +0 -0
  126. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/frontmatter/__pycache__/__init__.cpython-314.pyc +0 -0
  127. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/frontmatter/__pycache__/claude.cpython-314.pyc +0 -0
  128. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/frontmatter/__pycache__/opencode.cpython-314.pyc +0 -0
  129. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/frontmatter/claude.py +0 -0
  130. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/data/templates/frontmatter/opencode.py +0 -0
  131. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/doctor_checks.py +0 -0
  132. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/__init__.py +0 -0
  133. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/agent.py +0 -0
  134. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/cli_backend.py +0 -0
  135. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/diagnostics.py +0 -0
  136. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/diff.py +0 -0
  137. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/model.py +0 -0
  138. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/role.py +0 -0
  139. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/rule.py +0 -0
  140. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/skill.py +0 -0
  141. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/domain/state.py +0 -0
  142. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/install_state.py +0 -0
  143. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/__init__.py +0 -0
  144. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/_base.py +0 -0
  145. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/agent_registry.py +0 -0
  146. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/cli_registry.py +0 -0
  147. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/model_registry.py +0 -0
  148. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/role_registry.py +0 -0
  149. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/rule_registry.py +0 -0
  150. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/registries/skill_registry.py +0 -0
  151. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/scripts/__init__.py +0 -0
  152. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/scripts/_formatting.py +0 -0
  153. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/scripts/_opencode_backend.py +0 -0
  154. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/scripts/_pricing.py +0 -0
  155. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/scripts/cost_report.py +0 -0
  156. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/__init__.py +0 -0
  157. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/credentials.py +0 -0
  158. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/diagnostics/__init__.py +0 -0
  159. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/diagnostics/_checks.py +0 -0
  160. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/diagnostics/_fix.py +0 -0
  161. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/diff.py +0 -0
  162. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/fs.py +0 -0
  163. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/install_state_builder.py +0 -0
  164. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/installer.py +0 -0
  165. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/memory_backend.py +0 -0
  166. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/rendering.py +0 -0
  167. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/session_context.py +0 -0
  168. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/settings_writer.py +0 -0
  169. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/state_store.py +0 -0
  170. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/ui.py +0 -0
  171. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/user_config.py +0 -0
  172. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/services/validation.py +0 -0
  173. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes/state.py +0 -0
  174. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes.egg-info/SOURCES.txt +0 -0
  175. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes.egg-info/dependency_links.txt +0 -0
  176. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes.egg-info/entry_points.txt +0 -0
  177. {agent_notes-2.10.0 → agent_notes-2.12.0}/agent_notes.egg-info/requires.txt +0 -0
  178. {agent_notes-2.10.0 → agent_notes-2.12.0}/setup.cfg +0 -0
  179. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/conftest.py +0 -0
  180. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/__init__.py +0 -0
  181. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/__init__.py +0 -0
  182. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_config_command.py +0 -0
  183. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_doctor_command.py +0 -0
  184. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_info_command.py +0 -0
  185. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_install_command.py +0 -0
  186. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_list_command.py +0 -0
  187. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_regenerate_command.py +0 -0
  188. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_update_command.py +0 -0
  189. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/commands/test_validate_command.py +0 -0
  190. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/memory/__init__.py +0 -0
  191. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/memory/test_memory_command.py +0 -0
  192. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/scripts/__init__.py +0 -0
  193. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/functional/scripts/test_release_script.py +0 -0
  194. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/integration/__init__.py +0 -0
  195. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/integration/build_output/__init__.py +0 -0
  196. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/integration/build_output/test_build_output.py +0 -0
  197. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/integration/install/__init__.py +0 -0
  198. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/integration/install/test_install_methods.py +0 -0
  199. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/integration/plugin_builders/__init__.py +0 -0
  200. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/integration/plugin_builders/test_plugin_builders.py +0 -0
  201. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/plugins/__init__.py +0 -0
  202. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/plugins/claude/__init__.py +0 -0
  203. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/plugins/claude/test_agents.py +0 -0
  204. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/plugins/test_skills.py +0 -0
  205. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/__init__.py +0 -0
  206. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/commands/__init__.py +0 -0
  207. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/commands/test_cost_report_subcommand.py +0 -0
  208. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/commands/test_count_agents.py +0 -0
  209. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/commands/test_wizard_orchestrator_skip.py +0 -0
  210. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/commands/test_wizard_preflight.py +0 -0
  211. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/registries/__init__.py +0 -0
  212. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/registries/test_registries.py +0 -0
  213. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/scripts/__init__.py +0 -0
  214. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/scripts/test_cost_report.py +0 -0
  215. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/scripts/test_formatting_tty.py +0 -0
  216. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/scripts/test_time_aggregation.py +0 -0
  217. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/__init__.py +0 -0
  218. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_build_functions.py +0 -0
  219. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_credentials.py +0 -0
  220. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_fs.py +0 -0
  221. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_installer_plan.py +0 -0
  222. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_memory_backend.py +0 -0
  223. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_memory_backend_io.py +0 -0
  224. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_rendering_includes.py +0 -0
  225. {agent_notes-2.10.0 → agent_notes-2.12.0}/tests/unit/services/test_settings_writer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-notes
3
- Version: 2.10.0
3
+ Version: 2.12.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
@@ -13,14 +13,13 @@ Classifier: Development Status :: 4 - Beta
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Topic :: Software Development :: Code Generators
21
20
  Classifier: Topic :: Utilities
22
21
  Classifier: Environment :: Console
23
- Requires-Python: >=3.9
22
+ Requires-Python: >=3.10
24
23
  Description-Content-Type: text/markdown
25
24
  License-File: LICENSE
26
25
  Requires-Dist: pyyaml>=6.0
@@ -0,0 +1 @@
1
+ 2.12.0
@@ -6,16 +6,16 @@ Commands MUST NOT import other commands (use services to share logic).
6
6
  Exception: install/uninstall/info share helpers via _install_helpers.py since
7
7
  they are sibling members of one logical command group.
8
8
  """
9
- from .install import install
10
- from .uninstall import uninstall
11
9
  from .info import show_info
12
- from .build import build
13
- from .doctor import doctor
14
- from .validate import validate
15
- from .update import update
16
- from .regenerate import regenerate
17
10
  from .set_role import set_role
18
11
  from .wizard import interactive_install
12
+ from . import install
13
+ from . import uninstall
14
+ from . import build
15
+ from . import doctor
16
+ from . import validate
17
+ from . import update
18
+ from . import regenerate
19
19
  from . import list as list_cmd
20
20
  from . import memory as memory_cmd
21
21
 
@@ -1,4 +1,5 @@
1
1
  """Session cost report for Claude Code — reads JSONL transcripts."""
2
+ from __future__ import annotations
2
3
  import json
3
4
  from datetime import datetime, timezone
4
5
  from pathlib import Path
@@ -60,10 +61,26 @@ def _load_configured_models() -> dict[str, str]:
60
61
  try:
61
62
  with state_path.open() as f:
62
63
  data = json.load(f)
63
- role_models = data["global"]["clis"]["claude"]["role_models"]
64
- if not isinstance(role_models, dict):
65
- return {}
66
- return role_models
64
+ global_scope = data.get("global")
65
+ if global_scope:
66
+ role_models = (
67
+ global_scope.get("clis", {})
68
+ .get("claude", {})
69
+ .get("role_models")
70
+ )
71
+ if isinstance(role_models, dict):
72
+ return role_models
73
+ # Global absent or empty — fall back to local scope for cwd
74
+ local_scope = (
75
+ data.get("local", {})
76
+ .get(str(Path.cwd()), {})
77
+ .get("clis", {})
78
+ .get("claude", {})
79
+ .get("role_models")
80
+ )
81
+ if isinstance(local_scope, dict):
82
+ return local_scope
83
+ return {}
67
84
  except (FileNotFoundError, KeyError, json.JSONDecodeError):
68
85
  return {}
69
86
 
@@ -102,7 +102,7 @@ def _check_config(backend, scope: str) -> tuple:
102
102
  def _check_role_models(state):
103
103
  """Display role→model assignments and check compatibility."""
104
104
  from ...model_registry import load_model_registry
105
- from ...cli_backend import load_registry
105
+ from ...registries.cli_registry import load_registry
106
106
  from ...role_registry import load_role_registry
107
107
  from ...config import Color
108
108
 
@@ -218,7 +218,7 @@ def print_summary(scope: str):
218
218
  print(f"Checking AgentNotes {label} installation:")
219
219
  print("")
220
220
 
221
- from ...cli_backend import load_registry
221
+ from ...registries.cli_registry import load_registry
222
222
  registry = load_registry()
223
223
  for backend in registry.all():
224
224
  if not backend.supports("agents"):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-notes
3
- Version: 2.10.0
3
+ Version: 2.12.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
@@ -13,14 +13,13 @@ Classifier: Development Status :: 4 - Beta
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Topic :: Software Development :: Code Generators
21
20
  Classifier: Topic :: Utilities
22
21
  Classifier: Environment :: Console
23
- Requires-Python: >=3.9
22
+ Requires-Python: >=3.10
24
23
  Description-Content-Type: text/markdown
25
24
  License-File: LICENSE
26
25
  Requires-Dist: pyyaml>=6.0
@@ -1,4 +1,5 @@
1
1
  agent_notes
2
+ build
2
3
  dist
3
4
  docs
4
5
  scripts
@@ -9,7 +9,7 @@ description = "AI agent configuration manager for Claude Code, OpenCode, and Cop
9
9
  readme = "README.md"
10
10
  authors = [{ name = "Eugene Naumov", email = "min.verkligheten@gmail.com" }]
11
11
  license = "MIT"
12
- requires-python = ">=3.9"
12
+ requires-python = ">=3.10"
13
13
  dependencies = ["pyyaml>=6.0", "tomli>=1.1.0; python_version < '3.11'"]
14
14
  keywords = ["claude", "claude-code", "opencode", "ai-agent", "agent", "configuration", "claude-cli", "github-copilot"]
15
15
  classifiers = [
@@ -17,7 +17,6 @@ classifiers = [
17
17
  "Intended Audience :: Developers",
18
18
  "Operating System :: OS Independent",
19
19
  "Programming Language :: Python :: 3",
20
- "Programming Language :: Python :: 3.9",
21
20
  "Programming Language :: Python :: 3.10",
22
21
  "Programming Language :: Python :: 3.11",
23
22
  "Programming Language :: Python :: 3.12",
@@ -1,4 +1,5 @@
1
1
  """Functional tests for the uninstall command."""
2
+ from __future__ import annotations
2
3
 
3
4
  import json
4
5
  import pytest
@@ -214,6 +214,72 @@ class TestLoadConfiguredModels:
214
214
 
215
215
  assert result == {}
216
216
 
217
+ def test_returns_local_role_models_when_global_is_none(self, tmp_path, monkeypatch):
218
+ """Regression: global uninstalled leaves data["global"] as None; local install must be used."""
219
+ state_file = tmp_path / "state.json"
220
+ cwd = str(tmp_path)
221
+ state_file.write_text(json.dumps({
222
+ "global": None,
223
+ "local": {
224
+ cwd: {
225
+ "clis": {
226
+ "claude": {
227
+ "role_models": {
228
+ "lead": "claude-opus-4-7",
229
+ "coder": "claude-sonnet-4-6",
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }))
236
+ monkeypatch.setattr("agent_notes.scripts._claude_backend._state_file", lambda: state_file)
237
+ monkeypatch.setattr("pathlib.Path.cwd", classmethod(lambda cls: tmp_path))
238
+
239
+ result = _claude_backend._load_configured_models()
240
+
241
+ assert result == {"lead": "claude-opus-4-7", "coder": "claude-sonnet-4-6"}
242
+
243
+ def test_returns_empty_dict_when_both_global_and_local_absent(self, tmp_path, monkeypatch):
244
+ """When global is None and local has no entry for cwd, return empty dict."""
245
+ state_file = tmp_path / "state.json"
246
+ state_file.write_text(json.dumps({"global": None, "local": {}}))
247
+ monkeypatch.setattr("agent_notes.scripts._claude_backend._state_file", lambda: state_file)
248
+ monkeypatch.setattr("pathlib.Path.cwd", classmethod(lambda cls: tmp_path))
249
+
250
+ result = _claude_backend._load_configured_models()
251
+
252
+ assert result == {}
253
+
254
+ def test_returns_global_role_models_when_global_is_present(self, tmp_path, monkeypatch):
255
+ """Regression guard: global install still takes priority when present."""
256
+ state_file = tmp_path / "state.json"
257
+ cwd = str(tmp_path)
258
+ state_file.write_text(json.dumps({
259
+ "global": {
260
+ "clis": {
261
+ "claude": {
262
+ "role_models": {"lead": "claude-opus-4-7"}
263
+ }
264
+ }
265
+ },
266
+ "local": {
267
+ cwd: {
268
+ "clis": {
269
+ "claude": {
270
+ "role_models": {"lead": "claude-sonnet-4-6"}
271
+ }
272
+ }
273
+ }
274
+ }
275
+ }))
276
+ monkeypatch.setattr("agent_notes.scripts._claude_backend._state_file", lambda: state_file)
277
+ monkeypatch.setattr("pathlib.Path.cwd", classmethod(lambda cls: tmp_path))
278
+
279
+ result = _claude_backend._load_configured_models()
280
+
281
+ assert result == {"lead": "claude-opus-4-7"}
282
+
217
283
 
218
284
  class TestConfiguredHeaderLine:
219
285
  def _write_state(self, state_file: Path, role_models: dict) -> None:
@@ -1 +0,0 @@
1
- 2.10.0
File without changes
File without changes
File without changes