codeoptix 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. {codeoptix-0.1.2/src/codeoptix.egg-info → codeoptix-0.1.3}/PKG-INFO +1 -1
  2. {codeoptix-0.1.2 → codeoptix-0.1.3}/pyproject.toml +1 -1
  3. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/__init__.py +1 -1
  4. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/adapters/basic.py +2 -2
  5. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/cli.py +1 -27
  6. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/utils/llm.py +7 -3
  7. {codeoptix-0.1.2 → codeoptix-0.1.3/src/codeoptix.egg-info}/PKG-INFO +1 -1
  8. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_behaviors_coverage.py +0 -1
  9. {codeoptix-0.1.2 → codeoptix-0.1.3}/LICENSE +0 -0
  10. {codeoptix-0.1.2 → codeoptix-0.1.3}/MANIFEST.in +0 -0
  11. {codeoptix-0.1.2 → codeoptix-0.1.3}/README.md +0 -0
  12. {codeoptix-0.1.2 → codeoptix-0.1.3}/setup.cfg +0 -0
  13. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/acp/__init__.py +0 -0
  14. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/acp/agent.py +0 -0
  15. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/acp/bridge.py +0 -0
  16. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/acp/client_adapter.py +0 -0
  17. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/acp/code_extractor.py +0 -0
  18. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/acp/orchestrator.py +0 -0
  19. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/acp/registry.py +0 -0
  20. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/adapters/__init__.py +0 -0
  21. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/adapters/base.py +0 -0
  22. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/adapters/claude_code.py +0 -0
  23. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/adapters/codex.py +0 -0
  24. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/adapters/factory.py +0 -0
  25. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/adapters/gemini_cli.py +0 -0
  26. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/artifacts/__init__.py +0 -0
  27. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/artifacts/manager.py +0 -0
  28. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/behaviors/__init__.py +0 -0
  29. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/behaviors/base.py +0 -0
  30. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/behaviors/insecure_code.py +0 -0
  31. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/behaviors/plan_drift.py +0 -0
  32. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/behaviors/vacuous_tests.py +0 -0
  33. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evaluation/__init__.py +0 -0
  34. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evaluation/bloom_integration.py +0 -0
  35. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evaluation/engine.py +0 -0
  36. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evaluation/evaluators.py +0 -0
  37. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evaluation/scenario_generator.py +0 -0
  38. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evolution/__init__.py +0 -0
  39. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evolution/engine.py +0 -0
  40. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evolution/gepa_integration.py +0 -0
  41. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/evolution/proposer.py +0 -0
  42. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/__init__.py +0 -0
  43. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/bandit_linter.py +0 -0
  44. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/base.py +0 -0
  45. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/coverage_linter.py +0 -0
  46. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/flake8_linter.py +0 -0
  47. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/html_accessibility_linter.py +0 -0
  48. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/language_detector.py +0 -0
  49. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/mypy_linter.py +0 -0
  50. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/pip_audit_linter.py +0 -0
  51. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/pylint_linter.py +0 -0
  52. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/ruff_linter.py +0 -0
  53. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/runner.py +0 -0
  54. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/linters/safety_linter.py +0 -0
  55. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/reflection/__init__.py +0 -0
  56. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/reflection/engine.py +0 -0
  57. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/reflection/generator.py +0 -0
  58. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/utils/__init__.py +0 -0
  59. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/utils/config.py +0 -0
  60. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/utils/retry.py +0 -0
  61. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/__init__.py +0 -0
  62. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/README.md +0 -0
  63. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/__init__.py +0 -0
  64. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/globals.py +0 -0
  65. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/orchestrators/ConversationOrchestrator.py +0 -0
  66. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/orchestrators/SimEnvOrchestrator.py +0 -0
  67. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/README.md +0 -0
  68. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/default.json +0 -0
  69. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/ideation-default.json +0 -0
  70. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_animal-welfare.json +0 -0
  71. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_contextual-optimism.json +0 -0
  72. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_defend-objects.json +0 -0
  73. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_defer-to-users.json +0 -0
  74. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_emotional-bond.json +0 -0
  75. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_flattery.json +0 -0
  76. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_hardcode-test-cases.json +0 -0
  77. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_increasing-pep.json +0 -0
  78. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_research-sandbagging.json +0 -0
  79. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_self-promotion.json +0 -0
  80. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/sandbag.json +0 -0
  81. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/self-preferential-bias.json +0 -0
  82. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/static-prompts.yaml +0 -0
  83. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/web-search.json +0 -0
  84. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/step1_understanding.py +0 -0
  85. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/step2_ideation.py +0 -0
  86. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/step3_rollout.py +0 -0
  87. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/prompts/step4_judgment.py +0 -0
  88. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/schemas/behavior.schema.json +0 -0
  89. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/schemas/conversation.schema.json +0 -0
  90. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/schemas/transcript_schema.json +0 -0
  91. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/scripts/step2_ideation.py +0 -0
  92. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/scripts/step4_judgment.py +0 -0
  93. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/transcript_utils.py +0 -0
  94. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix/vendor/bloom/utils.py +0 -0
  95. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix.egg-info/SOURCES.txt +0 -0
  96. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix.egg-info/dependency_links.txt +0 -0
  97. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix.egg-info/entry_points.txt +0 -0
  98. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix.egg-info/requires.txt +0 -0
  99. {codeoptix-0.1.2 → codeoptix-0.1.3}/src/codeoptix.egg-info/top_level.txt +0 -0
  100. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_adapter_error_handling.py +0 -0
  101. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_adapters.py +0 -0
  102. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_artifacts.py +0 -0
  103. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_behaviors.py +0 -0
  104. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_cli.py +0 -0
  105. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_cli_commands.py +0 -0
  106. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_evaluation.py +0 -0
  107. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_evaluators.py +0 -0
  108. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_evolution.py +0 -0
  109. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_imports.py +0 -0
  110. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_llm.py +0 -0
  111. {codeoptix-0.1.2 → codeoptix-0.1.3}/tests/test_reflection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeoptix
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Agentic Code Optimization & Deep Evaluation for Superior Coding Agent Experience. Built by Superagentic AI.
5
5
  Author-email: Shashi Jagtap <shashi@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
