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.
- {specsmith-0.2.2.dev46/src/specsmith.egg-info → specsmith-0.2.2.dev47}/PKG-INFO +1 -1
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/pyproject.toml +1 -1
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/upgrader.py +41 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47/src/specsmith.egg-info}/PKG-INFO +1 -1
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/LICENSE +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/README.md +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/setup.cfg +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/__init__.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/__main__.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/architect.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/auditor.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/cli.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/compressor.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/config.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/credits.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/differ.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/doctor.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/executor.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/exporter.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/importer.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/warp.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/ledger.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/plugins.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/releaser.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/requirements.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/scaffolder.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/session.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/workflow.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/workflow.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/tools.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/updater.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/validator.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/SOURCES.txt +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_auditor.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_cli.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_compressor.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_importer.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_integrations.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_scaffolder.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_smoke.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_tools.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_validator.py +0 -0
- {specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/tests/test_vcs.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.2.2.
|
|
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)")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/bug_report.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/contributing.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/license-MIT.j2
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/community/security.md.j2
RENAMED
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/architecture.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/readthedocs.yaml.j2
RENAMED
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/requirements.md.j2
RENAMED
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/docs/test-spec.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/roles.md.j2
RENAMED
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/rules.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/governance/workflow.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/python/pyproject.toml.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/scripts/setup.cmd.j2
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.2.2.dev46 → specsmith-0.2.2.dev47}/src/specsmith/templates/workflows/release.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|