agentready 2.45.0__tar.gz → 2.46.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 (122) hide show
  1. {agentready-2.45.0/src/agentready.egg-info → agentready-2.46.0}/PKG-INFO +1 -1
  2. {agentready-2.45.0 → agentready-2.46.0}/pyproject.toml +1 -1
  3. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/patterns.py +109 -0
  4. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/testing.py +22 -11
  5. {agentready-2.45.0 → agentready-2.46.0/src/agentready.egg-info}/PKG-INFO +1 -1
  6. {agentready-2.45.0 → agentready-2.46.0}/LICENSE +0 -0
  7. {agentready-2.45.0 → agentready-2.46.0}/README.md +0 -0
  8. {agentready-2.45.0 → agentready-2.46.0}/setup.cfg +0 -0
  9. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/__init__.py +0 -0
  10. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/__main__.py +0 -0
  11. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/__init__.py +0 -0
  12. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/base.py +0 -0
  13. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/code_quality.py +0 -0
  14. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/containers.py +0 -0
  15. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/dbt.py +0 -0
  16. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/documentation.py +0 -0
  17. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/security.py +0 -0
  18. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/structure.py +0 -0
  19. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/stub_assessors.py +0 -0
  20. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/assessors/verification.py +0 -0
  21. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/__init__.py +0 -0
  22. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/align.py +0 -0
  23. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/assess_batch.py +0 -0
  24. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/bootstrap.py +0 -0
  25. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/demo.py +0 -0
  26. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/experiment.py +0 -0
  27. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/main.py +0 -0
  28. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/main_simplified.py +0 -0
  29. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/repomix.py +0 -0
  30. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/research.py +0 -0
  31. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/schema.py +0 -0
  32. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/cli/submit.py +0 -0
  33. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/data/.agentready-config.example.yaml +0 -0
  34. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/data/Python.arsrc +0 -0
  35. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/data/RESEARCH_REPORT.md +0 -0
  36. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/data/default-weights.yaml +0 -0
  37. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/fixers/__init__.py +0 -0
  38. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/fixers/base.py +0 -0
  39. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/fixers/documentation.py +0 -0
  40. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/fixers/testing.py +0 -0
  41. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/github/__init__.py +0 -0
  42. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/github/review_formatter.py +0 -0
  43. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/__init__.py +0 -0
  44. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/assessment.py +0 -0
  45. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/attribute.py +0 -0
  46. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/batch_assessment.py +0 -0
  47. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/citation.py +0 -0
  48. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/config.py +0 -0
  49. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/discovered_skill.py +0 -0
  50. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/eval_harness.py +0 -0
  51. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/finding.py +0 -0
  52. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/fix.py +0 -0
  53. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/metadata.py +0 -0
  54. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/repository.py +0 -0
  55. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/models/theme.py +0 -0
  56. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/prompts/__init__.py +0 -0
  57. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/prompts/claude_md_generator.md +0 -0
  58. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/prompts/loader.py +0 -0
  59. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/__init__.py +0 -0
  60. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/aggregated_json.py +0 -0
  61. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/base.py +0 -0
  62. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/csv_reporter.py +0 -0
  63. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/html.py +0 -0
  64. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/json_reporter.py +0 -0
  65. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/markdown.py +0 -0
  66. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/reporters/multi_html.py +0 -0
  67. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/__init__.py +0 -0
  68. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/assessment_cache.py +0 -0
  69. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/attribute_analyzer.py +0 -0
  70. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/batch_scanner.py +0 -0
  71. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/bootstrap.py +0 -0
  72. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/claudecode_runner.py +0 -0
  73. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/experiment_comparer.py +0 -0
  74. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/fixer_service.py +0 -0
  75. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/github_scanner.py +0 -0
  76. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/language_detector.py +0 -0
  77. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/llm_cache.py +0 -0
  78. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/repomix.py +0 -0
  79. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/repository_manager.py +0 -0
  80. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/research_formatter.py +0 -0
  81. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/research_loader.py +0 -0
  82. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/scanner.py +0 -0
  83. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/schema_migrator.py +0 -0
  84. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/schema_validator.py +0 -0
  85. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/scorer.py +0 -0
  86. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/sweagent_runner.py +0 -0
  87. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/services/swebench_evaluator.py +0 -0
  88. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/align/CLAUDE.md.j2 +0 -0
  89. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/CODEOWNERS.j2 +0 -0
  90. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/CODE_OF_CONDUCT.md.j2 +0 -0
  91. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/CONTRIBUTING.md.j2 +0 -0
  92. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/PULL_REQUEST_TEMPLATE.md.j2 +0 -0
  93. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/_base/precommit.yaml.j2 +0 -0
  94. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/_base/workflows/security.yml.j2 +0 -0
  95. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/_base/workflows/tests.yml.j2 +0 -0
  96. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/dependabot.yml.j2 +0 -0
  97. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/go/precommit.yaml.j2 +0 -0
  98. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/go/workflows/security.yml.j2 +0 -0
  99. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/go/workflows/tests.yml.j2 +0 -0
  100. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/issue_templates/bug_report.md.j2 +0 -0
  101. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/issue_templates/feature_request.md.j2 +0 -0
  102. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/javascript/precommit.yaml.j2 +0 -0
  103. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/javascript/workflows/security.yml.j2 +0 -0
  104. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/javascript/workflows/tests.yml.j2 +0 -0
  105. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/python/precommit.yaml.j2 +0 -0
  106. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/python/workflows/security.yml.j2 +0 -0
  107. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/python/workflows/tests.yml.j2 +0 -0
  108. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/workflows/agentready-assessment.yml.j2 +0 -0
  109. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/bootstrap/workflows/repomix-update.yml.j2 +0 -0
  110. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/multi_report.html.j2 +0 -0
  111. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/report.html.j2 +0 -0
  112. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/templates/slides.html.j2 +0 -0
  113. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/utils/__init__.py +0 -0
  114. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/utils/privacy.py +0 -0
  115. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/utils/security.py +0 -0
  116. {agentready-2.45.0 → agentready-2.46.0}/src/agentready/utils/subprocess_utils.py +0 -0
  117. {agentready-2.45.0 → agentready-2.46.0}/src/agentready.egg-info/SOURCES.txt +0 -0
  118. {agentready-2.45.0 → agentready-2.46.0}/src/agentready.egg-info/dependency_links.txt +0 -0
  119. {agentready-2.45.0 → agentready-2.46.0}/src/agentready.egg-info/entry_points.txt +0 -0
  120. {agentready-2.45.0 → agentready-2.46.0}/src/agentready.egg-info/requires.txt +0 -0
  121. {agentready-2.45.0 → agentready-2.46.0}/src/agentready.egg-info/top_level.txt +0 -0
  122. {agentready-2.45.0 → agentready-2.46.0}/tests/test_demo_generation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentready
3
- Version: 2.45.0
3
+ Version: 2.46.0
4
4
  Summary: Assess and bootstrap git repositories for AI-assisted development with automated remediation
5
5
  Author-email: Jeremy Eder <jeder@redhat.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentready"
3
- version = "2.45.0"
3
+ version = "2.46.0"
4
4
  description = "Assess and bootstrap git repositories for AI-assisted development with automated remediation"
5
5
  authors = [{name = "Jeremy Eder", email = "jeder@redhat.com"}]
6
6
  readme = "README.md"
@@ -290,6 +290,13 @@ class DesignIntentAssessor(BaseAssessor):
290
290
  evidence.append(f"Design intent language found in {filename}")
291
291
  break
292
292
 
293
+ enforcement_pts, enforcement_evidence = self._check_design_enforcement(
294
+ repository
295
+ )
296
+ if enforcement_pts > 0:
297
+ score += enforcement_pts
298
+ evidence.extend(enforcement_evidence)
299
+
293
300
  score = min(score, 100.0)
294
301
 
295
302
  if score >= 50:
@@ -315,6 +322,99 @@ class DesignIntentAssessor(BaseAssessor):
315
322
  error_message=None,
316
323
  )
317
324
 
325
+ def _check_design_enforcement(
326
+ self, repository: Repository
327
+ ) -> tuple[float, list[str]]:
328
+ """Check for enforcement of design doc updates alongside code changes.
329
+
330
+ Advisory enforcement (10 pts): AGENTS.md/CLAUDE.md rules requiring
331
+ design doc updates with architectural changes.
332
+ Deterministic enforcement (15 pts): Hooks or skills that check for
333
+ design doc updates. Awards the higher of the two, not both.
334
+ """
335
+ import json
336
+
337
+ doc_ref_pattern = re.compile(
338
+ r"design\s+doc|docs/design|architecture\s+doc|\.adr|design\s+document",
339
+ re.IGNORECASE,
340
+ )
341
+ enforcement_verb_pattern = re.compile(
342
+ r"update|review|create|maintain|must|required|ensure|check",
343
+ re.IGNORECASE,
344
+ )
345
+
346
+ deterministic_score = 0.0
347
+ deterministic_evidence = []
348
+
349
+ settings_path = repository.path / ".claude" / "settings.json"
350
+ if settings_path.exists():
351
+ try:
352
+ settings = json.loads(settings_path.read_text(encoding="utf-8"))
353
+ hooks = settings.get("hooks", {})
354
+ hooks_str = json.dumps(hooks).lower()
355
+ if (
356
+ hooks
357
+ and doc_ref_pattern.search(hooks_str)
358
+ and enforcement_verb_pattern.search(hooks_str)
359
+ ):
360
+ deterministic_score = 15.0
361
+ deterministic_evidence.append(
362
+ ".claude/settings.json hooks reference design docs (deterministic enforcement)"
363
+ )
364
+ except (json.JSONDecodeError, OSError):
365
+ pass
366
+
367
+ if deterministic_score == 0:
368
+ skills_dir = repository.path / ".claude" / "skills"
369
+ if skills_dir.exists() and skills_dir.is_dir():
370
+ try:
371
+ for skill_dir in skills_dir.iterdir():
372
+ if not skill_dir.is_dir():
373
+ continue
374
+ skill_md = skill_dir / "SKILL.md"
375
+ if not skill_md.exists():
376
+ continue
377
+ try:
378
+ content = skill_md.read_text(encoding="utf-8")
379
+ if doc_ref_pattern.search(
380
+ content
381
+ ) and enforcement_verb_pattern.search(content):
382
+ deterministic_score = 15.0
383
+ deterministic_evidence.append(
384
+ f".claude/skills/{skill_dir.name}/ references design doc enforcement (deterministic)"
385
+ )
386
+ break
387
+ except (OSError, UnicodeDecodeError):
388
+ continue
389
+ except OSError:
390
+ pass
391
+
392
+ if deterministic_score > 0:
393
+ return deterministic_score, deterministic_evidence
394
+
395
+ advisory_score = 0.0
396
+ advisory_evidence = []
397
+ context_files = ["AGENTS.md", "CLAUDE.md", ".claude/CLAUDE.md"]
398
+ for filename in context_files:
399
+ filepath = repository.path / filename
400
+ if not filepath.exists():
401
+ continue
402
+ try:
403
+ content = filepath.read_text(encoding="utf-8")
404
+ except (OSError, UnicodeDecodeError):
405
+ continue
406
+
407
+ if doc_ref_pattern.search(content) and enforcement_verb_pattern.search(
408
+ content
409
+ ):
410
+ advisory_score = 10.0
411
+ advisory_evidence.append(
412
+ f"{filename} contains design doc update rules (advisory enforcement)"
413
+ )
414
+ break
415
+
416
+ return advisory_score, advisory_evidence
417
+
318
418
  def _create_remediation(self) -> Remediation:
319
419
  return Remediation(
320
420
  summary="Document design intent: preconditions, invariants, and rationale",
@@ -323,11 +423,14 @@ class DesignIntentAssessor(BaseAssessor):
323
423
  "For each critical module, document preconditions, invariants, and rationale",
324
424
  "Use an AI agent to reverse-engineer initial design docs from code, then enrich with intent",
325
425
  "Reference design docs from CLAUDE.md/AGENTS.md",
426
+ "Add a rule to AGENTS.md requiring design doc updates with architectural changes",
427
+ "For stronger enforcement, add a hook or skill that checks for design doc updates",
326
428
  ],
327
429
  tools=[],
328
430
  commands=["mkdir -p docs/design"],
329
431
  examples=[
330
432
  "# docs/design/event-system.md\n## Invariants\n- Event log is append-only; never mutate or delete entries\n- Events are processed exactly-once via idempotency keys\n\n## Preconditions\n- Auth middleware must validate token before event handlers run\n\n## Rationale\n- Polling instead of webhooks: upstream API has 5s delivery SLA, too slow for our use case",
433
+ "# AGENTS.md - Advisory enforcement\n## Design Documentation\nWhen modifying component boundaries, data flows, or API contracts,\nreview and update the corresponding design doc in docs/design/.",
331
434
  ],