6
6
  Maintainer-email: Shashi Jagtap <team@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "codeoptix"
3
- version = "0.1.2"
3
+ version = "0.1.3"
4
4
  description = "Agentic Code Optimization & Deep Evaluation for Superior Coding Agent Experience. Built by Superagentic AI."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -5,4 +5,4 @@ The universal code optimization engine that improves coding agent experience wit
5
5
  Built by Superagentic AI - Advancing AI agent optimization and autonomous systems.
6
6
  """
7
7
 
8
- __version__ = "0.1.2"
8
+ __version__ = "0.1.3"
@@ -124,12 +124,12 @@ Please provide your response in the following format:
124
124
 
125
125
  CODE:
126
126
  ```python
127
- # Your code here
127
+ # Your code here - must be valid Python
128
128
  ```
129
129
 
130
130
  TESTS:
131
131
  ```python
132
- # Your tests here
132
+ # Your tests here - must be valid Python
133
133
  ```
134
134
 
135
135
  EXPLANATION:
@@ -24,7 +24,7 @@ from codeoptix.utils.llm import LLMProvider, create_llm_client
24
24
 
25
25
 
26
26
  @click.group()
27
- @click.version_option(version="0.1.0")
27
+ @click.version_option(version="0.1.3")
28
28
  def main():
29
29
  """CodeOptiX - Agentic Code Optimization & Deep Evaluation for Superior Coding Agent Experience.
30
30
 
@@ -196,33 +196,7 @@ def eval(agent, behaviors, output, config, llm_provider, llm_api_key, context, f
196
196
  sys.exit(1)
197
197
 
198
198
  # Create LLM client for evaluation
199
- try:
200
- llm_provider_enum = LLMProvider[llm_provider.upper()]
201
- except KeyError:
202
- click.echo(f"❌ Error: Unsupported LLM provider: {llm_provider}", err=True)
203
- click.echo(" Available providers: anthropic, openai, google, ollama", err=True)
204
- sys.exit(1)
205
-
206
- # For remote providers, we still require an API key.
207
- # For local Ollama, we do NOT require a key and talk to localhost instead.
208
- api_key: str | None = None
209
199
  if not is_ollama:
210
- api_key = llm_api_key or os.getenv(f"{llm_provider.upper()}_API_KEY")
211
- if not api_key:
212
- click.echo(f"❌ Error: API key required for {llm_provider}", err=True)
213
- click.echo(
214
- f" Set {llm_provider.upper()}_API_KEY environment variable or use --llm-api-key",
215
- err=True,
216
- )
217
- click.echo("", err=True)
218
- click.echo("💡 Tip: Without an API key, you can use basic static analysis:", err=True)
219
- click.echo(" codeoptix lint --path ./src", err=True)
220
- click.echo(
221
- " This runs linters (ruff, bandit, flake8, etc.) without requiring API keys.",
222
- err=True,
223
- )
224
- sys.exit(1)
225
- else:
226
200
  click.echo("🧠 Using local Ollama provider.")
227
201
 
228
202
  try:
@@ -248,9 +248,10 @@ class OllamaClient(LLMClient):
248
248
  **kwargs: Any,
249
249
  ) -> str:
250
250
  """Generate a chat completion using a local Ollama model."""
251
+ # Use Ollama's chat API which properly handles chat messages
251
252
  payload = {
252
253
  "model": model,
253
- "prompt": messages[0]["content"],
254
+ "messages": messages, # Pass messages directly
254
255
  "stream": False,
255
256
  "options": {
256
257
  "temperature": temperature,
@@ -261,7 +262,7 @@ class OllamaClient(LLMClient):
261
262
 
262
263
  data = json.dumps(payload).encode("utf-8")
263
264
  req = urllib.request.Request(
264
- f"{self.base_url}/api/generate",
265
+ f"{self.base_url}/api/chat",
265
266
  data=data,
266
267
  headers={"Content-Type": "application/json"},
267
268
  method="POST",
@@ -290,7 +291,10 @@ class OllamaClient(LLMClient):
290
291
  except json.JSONDecodeError as exc: # pragma: no cover - unexpected response
291
292
  raise RuntimeError(f"Invalid JSON from Ollama: {body!r}") from exc
292
293
 
293
- # Ollama generate API: response["response"]
294
+ # Ollama chat API: response["message"]["content"]
295
+ # Fallback to generate API format for backward compatibility
296
+ if "message" in obj and "content" in obj["message"]:
297
+ return obj["message"]["content"]
294
298
  return obj.get("response", "")
295
299
 
296
300
  def get_available_models(self) -> list[str]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeoptix
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Agentic Code Optimization & Deep Evaluation for Superior Coding Agent Experience. Built by Superagentic AI.
5
5
  Author-email: Shashi Jagtap <shashi@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
6
6
  Maintainer-email: Shashi Jagtap <team@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
@@ -1,6 +1,5 @@
1
1
  """Test behaviors for coverage."""
2
2
 
3
-
4
3
  from codeoptix.adapters import AgentOutput
5
4
  from codeoptix.behaviors import create_behavior
6
5
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes