specsmith 0.2.2.dev46__tar.gz → 0.2.2.dev47__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 (102) hide show
  1. {specsmith-0.2.2.dev46/src/specsmith.egg-info → specsmith-0.2.2.dev47}/PKG-INFO +1 -1
  2. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/pyproject.toml +1 -1
  3. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/upgrader.py +41 -0
  4. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47/src/specsmith.egg-info}/PKG-INFO +1 -1
  5. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/LICENSE +0 -0
  6. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/README.md +0 -0
  7. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/setup.cfg +0 -0
  8. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/__init__.py +0 -0
  9. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/__main__.py +0 -0
  10. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/architect.py +0 -0
  11. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/auditor.py +0 -0
  12. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/cli.py +0 -0
  13. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/commands/__init__.py +0 -0
  14. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/compressor.py +0 -0
  15. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/config.py +0 -0
  16. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/credit_analyzer.py +0 -0
  17. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/credits.py +0 -0
  18. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/differ.py +0 -0
  19. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/doctor.py +0 -0
  20. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/executor.py +0 -0
  21. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/exporter.py +0 -0
  22. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/importer.py +0 -0
  23. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/__init__.py +0 -0
  24. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/aider.py +0 -0
  25. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/base.py +0 -0
  26. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/claude_code.py +0 -0
  27. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/copilot.py +0 -0
  28. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/cursor.py +0 -0
  29. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/gemini.py +0 -0
  30. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/warp.py +0 -0
  31. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/windsurf.py +0 -0
  32. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/ledger.py +0 -0
  33. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/plugins.py +0 -0
  34. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/releaser.py +0 -0
  35. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/requirements.py +0 -0
  36. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/scaffolder.py +0 -0
  37. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/session.py +0 -0
  38. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/agents.md.j2 +0 -0
  39. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  40. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  41. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  42. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  43. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  44. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  45. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  46. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/security.md.j2 +0 -0
  47. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  48. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  49. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  50. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  51. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  52. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/workflow.md.j2 +0 -0
  53. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/editorconfig.j2 +0 -0
  54. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/gitattributes.j2 +0 -0
  55. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/gitignore.j2 +0 -0
  56. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/go/go.mod.j2 +0 -0
  57. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/go/main.go.j2 +0 -0
  58. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  59. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  60. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  61. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  62. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  63. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/workflow.md.j2 +0 -0
  64. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/js/package.json.j2 +0 -0
  65. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/ledger.md.j2 +0 -0
  66. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/python/cli.py.j2 +0 -0
  67. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/python/init.py.j2 +0 -0
  68. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  69. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/readme.md.j2 +0 -0
  70. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  71. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  72. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  73. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  74. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  75. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  76. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  77. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  78. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  79. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/tools.py +0 -0
  80. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/updater.py +0 -0
  81. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/validator.py +0 -0
  82. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/__init__.py +0 -0
  83. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/base.py +0 -0
  84. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/bitbucket.py +0 -0
  85. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/github.py +0 -0
  86. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/gitlab.py +0 -0
  87. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs_commands.py +0 -0
  88. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/SOURCES.txt +0 -0
  89. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/dependency_links.txt +0 -0
  90. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/entry_points.txt +0 -0
  91. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/requires.txt +0 -0
  92. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/top_level.txt +0 -0
  93. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_auditor.py +0 -0
  94. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_cli.py +0 -0
  95. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_compressor.py +0 -0
  96. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_importer.py +0 -0
  97. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_integrations.py +0 -0
  98. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_scaffolder.py +0 -0
  99. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_smoke.py +0 -0
  100. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_tools.py +0 -0
  101. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_validator.py +0 -0
  102. {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_vcs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.2.2.dev46
3
+ Version: 0.2.2.dev47
4
4
  Summary: Forge governed project scaffolds from the Agentic AI Development Workflow Specification.
5
5
  Author: BitConcepts
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specsmith"
7
- version = "0.2.2.dev46"
7
+ version = "0.2.2.dev47"
8
8
  description = "Forge governed project scaffolds from the Agentic AI Development Workflow Specification."
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -255,9 +255,13 @@ def _migrate_legacy_filenames(root: Path, result: UpgradeResult) -> None:
255
255
  Handles both case-sensitive (Linux) and case-insensitive (Windows/macOS)
256
256
  filesystems. On case-insensitive FS, uses a two-step rename via a
257
257
  temporary name to avoid conflicts.
258
+
259
+ Also updates references in AGENTS.md so the hub links stay valid.
258
260
  """
259
261
  import shutil
260
262
 
263
+ renamed: list[tuple[str, str]] = []
264
+
261
265
  for old_rel, new_rel in _LEGACY_RENAMES:
262
266
  old_path = root / old_rel
263
267
  new_path = root / new_rel
@@ -276,4 +280,41 @@ def _migrate_legacy_filenames(root: Path, result: UpgradeResult) -> None:
276
280
  shutil.move(str(old_path), str(new_path))
277
281
  else:
278
282
  continue # Both exist as truly separate files — skip
283
+ renamed.append((old_rel, new_rel))
279
284
  result.updated_files.append(f"{old_rel} → {new_rel}")
285
+
286
+ # Update references in user-owned docs that point to renamed files
287
+ if renamed:
288
+ _update_references(root, renamed, result)
289
+
290
+
291
+ def _update_references(
292
+ root: Path,
293
+ renames: list[tuple[str, str]],
294
+ result: UpgradeResult,
295
+ ) -> None:
296
+ """Rewrite old paths to new paths in AGENTS.md and other hub files.
297
+
298
+ Only performs safe string replacement of exact path references.
299
+ """
300
+ docs_to_patch = [
301
+ "AGENTS.md",
302
+ "CLAUDE.md",
303
+ "GEMINI.md",
304
+ ".warp/skills/SKILL.md",
305
+ ".cursor/rules/governance.mdc",
306
+ ".windsurfrules",
307
+ ".aider.conf.yml",
308
+ ]
309
+
310
+ for doc_name in docs_to_patch:
311
+ doc_path = root / doc_name
312
+ if not doc_path.exists():
313
+ continue
314
+ content = doc_path.read_text(encoding="utf-8")
315
+ original = content
316
+ for old_rel, new_rel in renames:
317
+ content = content.replace(old_rel, new_rel)
318
+ if content != original:
319
+ doc_path.write_text(content, encoding="utf-8")
320
+ result.updated_files.append(f"{doc_name} (references updated)")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.2.2.dev46
3
+ Version: 0.2.2.dev47
4
4
  Summary: Forge governed project scaffolds from the Agentic AI Development Workflow Specification.
5
5
  Author: BitConcepts
6
6
  License: MIT
File without changes