specfact-cli 0.36.1__tar.gz → 0.37.1__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.
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/PKG-INFO +1 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/pyproject.toml +4 -1
- specfact_cli-0.37.1/resources/keys/README.md +14 -0
- specfact_cli-0.37.1/resources/keys/module-signing-public.pem +3 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/__init__.py +1 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/cli.py +0 -28
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/module_package.py +3 -3
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/analyze/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/auth/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/contract/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/drift/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/enforce/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/generate/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/import_cmd/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/init/module-package.yaml +4 -1
- specfact_cli-0.37.1/src/specfact_cli/modules/init/src/commands.py +483 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/migrate/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/module_registry/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/module_registry/src/commands.py +202 -9
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/module-package.yaml +6 -2
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/plan/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/module-package.yaml +5 -3
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/project/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/repro/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sdd/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/spec/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sync/module-package.yaml +6 -2
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/upgrade/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/validate/module-package.yaml +4 -1
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/module_discovery.py +25 -9
- specfact_cli-0.37.1/src/specfact_cli/registry/module_installer.py +485 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/module_packages.py +19 -9
- specfact_cli-0.37.1/src/specfact_cli/registry/module_security.py +121 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/metadata.py +8 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/startup_checks.py +69 -0
- specfact_cli-0.36.1/src/specfact_cli/modules/init/src/commands.py +0 -1006
- specfact_cli-0.36.1/src/specfact_cli/registry/module_installer.py +0 -168
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/.gitignore +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/LICENSE +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/README.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/mappings/node-async.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/mappings/python-async.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/mappings/speckit-default.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/shared/cli-enforcement.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.01-import.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.02-plan.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.03-review.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.04-sdd.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.05-enforce.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.06-sync.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.07-contracts.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.backlog-add.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.backlog-daily.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.backlog-refine.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.compare.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.sync-backlog.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/prompts/specfact.validate.md +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/schemas/deviation.schema.json +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/schemas/plan.schema.json +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/schemas/protocol.schema.json +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/defaults/defect_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/defaults/enabler_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/defaults/spike_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/defaults/user_story_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/field_mappings/ado_agile.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/field_mappings/ado_default.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/field_mappings/ado_kanban.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/field_mappings/ado_safe.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/field_mappings/ado_scrum.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/frameworks/safe/safe_feature_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/frameworks/scrum/user_story_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/personas/developer/developer_task_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/personas/product-owner/user_story_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/backlog/providers/ado/work_item_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/github-action.yml.j2 +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/persona/architect.md.j2 +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/persona/developer.md.j2 +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/persona/product-owner.md.j2 +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/plan.bundle.yaml.j2 +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/policies/kanban.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/policies/mixed.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/policies/safe.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/policies/scrum.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/pr-template.md.j2 +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/protocol.yaml.j2 +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/resources/templates/telemetry.yaml.example +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/__main__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/ado.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/backlog_base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/github.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/openspec.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/openspec_parser.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/registry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/adapters/speckit.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/agents/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/agents/analyze_agent.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/agents/base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/agents/plan_agent.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/agents/registry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/agents/sync_agent.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/code_analyzer.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/graph_analyzer.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/relationship_mapper.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/adapters/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/adapters/base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/adapters/local_yaml_adapter.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/ai_refiner.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/converter.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/filters.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/format_detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/formats/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/formats/base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/formats/markdown_format.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/formats/structured_format.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/mappers/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/mappers/ado_mapper.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/mappers/base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/mappers/github_mapper.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/mappers/template_config.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/backlog/template_detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/analyze.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/auth.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/backlog_commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/contract_cmd.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/drift.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/enforce.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/generate.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/import_cmd.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/init.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/migrate.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/plan.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/project_cmd.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/repro.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/sdd.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/spec.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/sync.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/update.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/commands/validate.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/common/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/common/logger_setup.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/common/logging_utils.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/common/text_utils.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/common/utils.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/comparators/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/comparators/plan_comparator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/contracts/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/contracts/crosshair_props.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/contracts/module_interface.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/contract_generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/openapi_extractor.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/persona_exporter.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/plan_generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/protocol_generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/report_generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/task_generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/test_to_openapi.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/generators/workflow_generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/importers/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/importers/speckit_converter.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/importers/speckit_scanner.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/integrations/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/integrations/specmatic.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/merge/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/merge/resolver.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/migrations/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/migrations/plan_migrator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/backlog_item.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/bridge.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/capabilities.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/change.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/contract.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/deviation.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/dor_config.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/enforcement.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/persona_template.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/plan.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/project.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/protocol.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/quality.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/sdd.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/source_tracking.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/task.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/models/validation.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modes/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modes/detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modes/router.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/analyze/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/analyze/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/analyze/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/auth/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/auth/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/auth/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/adapters/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/adapters/ado.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/adapters/base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/adapters/github.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/adapters/jira.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/adapters/linear.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/contract/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/contract/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/contract/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/drift/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/drift/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/drift/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/enforce/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/enforce/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/enforce/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/generate/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/generate/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/generate/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/import_cmd/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/import_cmd/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/import_cmd/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/init/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/init/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/migrate/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/migrate/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/migrate/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/module_io_shim.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/module_registry/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/module_registry/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/patch_mode/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/patch_mode/commands/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/patch_mode/commands/apply.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/applier.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/idempotency.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/plan/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/plan/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/plan/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/config/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/config/policy_config.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/config/templates.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/engine/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/engine/suggester.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/engine/validator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/main.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/models/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/models/policy_result.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/kanban.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/safe.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/scrum.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/registry/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/policy_engine/src/policy_engine/registry/policy_registry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/project/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/project/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/project/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/repro/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/repro/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/repro/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sdd/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sdd/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sdd/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/spec/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/spec/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/spec/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sync/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sync/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/sync/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/upgrade/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/upgrade/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/upgrade/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/validate/src/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/validate/src/app.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/validate/src/commands.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/parsers/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/parsers/persona_importer.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/bootstrap.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/bridge_registry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/crypto_validator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/extension_registry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/help_cache.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/marketplace_client.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/metadata.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/module_lifecycle.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/module_state.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/registry/registry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/resources/semgrep/async.yml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/runtime.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/bridge_probe.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/bridge_sync.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/bridge_watch.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/change_detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/code_to_spec.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/drift_detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/repository_sync.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/spec_to_code.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/spec_to_tests.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/watcher.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/telemetry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/bridge_templates.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/defaults/defect_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/defaults/enabler_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/defaults/spike_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/defaults/user_story_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/frameworks/scrum/user_story_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/personas/product-owner/user_story_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/providers/ado/work_item_v1.yaml +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/registry.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/templates/specification_templates.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/auth_tokens.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/bundle_converters.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/bundle_loader.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/code_change_detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/console.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/content_sanitizer.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/context_detection.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/enrichment_context.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/enrichment_parser.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/env_manager.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/feature_keys.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/git.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/github_annotations.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/ide_setup.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/incremental_check.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/optional_deps.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/performance.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/persona_ownership.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/progress.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/prompts.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/sdd_discovery.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/source_scanner.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/structure.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/structured_io.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/suggestions.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/terminal.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/utils/yaml_utils.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/agile_validation.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/change_proposal_integration.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/cli_first_validator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/contract_validator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/fsm.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/repro_checker.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/schema.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/contract_populator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/crosshair_runner.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/crosshair_summary.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/dependency_installer.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/framework_detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/frameworks/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/frameworks/base.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/frameworks/django.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/frameworks/drf.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/frameworks/fastapi.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/frameworks/flask.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/harness_generator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/models.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/orchestrator.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/specmatic_runner.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/validators/sidecar/unannotated_detector.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/versioning/__init__.py +0 -0
- {specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/versioning/analyzer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specfact-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.37.1
|
|
4
4
|
Summary: The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases.
|
|
5
5
|
Project-URL: Homepage, https://github.com/nold-ai/specfact-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/nold-ai/specfact-cli.git
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specfact-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.37.1"
|
|
8
8
|
description = "The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -377,6 +377,9 @@ packages = [
|
|
|
377
377
|
"resources/templates" = "specfact_cli/resources/templates"
|
|
378
378
|
"resources/schemas" = "specfact_cli/resources/schemas"
|
|
379
379
|
"resources/mappings" = "specfact_cli/resources/mappings"
|
|
380
|
+
"resources/keys" = "specfact_cli/resources/keys"
|
|
381
|
+
"modules/backlog-core" = "specfact_cli/modules/backlog-core"
|
|
382
|
+
"modules/bundle-mapper" = "specfact_cli/modules/bundle-mapper"
|
|
380
383
|
# Note: resources/semgrep files are in src/specfact_cli/resources/semgrep/ and are automatically included
|
|
381
384
|
|
|
382
385
|
[tool.hatch.build.targets.sdist]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Public verification keys for bundled module signatures.
|
|
2
|
+
|
|
3
|
+
Default key path expected by SpecFact CLI runtime:
|
|
4
|
+
|
|
5
|
+
- Repo source: `resources/keys/module-signing-public.pem`
|
|
6
|
+
- Installed package: `resources/keys/module-signing-public.pem`
|
|
7
|
+
|
|
8
|
+
Runtime resolution order:
|
|
9
|
+
|
|
10
|
+
1. Explicit public key argument (internal call path)
|
|
11
|
+
2. `SPECFACT_MODULE_PUBLIC_KEY_PEM` environment variable
|
|
12
|
+
3. Bundled key file (source path first, then installed package path)
|
|
13
|
+
|
|
14
|
+
Do not store private signing keys in this repository.
|
|
@@ -337,33 +337,6 @@ class _LazyDelegateGroup(click.Group):
|
|
|
337
337
|
def _make_delegate_command(self) -> click.Command:
|
|
338
338
|
cmd_name = self._lazy_cmd_name
|
|
339
339
|
|
|
340
|
-
def _normalize_init_optional_module_flags(argv: list[str]) -> list[str]:
|
|
341
|
-
"""
|
|
342
|
-
Normalize bare init module flags to sentinel values.
|
|
343
|
-
|
|
344
|
-
Typer/Click options declared with value types require an argument. To support
|
|
345
|
-
UX like `specfact init --enable-module` in interactive mode, rewrite bare flags
|
|
346
|
-
to include a sentinel token consumed by init command logic.
|
|
347
|
-
"""
|
|
348
|
-
if cmd_name != "init":
|
|
349
|
-
return argv
|
|
350
|
-
out: list[str] = []
|
|
351
|
-
i = 0
|
|
352
|
-
while i < len(argv):
|
|
353
|
-
token = argv[i]
|
|
354
|
-
if token in ("--enable-module", "--disable-module"):
|
|
355
|
-
out.append(token)
|
|
356
|
-
if i + 1 < len(argv) and not argv[i + 1].startswith("-"):
|
|
357
|
-
out.append(argv[i + 1])
|
|
358
|
-
i += 2
|
|
359
|
-
continue
|
|
360
|
-
out.append("__interactive_select__")
|
|
361
|
-
i += 1
|
|
362
|
-
continue
|
|
363
|
-
out.append(token)
|
|
364
|
-
i += 1
|
|
365
|
-
return out
|
|
366
|
-
|
|
367
340
|
def _invoke(args: tuple[str, ...]) -> None:
|
|
368
341
|
from typer.main import get_command
|
|
369
342
|
|
|
@@ -380,7 +353,6 @@ class _LazyDelegateGroup(click.Group):
|
|
|
380
353
|
p = getattr(p, "parent", None)
|
|
381
354
|
prog_name = " ".join(reversed(parts)) if parts else cmd_name
|
|
382
355
|
args_list = list(args)
|
|
383
|
-
args_list = _normalize_init_optional_module_flags(args_list)
|
|
384
356
|
# When the real app is a single command (e.g. drift has only "detect"), Typer
|
|
385
357
|
# builds a TyperCommand, not a Group. Then args are ["detect", "bundle", "--repo", ...]
|
|
386
358
|
# and the command expects ["bundle", "--repo", ...] (no leading "detect").
|
|
@@ -152,7 +152,7 @@ class ModulePackageMetadata(BaseModel):
|
|
|
152
152
|
)
|
|
153
153
|
description: str | None = Field(default=None, description="Module description for user-facing module details")
|
|
154
154
|
license: str | None = Field(default=None, description="SPDX license identifier or license name")
|
|
155
|
-
source: str = Field(default="builtin", description="Module source: builtin, marketplace, or custom")
|
|
155
|
+
source: str = Field(default="builtin", description="Module source: builtin, project, user, marketplace, or custom")
|
|
156
156
|
|
|
157
157
|
@beartype
|
|
158
158
|
@ensure(lambda result: isinstance(result, list), "Validated bridges must be returned as a list")
|
|
@@ -163,6 +163,6 @@ class ModulePackageMetadata(BaseModel):
|
|
|
163
163
|
@model_validator(mode="after")
|
|
164
164
|
def validate_source(self) -> ModulePackageMetadata:
|
|
165
165
|
"""Validate source is one of supported module origins."""
|
|
166
|
-
if self.source not in {"builtin", "marketplace", "custom"}:
|
|
167
|
-
raise ValueError("source must be one of: builtin, marketplace, custom")
|
|
166
|
+
if self.source not in {"builtin", "project", "user", "marketplace", "custom"}:
|
|
167
|
+
raise ValueError("source must be one of: builtin, project, user, marketplace, custom")
|
|
168
168
|
return self
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/analyze/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: analyze
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- analyze
|
|
5
5
|
command_help:
|
|
@@ -14,3 +14,6 @@ publisher:
|
|
|
14
14
|
email: oss@nold.ai
|
|
15
15
|
description: Analyze codebase quality, contracts, and architecture signals.
|
|
16
16
|
license: Apache-2.0
|
|
17
|
+
integrity:
|
|
18
|
+
checksum: sha256:81401deb9416cb772437ab806dbc377778f7cf4d2986e8169765de59d1708733
|
|
19
|
+
signature: YfTBJOyF5OxkRkIg5Fffqtbc3DHa/eXoewyav97FwEMRZoqRXH6Fhhu80UUjKPEYMWP5JzRU8dWgvi8FgfFqBQ==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/auth/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: auth
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- auth
|
|
5
5
|
command_help:
|
|
@@ -14,3 +14,6 @@ publisher:
|
|
|
14
14
|
email: oss@nold.ai
|
|
15
15
|
description: Authenticate SpecFact with supported DevOps providers.
|
|
16
16
|
license: Apache-2.0
|
|
17
|
+
integrity:
|
|
18
|
+
checksum: sha256:d085de940d5de887f858462eff10a75e5acdb2e31cc61ed7dc79bfe6e4527e76
|
|
19
|
+
signature: SyoiHxZHlmQLzdnqn45c8B/dzZuqyWzflAo/hf0PWsckPSfeGN6ytlGgTJPV8Rq8IG96aVnPkir2dEJ4gavxAQ==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/backlog/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: backlog
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- backlog
|
|
5
5
|
command_help:
|
|
@@ -27,3 +27,6 @@ publisher:
|
|
|
27
27
|
email: oss@nold.ai
|
|
28
28
|
description: Manage backlog ceremonies, refinement, and dependency insights.
|
|
29
29
|
license: Apache-2.0
|
|
30
|
+
integrity:
|
|
31
|
+
checksum: sha256:db36a40672119b436b50bd4142400feec3398ae2732cfa357eacb7b40d8b8582
|
|
32
|
+
signature: NXgVtRf+ubB+upfAacJUTX8yaGw/cdZa9SSxqusak3ijGZe5POtK+ud+n2lnVMCg/9pOzoq8wdgsTrVr3mkCDA==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/contract/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: contract
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- contract
|
|
5
5
|
command_help:
|
|
@@ -14,3 +14,6 @@ publisher:
|
|
|
14
14
|
email: oss@nold.ai
|
|
15
15
|
description: Validate and manage API contracts for project bundles.
|
|
16
16
|
license: Apache-2.0
|
|
17
|
+
integrity:
|
|
18
|
+
checksum: sha256:577b9ee6af8075c0ebf58665a50ec5be6b2de935f401454f831447905320b649
|
|
19
|
+
signature: gHyTzZkYnLDxf27XFNHH/pauUhZ5ZZfTwPNQBwWCZ/v4oEdDV8gGjDr84g2KSsH8myrE7J8q47iBChxqO+FjBw==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/drift/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: drift
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- drift
|
|
5
5
|
command_help:
|
|
@@ -14,3 +14,6 @@ publisher:
|
|
|
14
14
|
email: oss@nold.ai
|
|
15
15
|
description: Detect and report drift between code, plans, and specs.
|
|
16
16
|
license: Apache-2.0
|
|
17
|
+
integrity:
|
|
18
|
+
checksum: sha256:5bf84d0a840bbdb47ccacda4490d19685d1298c3f7fd3b8e48ca641a08727e08
|
|
19
|
+
signature: S8djuQsc+7LBZH8myx+aUNeSfSpnLHXL70iCrK9yCfyYJbqDklQpKNxBGJQ4DjzrApm6ZyTBoxZdmA1BxDvDBw==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/enforce/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: enforce
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- enforce
|
|
5
5
|
command_help:
|
|
@@ -15,3 +15,6 @@ publisher:
|
|
|
15
15
|
email: oss@nold.ai
|
|
16
16
|
description: Apply governance policies and quality gates to bundles.
|
|
17
17
|
license: Apache-2.0
|
|
18
|
+
integrity:
|
|
19
|
+
checksum: sha256:16a8bc8d027b175321696f01fceb40a3cbc4a0567fe165c560be94221e412f88
|
|
20
|
+
signature: OuAE5iZ7AxSsD6VDfm5YKCtxQLJ33i4ACEW/5ejiWY0wlsgQtpkf2CMZaXWUBvS9GvxhID6PS3+yJMgzAaHBAA==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/generate/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: generate
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- generate
|
|
5
5
|
command_help:
|
|
@@ -15,3 +15,6 @@ publisher:
|
|
|
15
15
|
email: oss@nold.ai
|
|
16
16
|
description: Generate implementation artifacts from plans and SDD.
|
|
17
17
|
license: Apache-2.0
|
|
18
|
+
integrity:
|
|
19
|
+
checksum: sha256:d9dd799f0a13dc07d2200fdfbe5a4ce3cf869c2737d08f4101cebf3d4ff983fd
|
|
20
|
+
signature: 7IWVqUEAcD06JdiOinxBUQYp1coH81AecR0KXBQiy+O4XWg9/zI9YQVwWurXWozsSgCBeT/D4HOQ4bxOvrw3DQ==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/import_cmd/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: import_cmd
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- import
|
|
5
5
|
command_help:
|
|
@@ -14,3 +14,6 @@ publisher:
|
|
|
14
14
|
email: oss@nold.ai
|
|
15
15
|
description: Import projects and requirements from code and external tools.
|
|
16
16
|
license: Apache-2.0
|
|
17
|
+
integrity:
|
|
18
|
+
checksum: sha256:290a3dbe86dce079ed7cde343893830725ff80068fa89a8d0b0fd935bb746dfa
|
|
19
|
+
signature: ITiHkBu+zHOChLHGlXh3IQakaHxcFasY+ifLkWhbY9J8/d7hb3fEMz3t0IB3F3/VXi+dvsQdPhxha+baAVpvAA==
|
{specfact_cli-0.36.1 → specfact_cli-0.37.1}/src/specfact_cli/modules/init/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: init
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.37.1
|
|
3
3
|
commands:
|
|
4
4
|
- init
|
|
5
5
|
command_help:
|
|
@@ -14,3 +14,6 @@ publisher:
|
|
|
14
14
|
email: oss@nold.ai
|
|
15
15
|
description: Initialize SpecFact workspace and bootstrap local configuration.
|
|
16
16
|
license: Apache-2.0
|
|
17
|
+
integrity:
|
|
18
|
+
checksum: sha256:e6d6cdf1c10a6a760388db5a66e0f666f93b0835dfff1c3db13b19f8da9bce13
|
|
19
|
+
signature: IvGAdhMfLOyArra2PKdxqN0ozHw6m4gvZh0sEjiLSWx/2hiDDSXHSy6uHx4hEx0868bhknE6mvyUAAL3PZ4XCg==
|