332
435
  citations=[
333
436
  Citation(
@@ -336,6 +439,12 @@ class DesignIntentAssessor(BaseAssessor):
336
439
  url="",
337
440
  relevance="Agents cannot infer design intent from code alone",
338
441
  ),
442
+ Citation(
443
+ source="Red Hat",
444
+ title="Repository Scaffolding for AI Coding Agents, Section 2.3 Practice C",
445
+ url="",
446
+ relevance="Enforce design doc updates as part of architectural changes",
447
+ ),
339
448
  ],
340
449
  )
341
450
 
@@ -791,18 +791,22 @@ class DeterministicEnforcementAssessor(BaseAssessor):
791
791
  score = 0.0
792
792
 
793
793
  if precommit_config.exists():
794
- score += 60.0
795
- evidence.append(".pre-commit-config.yaml found (pre-commit hooks)")
794
+ score += 40.0
795
+ evidence.append(".pre-commit-config.yaml found (git hooks, bypassable)")
796
796
 
797
797
  if claude_settings.exists():
798
798
  try:
799
799
  import json
800
800
 
801
801
  content = json.loads(claude_settings.read_text())
802
- if "hooks" in content:
803
- score += 30.0
802
+ hooks = content.get("hooks")
803
+ has_configured_hooks = isinstance(hooks, dict) and any(
804
+ isinstance(entries, list) and entries for entries in hooks.values()
805
+ )
806
+ if has_configured_hooks:
807
+ score += 60.0
804
808
  evidence.append(
805
- ".claude/settings.json has hooks configured (agent hooks)"
809
+ ".claude/settings.json has hooks configured (deterministic agent hooks)"
806
810
  )
807
811
  else:
808
812
  score += 10.0
@@ -840,16 +844,18 @@ class DeterministicEnforcementAssessor(BaseAssessor):
840
844
  hook_scripts = []
841
845
  evidence.append(".husky directory exists but could not be read")
842
846
  if hook_scripts:
843
- score += 60.0
847
+ score += 40.0
844
848
  hooks_list = ", ".join(sorted(hook_scripts))
845
- evidence.append(f".husky directory found with hooks: {hooks_list}")
849
+ evidence.append(
850
+ f".husky directory found with hooks: {hooks_list} (git hooks, bypassable)"
851
+ )
846
852
  else:
847
853
  score += 10.0
848
854
  evidence.append(".husky directory found but no hook scripts")
849
855
 
850
856
  score = min(score, 100.0)
851
857
 
852
- if score >= 60:
858
+ if score >= 40:
853
859
  return Finding(
854
860
  attribute=self.attribute,
855
861
  status="pass",
@@ -888,9 +894,9 @@ class DeterministicEnforcementAssessor(BaseAssessor):
888
894
  return Remediation(
889
895
  summary="Set up deterministic enforcement with hooks and lint rules",
890
896
  steps=[
897
+ "Configure .claude/settings.json with agent hooks (deterministic, cannot be bypassed)",
891
898
  "Start with 2 hooks: auto-format on edit + block destructive operations",
892
- "Install pre-commit (Python) or Husky (Node.js) for git hooks",
893
- "Configure .claude/settings.json with agent hooks for team-wide sharing",
899
+ "Optionally add pre-commit (Python) or Husky (Node.js) for git hooks",
894
900
  "Add lint rules for import restrictions and architectural boundaries",
895
901
  ],
896
902
  tools=["pre-commit", "husky"],
@@ -906,7 +912,12 @@ class DeterministicEnforcementAssessor(BaseAssessor):
906
912
  "PostToolUse": [
907
913
  {
908
914
  "matcher": "Edit|Write",
909
- "command": "npx prettier --write $CLAUDE_FILE_PATH 2>/dev/null || true"
915
+ "hooks": [
916
+ {
917
+ "type": "command",
918
+ "command": "npx prettier --write $CLAUDE_FILE_PATH 2>/dev/null || true"
919
+ }
920
+ ]
910
921
  }
911
922
  ]
912
923
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentready
3
- Version: 2.45.0
3
+ Version: 2.46.0
4
4
  Summary: Assess and bootstrap git repositories for AI-assisted development with automated remediation
5
5
  Author-email: Jeremy Eder <jeder@redhat.com>
6
6
  License: MIT
File without changes
File without changes
File without changes