specfact-cli 0.46.17__tar.gz → 0.46.18__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.46.17 → specfact_cli-0.46.18}/PKG-INFO +1 -1
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/pyproject.toml +1 -1
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/__init__.py +1 -1
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/__init__.py +1 -1
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/cli.py +9 -2
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/.gitignore +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/LICENSE +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/README.md +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/bundled-module-registry/index.json +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/keys/README.md +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/keys/module-signing-public.pem +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/mappings/node-async.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/mappings/python-async.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/mappings/speckit-default.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/schemas/deviation.schema.json +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/schemas/plan.schema.json +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/schemas/protocol.schema.json +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/github-action.yml.j2 +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/persona/architect.md.j2 +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/persona/developer.md.j2 +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/persona/product-owner.md.j2 +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/plan.bundle.yaml.j2 +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/policies/kanban.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/policies/mixed.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/policies/safe.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/policies/scrum.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/pr-template.md.j2 +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/protocol.yaml.j2 +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/telemetry.yaml.example +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/__main__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/ado.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/backlog_base.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/base.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/github.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/openspec.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/openspec_parser.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/registry.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/adapters/speckit.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/agents/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/agents/analyze_agent.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/agents/base.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/agents/plan_agent.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/agents/registry.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/agents/sync_agent.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/code_analyzer.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/graph_analyzer.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/relationship_mapper.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/adapters/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/adapters/base.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/converter.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/filters.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/ado_mapper.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/base.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/github_mapper.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/template_config.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/_bundle_shim.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/analyze.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/contract_cmd.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/drift.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/enforce.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/generate.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/import_cmd.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/init.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/migrate.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/plan.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/project_cmd.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/repro.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/sdd.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/spec.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/sync.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/update.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/commands/validate.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/common/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/common/bundle_factory.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/common/logger_setup.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/common/logging_utils.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/common/text_utils.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/common/utils.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/comparators/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/comparators/plan_comparator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/contracts/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/contracts/crosshair_props.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/contracts/module_interface.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/contract_generator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/openapi_extractor.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/persona_exporter.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/plan_generator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/protocol_generator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/report_generator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/task_generator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/test_to_openapi.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/workflow_generator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/groups/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/groups/codebase_group.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/groups/govern_group.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/groups/member_group.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/groups/project_group.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/groups/spec_group.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/importers/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/importers/speckit_converter.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/importers/speckit_scanner.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/integrations/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/integrations/specmatic.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/merge/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/merge/resolver.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/migrations/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/migrations/plan_migrator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/backlog_item.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/bridge.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/capabilities.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/change.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/contract.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/deviation.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/dor_config.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/enforcement.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/module_package.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/persona_template.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/plan.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/project.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/protocol.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/quality.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/sdd.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/source_tracking.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/task.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/models/validation.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modes/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modes/detector.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modes/router.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/_bundle_import.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/init/module-package.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/init/src/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/init/src/app.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/init/src/commands.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/init/src/first_run_selection.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/module_io_shim.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/module_registry/module-package.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/module_registry/src/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/module_registry/src/app.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/module_registry/src/commands.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/upgrade/module-package.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/upgrade/src/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/upgrade/src/app.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/upgrade/src/commands.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/parsers/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/parsers/persona_importer.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/alias_manager.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/bootstrap.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/bridge_registry.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/crypto_validator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/custom_registries.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/dependency_resolver.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/extension_registry.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/help_cache.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/marketplace_client.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/metadata.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_availability.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_discovery.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_grouping.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_installer.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_lifecycle.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_packages.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_security.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_state.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/registry.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/resources/semgrep/async.yml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/runtime.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_probe.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync_openspec_md_parse.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync_requirement_from_proposal.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync_requirement_helpers.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync_tasks_from_proposal.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync_what_changes_format.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync_write_openspec_from_proposal.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_watch.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/change_detector.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/code_to_spec.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/drift_detector.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/repository_sync.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/spec_to_code.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/spec_to_tests.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/watcher.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/telemetry.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/defaults/defect_v1.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/defaults/enabler_v1.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/defaults/spike_v1.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/defaults/user_story_v1.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/frameworks/scrum/user_story_v1.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/personas/product-owner/user_story_v1.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/providers/ado/work_item_v1.yaml +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/registry.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/templates/specification_templates.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/auth_tokens.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/bundle_converters.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/bundle_loader.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/code_change_detector.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/console.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/content_sanitizer.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/context_detection.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/contract_predicates.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/enrichment_context.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/enrichment_parser.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/env_manager.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/feature_keys.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/git.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/github_annotations.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/icontract_helpers.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/ide_setup.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/incremental_check.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/metadata.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/optional_deps.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/performance.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/persona_ownership.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/progress.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/project_artifact_write.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/prompts.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/sdd_discovery.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/source_scanner.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/startup_checks.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/structure.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/structured_io.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/suggestions.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/terminal.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/utils/yaml_utils.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validation/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validation/command_audit.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/agile_validation.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/change_proposal_integration.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/cli_first_validator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/contract_validator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/fsm.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/repro_checker.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/schema.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/contract_populator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/crosshair_runner.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/crosshair_summary.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/dependency_installer.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/framework_detector.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/frameworks/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/frameworks/base.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/frameworks/django.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/frameworks/drf.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/frameworks/fastapi.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/frameworks/flask.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/harness_generator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/models.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/orchestrator.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/specmatic_runner.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/validators/sidecar/unannotated_detector.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/versioning/__init__.py +0 -0
- {specfact_cli-0.46.17 → specfact_cli-0.46.18}/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.46.
|
|
3
|
+
Version: 0.46.18
|
|
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.46.
|
|
7
|
+
version = "0.46.18"
|
|
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"
|
|
@@ -610,6 +610,12 @@ def _strip_redundant_single_command_arg(click_cmd: click.Command, args: tuple[st
|
|
|
610
610
|
return args_list
|
|
611
611
|
|
|
612
612
|
|
|
613
|
+
def _lazy_delegate_remaining_args(ctx: click.Context) -> list[str]:
|
|
614
|
+
ctx_state = vars(ctx)
|
|
615
|
+
protected_args = ctx_state.get("_protected_args") or ctx_state.get("protected_args") or ()
|
|
616
|
+
return [str(arg) for arg in (*protected_args, *ctx.args)]
|
|
617
|
+
|
|
618
|
+
|
|
613
619
|
class _LazyDelegateGroup(click.Group):
|
|
614
620
|
"""Click Group that delegates all args to the real command (lazy-loaded)."""
|
|
615
621
|
|
|
@@ -657,9 +663,10 @@ class _LazyDelegateGroup(click.Group):
|
|
|
657
663
|
@require(lambda ctx: ctx is not None, "ctx must not be None")
|
|
658
664
|
@ensure(lambda result: result is None or isinstance(result, int), "result must be None or an exit code")
|
|
659
665
|
def invoke(self, ctx: click.Context) -> Any:
|
|
660
|
-
if ctx.invoked_subcommand is None
|
|
666
|
+
if ctx.invoked_subcommand is None:
|
|
667
|
+
args = _lazy_delegate_remaining_args(ctx)
|
|
661
668
|
ctx.meta["original_prog_name"] = ctx.command_path
|
|
662
|
-
return self._delegate_cmd.main(args=
|
|
669
|
+
return self._delegate_cmd.main(args=args, prog_name=ctx.command_path, standalone_mode=False)
|
|
663
670
|
return super().invoke(ctx)
|
|
664
671
|
|
|
665
672
|
@require(_lazy_delegate_cmd_name_ready, "lazy command name must be set")
|
|
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
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/resources/templates/persona/product-owner.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
|
|
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
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/ambiguity_scanner.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/contract_extractor.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/control_flow_analyzer.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/relationship_mapper.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/requirement_extractor.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/analyzers/test_pattern_extractor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/ado_mapper.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/github_mapper.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/backlog/mappers/template_config.py
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
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/comparators/plan_comparator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/contracts/module_interface.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/enrichers/constitution_enricher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/contract_generator.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/openapi_extractor.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/persona_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/protocol_generator.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/report_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/test_to_openapi.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/generators/workflow_generator.py
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
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/importers/speckit_converter.py
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/init/module-package.yaml
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
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/module_registry/src/app.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/upgrade/module-package.yaml
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/upgrade/src/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/modules/upgrade/src/commands.py
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
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/custom_registries.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/dependency_resolver.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/extension_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/marketplace_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/registry/module_availability.py
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
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/resources/semgrep/code-quality.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.17 → specfact_cli-0.46.18}/src/specfact_cli/sync/bridge_sync_openspec_md_parse.py
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
|