openmodus 0.0.4__tar.gz → 0.0.6__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.
- {openmodus-0.0.4 → openmodus-0.0.6}/ARCHITECTURE.md +2 -0
- openmodus-0.0.6/LICENSE +315 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/PKG-INFO +7 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/README.md +4 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/READMEs/README.en.md +4 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/pyproject.toml +7 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/release_smoke/contracts.py +4 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/release_smoke/runtime.py +12 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/__init__.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/artifacts_io.py +17 -12
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/presentation.py +22 -5
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_reader.py +96 -4
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_write_session.py +61 -5
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/source_roles.py +41 -2
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/extension_registry.py +5 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/extraction_cache.py +12 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/native_binding.py +234 -14
- openmodus-0.0.6/src/modus/machine/facts/native_cpp.py +123 -0
- openmodus-0.0.6/src/modus/machine/facts/native_kotlin.py +262 -0
- openmodus-0.0.6/src/modus/machine/facts/native_objc.py +213 -0
- openmodus-0.0.6/src/modus/machine/facts/native_parser.py +273 -0
- openmodus-0.0.6/src/modus/machine/facts/native_swift.py +228 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/native_syntax.py +3 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/native_visitor.py +33 -12
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/structural.py +4 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/language-registry.json +5 -5
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/languages.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/runtime/resources.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/states.py +2 -3
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/search_policy.py +4 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/base.py +2 -2
- openmodus-0.0.6/src/modus/platforms/claude.py +64 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/hooks.py +2 -2
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/pipeline.py +5 -5
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/index.md +1 -1
- openmodus-0.0.6/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/kotlin.md +17 -0
- openmodus-0.0.6/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/native.md +33 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/writer.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/skillmd.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/source_listing.py +4 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/workspace.py +2 -2
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/README.md +1 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_architecture.py +4 -4
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_capability_composer.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_context_builder.py +4 -2
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_extraction_cache_identity.py +4 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_language_fixtures.py +6 -2
- openmodus-0.0.6/tests/machine/test_mobile_adapters.py +240 -0
- openmodus-0.0.6/tests/machine/test_mobile_integration.py +166 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_public_contracts.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_cli_localization.py +3 -3
- openmodus-0.0.6/tests/test_filesystem_portability.py +275 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_install_safety.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_knowledge_retrieval.py +8 -3
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_knowledge_update.py +26 -24
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_platforms.py +81 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_workspace_lifecycle.py +1 -1
- {openmodus-0.0.4 → openmodus-0.0.6}/uv.lock +36 -1
- openmodus-0.0.4/LICENSE +0 -21
- openmodus-0.0.4/src/modus/machine/facts/native_parser.py +0 -110
- openmodus-0.0.4/src/modus/platforms/claude.py +0 -98
- openmodus-0.0.4/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/kotlin.md +0 -9
- openmodus-0.0.4/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/native.md +0 -9
- {openmodus-0.0.4 → openmodus-0.0.6}/.gitignore +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/CONTRIBUTING.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/docs/authoring-contract.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/docs/knowledge-lifecycle-boundary.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/schemas/machine/analysis-receipt.schema.json +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/schemas/machine/authoring-context-packet.schema.json +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/schemas/machine/capability-slice.schema.json +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/schemas/machine/evidence-page.schema.json +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/schemas/module-meta.schema.yaml +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/package_smoke.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/release_smoke/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/release_smoke/archive.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/release_smoke/cli.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/release_smoke/diagnostics.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/release_smoke/verification.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/scripts/wheel-smoke.sh +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/__main__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/activation_guidance.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/atomic_writes.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/analysis.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/analysis_display.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/common.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/context.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/discovery.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/initialize.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/knowledge.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/uninstall.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/cli_commands/update.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/command_reference.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/context_cmd.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/help.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/init_project.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/init_report.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/install_state.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/maintenance_scope.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/permission_errors.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/reporting.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/seed_business.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/self_update.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/status.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/uninstall.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/uninstall_report.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/uninstall_self.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/update.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/update_report.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/verify_anchors.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/commands/verify_knowledge.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/config.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/display_labels.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/git_hygiene.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/hooks/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/hooks/bootstrap.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/hooks/context.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/hooks/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/hooks/environment.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/hooks/protocol.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/hooks/runtime.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_identity.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_seeds.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_update.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/authoring_card.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/discovery.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/markdown_integrity.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/metadata.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/models.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/publication.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/knowledge_verification/structure.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/ARCHITECTURE.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/api.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/composer.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/composition_model.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/input_normalization.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/lifecycle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/seed_selection.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/capability/traversal.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/input_snapshot.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/lifecycle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/scan.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/source_coordinates.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/source_filters.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/source_inventory.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/corpus/source_snapshot.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/errors.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_context.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_resolvers/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_resolvers/base.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_resolvers/cpp_resolver.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_resolvers/go_resolver.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_resolvers/java_resolver.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_resolvers/python_resolver.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_resolvers/typescript_resolver.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/build_support.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/cache.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/cpp.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/go.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/java.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/merge.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/models.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/process.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/python.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/compiler/typescript.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/entry_contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/entry_observation.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/framework_facts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/frontend.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/frontend_context.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/frontend_frameworks.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/frontend_routes.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/frontend_server.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/frontend_state.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/generic.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/language_capabilities.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/lifecycle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/provider_assets/ModusJavaAnalyzer.java +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/provider_assets/modus_go_analyzer.go +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/provider_assets/modus_typescript_analyzer.cjs +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/rule_signals.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/search_metadata.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/semantic_contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/semantic_ir.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/semantic_providers.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/source_contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/source_evidence.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/facts/value_summary.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/implementation.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/packet/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/packet/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/packet/context_builder.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/packet/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/packet/cursor.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/packet/lifecycle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/packet/query.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/pipeline.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/progress.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/community_signal.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/lifecycle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/proposals.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/publication.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/scope_candidates.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/scope_profiles.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/projection/views.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/receipts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/evidence_graph.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/lifecycle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/method_graph.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/navigation.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/reference_outcomes.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/semantic_reconcile.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/topology.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/topology_model.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/topology_records.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/topology_resources.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/topology_rules.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/topology_validation.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/resolution/view_quarantine.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/runtime/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/runtime/toolchains.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/bundle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/bundle_catalogs.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/catalog.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/catalog_building.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/evidence_records.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/fingerprint.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/ids.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/machine/store/scope_catalog.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/manifest.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/context_resolver.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/evidence_search.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/fallback.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/knowledge_sync.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/models.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/module_meta.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/path_scope.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/preflight.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/orchestrator/query_terms.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/paths.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/codebuddy.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/codex.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/cursor.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/display.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/models.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/registry.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/rendering.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/platforms/sections.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/precedence.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/project_activation.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/py.typed +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/budget.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/delivery.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/index.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/query.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/routing.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/runtime.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/settings.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/discovery.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/documents.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/lexical.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/ranking.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/sections.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/selection.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/retrieval/stages/settings.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/catalog.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/project.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/README.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/commands/init.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/commands/reinit.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/commands/update-knowledge.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/knowledge/business/experience/index.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/knowledge/business/index.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/knowledge/business/meta/index.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/knowledge/business/scenario/index.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/knowledge/constraint/global-standard.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/knowledge/constraint/team-standard.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/knowledge/handbook/SKILL.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/SKILL.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-extraction.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/cpp.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/dotnet.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/go.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/java.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/kotlin.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/php.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/python.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/rust.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/constraint-profiles/web.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/global-standard.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-init/references/workspace-init.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-reinit/SKILL.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-sync-knowledge/SKILL.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/modus-update-knowledge/SKILL.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/SKILL.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/domain-worker-prompt.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/index.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/dotnet.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/generic.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/go.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/iac.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/java.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/php.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/python.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/rust.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/language-adapters/typescript.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/machine-packet.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/scenario-closure.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/evidence/scope-modeling.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/api.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/business.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/collaboration.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/domain.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/infrastructure.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/module.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/object.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/root.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/rule.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/state-machine.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/team-standard.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/deliverables/topics.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/index.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/layout.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/localization.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/surface-profiles.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/framework/visual-expression.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/index.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/parallel-domain-authoring.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/authoring/publication.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/constraint-usage.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/framework-update.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scaffold/templates/skills/using-modus/references/router-details.md +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/schema_resources.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scope_models.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/scope_resolver.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/sensitive_literals.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/surface.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/text_tree.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/versioning.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/src/modus/workspace_maps.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/_support/__init__.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/_support/analysis.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/_support/markdown.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/_support/paths.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/_support/sensitive_samples.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/fixtures/simple_service/order/order_repo.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/fixtures/simple_service/order/order_service.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/fixtures/simple_service/payment/payment_gateway.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/fixtures/simple_service/payment/payment_service.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_contracts.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_corpus.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_lifecycle_degradation.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_progress.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_projection.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_states.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/machine/test_store_validation.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_analysis_pipeline.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_cli_boundaries.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_documented_cli.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_evidence_selection.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_hooks.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_orchestrator.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_project_lifecycle.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_release_smoke.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_scaffold.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_sensitive_literals.py +0 -0
- {openmodus-0.0.4 → openmodus-0.0.6}/tests/test_verify_knowledge.py +0 -0
|
@@ -98,6 +98,8 @@ N1 源码基线 → N2 程序事实 → N3 关系解析 → N4 能力模型 →
|
|
|
98
98
|
|
|
99
99
|
写入使用准备修改时观察到的哈希。并发修改形成冲突,不被覆盖。迁移先建立新主定义、修复链接,再删除旧生成文件。知识更新批次按文件报告独立结果,不承诺全批回滚;安装事务则对计划目标创建快照,失败时尝试精确回滚,并明确报告恢复不完整。
|
|
100
100
|
|
|
101
|
+
安全文件读取与知识退役按平台选择后端:POSIX 使用目录描述符与相对操作;Windows 核验所有父目录的身份快照、常规文件身份与原始字节摘要,并拒绝软链和重解析点。Windows 删除前关闭读取句柄,再复核目标;路径快照能发现观察到的替换,但不提供抵御外部进程在两次检查间交换并恢复目录的绝对保证。知识写入和退役仍共享必需文档锁,分别使用 POSIX `flock` 或 Windows `msvcrt`。受管文件显式按 UTF-8 原样写入换行,确保清单摘要与磁盘字节一致。
|
|
102
|
+
|
|
101
103
|
<!--
|
|
102
104
|
日常读取使用当前项目内容,初始化数据不是长期检索索引。
|
|
103
105
|
-->
|
openmodus-0.0.6/LICENSE
ADDED
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tencent Music Entertainment Group
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
Other dependencies and licenses:
|
|
26
|
+
|
|
27
|
+
Open Source Software Licensed under the MIT License:
|
|
28
|
+
--------------------------------------------------------------------
|
|
29
|
+
1. annotated-doc
|
|
30
|
+
Copyright (c) 2025 Sebastián Ramírez
|
|
31
|
+
|
|
32
|
+
2. attrs
|
|
33
|
+
Copyright (c) 2015 Hynek Schlawack and the attrs contributors
|
|
34
|
+
|
|
35
|
+
3. jsonschema
|
|
36
|
+
Copyright (c) 2013 Julian Berman
|
|
37
|
+
Copyright (c) 2012 Julian Berman
|
|
38
|
+
|
|
39
|
+
4. jsonschema-specifications
|
|
40
|
+
Copyright (c) 2022 Julian Berman
|
|
41
|
+
|
|
42
|
+
5. markdown-it-py
|
|
43
|
+
Copyright (c) 2020 ExecutableBookProject
|
|
44
|
+
Copyright (c) 2014 Vitaly Puzrin, Alex Kocharin.
|
|
45
|
+
|
|
46
|
+
6. mdurl
|
|
47
|
+
Copyright (c) 2015 Vitaly Puzrin, Alex Kocharin.
|
|
48
|
+
Copyright (c) 2021 Taneli Hukkinen
|
|
49
|
+
Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
|
50
|
+
|
|
51
|
+
7. pyyaml
|
|
52
|
+
Copyright (c) 2017-2021 Ingy döt Net
|
|
53
|
+
Copyright (c) 2006-2016 Kirill Simonov
|
|
54
|
+
|
|
55
|
+
8. questionary
|
|
56
|
+
Copyright 2020 Tom Bocklisch and contributors
|
|
57
|
+
Copyright 2019 Tom Bocklisch
|
|
58
|
+
Copyright 2018 Oyetoke Toby and contributors
|
|
59
|
+
Copyright 2016 Fink Labs GmbH and inquirerpy contributors
|
|
60
|
+
|
|
61
|
+
9. referencing
|
|
62
|
+
Copyright (c) 2022 Julian Berman
|
|
63
|
+
|
|
64
|
+
10. rich
|
|
65
|
+
Copyright (c) 2020 Will McGugan
|
|
66
|
+
|
|
67
|
+
11. rpds-py
|
|
68
|
+
Copyright (c) 2023 Julian Berman
|
|
69
|
+
|
|
70
|
+
12. tree-sitter
|
|
71
|
+
Copyright (c) 2019 Max Brunsfeld, GitHub
|
|
72
|
+
Copyright © 1991-2019 Unicode, Inc. All rights reserved.
|
|
73
|
+
Copyright (c) 1995-2016 International Business Machines Corporation and others
|
|
74
|
+
Copyright 2006-2011, the V8 project authors. All rights reserved.
|
|
75
|
+
|
|
76
|
+
13. tree-sitter-c
|
|
77
|
+
Copyright (c) 2014 Max Brunsfeld
|
|
78
|
+
|
|
79
|
+
14. tree-sitter-c-sharp
|
|
80
|
+
Copyright (c) 2014-2023 Max Brunsfeld, Damien Guard, Amaan Qureshi, and contributors.
|
|
81
|
+
|
|
82
|
+
15. tree-sitter-cpp
|
|
83
|
+
Copyright (c) 2014 Max Brunsfeld
|
|
84
|
+
|
|
85
|
+
16. tree-sitter-go
|
|
86
|
+
Copyright (c) 2014 Max Brunsfeld
|
|
87
|
+
|
|
88
|
+
17. tree-sitter-java
|
|
89
|
+
Copyright (c) 2017 Ayman Nadeem
|
|
90
|
+
|
|
91
|
+
18. tree-sitter-javascript
|
|
92
|
+
Copyright (c) 2014 Max Brunsfeld
|
|
93
|
+
|
|
94
|
+
19. tree-sitter-kotlin
|
|
95
|
+
Copyright (c) 2024 Amaan Qureshi <amaanq12@gmail.com>
|
|
96
|
+
|
|
97
|
+
20. tree-sitter-php
|
|
98
|
+
Copyright (c) 2017 Josh Vera, GitHub
|
|
99
|
+
Copyright (c) 2019 Max Brunsfeld, Amaan Qureshi, Christian Frøystad, Caleb White
|
|
100
|
+
|
|
101
|
+
21. tree-sitter-python
|
|
102
|
+
Copyright (c) 2016 Max Brunsfeld
|
|
103
|
+
|
|
104
|
+
22. tree-sitter-rust
|
|
105
|
+
Copyright (c) 2017 Maxim Sokolov
|
|
106
|
+
|
|
107
|
+
23. tree-sitter-typescript
|
|
108
|
+
Copyright (c) 2017 Max Brunsfeld
|
|
109
|
+
|
|
110
|
+
24. typer
|
|
111
|
+
Copyright (c) 2019 Sebastián Ramírez
|
|
112
|
+
|
|
113
|
+
25. wcwidth
|
|
114
|
+
Copyright (c) 2014 Jeff Quast <contact@jeffquast.com>
|
|
115
|
+
|
|
116
|
+
A copy of the MIT License is included in this file.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
Open Source Software Licensed under the BSD 3-Clause License:
|
|
120
|
+
--------------------------------------------------------------------
|
|
121
|
+
1. click
|
|
122
|
+
Copyright 2014 Pallets
|
|
123
|
+
|
|
124
|
+
2. colorama
|
|
125
|
+
Copyright (c) 2010 Jonathan Hartley
|
|
126
|
+
|
|
127
|
+
3. networkx
|
|
128
|
+
Copyright (c) 2004-2025, NetworkX Developers — Aric Hagberg, Dan Schult, Pieter Swart — All rights reserved.
|
|
129
|
+
|
|
130
|
+
4. prompt-toolkit
|
|
131
|
+
Copyright (c) 2014, Jonathan Slenders
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
Terms of the BSD 3-Clause License:
|
|
135
|
+
--------------------------------------------------------------------
|
|
136
|
+
|
|
137
|
+
Redistribution and use in source and binary forms, with or without
|
|
138
|
+
modification, are permitted provided that the following conditions are met:
|
|
139
|
+
|
|
140
|
+
1. Redistributions of source code must retain the above copyright
|
|
141
|
+
notice, this list of conditions and the following disclaimer.
|
|
142
|
+
|
|
143
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
144
|
+
notice, this list of conditions and the following disclaimer in the
|
|
145
|
+
documentation and/or other materials provided with the distribution.
|
|
146
|
+
|
|
147
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
148
|
+
contributors may be used to endorse or promote products derived from
|
|
149
|
+
this software without specific prior written permission.
|
|
150
|
+
|
|
151
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
152
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
153
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
154
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
155
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
156
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
157
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
158
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
159
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
160
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
161
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
Open Source Software Licensed under the BSD 2-Clause License:
|
|
165
|
+
--------------------------------------------------------------------
|
|
166
|
+
1. pygments
|
|
167
|
+
Copyright (c) 2006-2022 by the respective authors (see AUTHORS file).
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
Terms of the BSD 2-Clause License:
|
|
171
|
+
--------------------------------------------------------------------
|
|
172
|
+
Redistribution and use in source and binary forms, with or without
|
|
173
|
+
modification, are permitted provided that the following conditions are met:
|
|
174
|
+
|
|
175
|
+
1. Redistributions of source code must retain the above copyright
|
|
176
|
+
notice, this list of conditions and the following disclaimer.
|
|
177
|
+
|
|
178
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
179
|
+
notice, this list of conditions and the following disclaimer in the
|
|
180
|
+
documentation and/or other materials provided with the distribution.
|
|
181
|
+
|
|
182
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
183
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
184
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
185
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
186
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
187
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
188
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
189
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
190
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
191
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
192
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
Open Source Software Licensed under the ISC License:
|
|
196
|
+
--------------------------------------------------------------------
|
|
197
|
+
1. shellingham
|
|
198
|
+
Copyright (c) 2018, Tzu-ping Chung <uranusjr@gmail.com>
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
Terms of the ISC License:
|
|
202
|
+
--------------------------------------------------------------------
|
|
203
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
204
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
205
|
+
copyright notice and this permission notice appear in all copies.
|
|
206
|
+
|
|
207
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
208
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
209
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
210
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
211
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
212
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
213
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
Open Source Software Licensed under the PSF License Agreement:
|
|
217
|
+
--------------------------------------------------------------------
|
|
218
|
+
1. typing-extensions
|
|
219
|
+
Copyright (c) 1991-1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved.
|
|
220
|
+
Copyright (c) 2001-2023 Python Software Foundation; All Rights Reserved
|
|
221
|
+
Copyright (c) 1995-2001 Corporation for National Research Initiatives; All Rights Reserved
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
Terms of the PSF License Agreement:
|
|
225
|
+
--------------------------------------------------------------------
|
|
226
|
+
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
|
|
227
|
+
--------------------------------------------
|
|
228
|
+
|
|
229
|
+
1. This LICENSE AGREEMENT is between the Python Software Foundation
|
|
230
|
+
("PSF"), and the Individual or Organization ("Licensee") accessing and
|
|
231
|
+
otherwise using this software ("Python") in source or binary form and
|
|
232
|
+
its associated documentation.
|
|
233
|
+
|
|
234
|
+
2. Subject to the terms and conditions of this License Agreement, PSF hereby
|
|
235
|
+
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
|
|
236
|
+
analyze, test, perform and/or display publicly, prepare derivative works,
|
|
237
|
+
distribute, and otherwise use Python alone or in any derivative version,
|
|
238
|
+
provided, however, that PSF's License Agreement and PSF's notice of copyright,
|
|
239
|
+
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
|
240
|
+
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
|
|
241
|
+
2022, 2023 Python Software Foundation; All Rights Reserved" are retained in
|
|
242
|
+
Python alone or in any derivative version prepared by Licensee.
|
|
243
|
+
|
|
244
|
+
3. In the event Licensee prepares a derivative work that is based on
|
|
245
|
+
or incorporates Python or any part thereof, and wants to make
|
|
246
|
+
the derivative work available to others as provided herein, then
|
|
247
|
+
Licensee hereby agrees to include in any such work a brief summary of
|
|
248
|
+
the changes made to Python.
|
|
249
|
+
|
|
250
|
+
4. PSF is making Python available to Licensee on an "AS IS"
|
|
251
|
+
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
|
252
|
+
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
|
|
253
|
+
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
254
|
+
FOR ANY PARTICULAR PURPOSE OR THAT PYTHON WILL NOT INFRINGE ANY
|
|
255
|
+
THIRD PARTY RIGHTS.
|
|
256
|
+
|
|
257
|
+
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
|
|
258
|
+
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
|
|
259
|
+
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
|
|
260
|
+
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
|
|
261
|
+
|
|
262
|
+
6. This License Agreement will automatically terminate upon a material
|
|
263
|
+
breach of its terms and conditions.
|
|
264
|
+
|
|
265
|
+
7. Nothing in this License Agreement shall be deemed to create any
|
|
266
|
+
relationship of agency, partnership, or joint venture between PSF and
|
|
267
|
+
Licensee. This License Agreement does not grant permission to use PSF
|
|
268
|
+
trademarks or trade name in a trademark sense to endorse or promote
|
|
269
|
+
products or services of Licensee, or any third party.
|
|
270
|
+
|
|
271
|
+
8. By copying, installing or otherwise using Python, Licensee
|
|
272
|
+
agrees to be bound by the terms and conditions of this License
|
|
273
|
+
Agreement.
|
|
274
|
+
|
|
275
|
+
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.5.2
|
|
276
|
+
Copyright (c) 1991-1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands.
|
|
277
|
+
All rights reserved.
|
|
278
|
+
|
|
279
|
+
Permission to use, copy, modify, and distribute this software and its
|
|
280
|
+
documentation for any purpose and without fee is hereby granted, provided that
|
|
281
|
+
the above copyright notice appear in all copies and that both that copyright
|
|
282
|
+
notice and this permission notice appear in supporting documentation, and that
|
|
283
|
+
the names of Stichting Mathematisch Centrum or CWI or Corporation for National
|
|
284
|
+
Research Initiatives or Python Software Foundation not be used in advertising or
|
|
285
|
+
publicity pertaining to distribution of the software without specific, written
|
|
286
|
+
prior permission.
|
|
287
|
+
|
|
288
|
+
STICHTING MATHEMATISCH CENTRUM AND CORPORATION FOR NATIONAL RESEARCH INITIATIVES
|
|
289
|
+
DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
|
|
290
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING
|
|
291
|
+
MATHEMATISCH CENTRUM OR CORPORATION FOR NATIONAL RESEARCH INITIATIVES BE LIABLE
|
|
292
|
+
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
|
293
|
+
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
294
|
+
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
|
|
295
|
+
OR PERFORMANCE OF THIS SOFTWARE.
|
|
296
|
+
|
|
297
|
+
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
|
|
298
|
+
Copyright (c) 1995-2001, Corporation for National Research Initiatives.
|
|
299
|
+
All rights reserved.
|
|
300
|
+
|
|
301
|
+
Permission to use, copy, modify, and distribute this software and its
|
|
302
|
+
documentation for any purpose and without fee is hereby granted, provided that
|
|
303
|
+
the above copyright notice appear in all copies and that both that copyright
|
|
304
|
+
notice and this permission notice appear in supporting documentation, and that
|
|
305
|
+
the name of Corporation for National Research Initiatives not be used in
|
|
306
|
+
advertising or publicity pertaining to distribution of the software without
|
|
307
|
+
specific, written prior permission.
|
|
308
|
+
|
|
309
|
+
CORPORATION FOR NATIONAL RESEARCH INITIATIVES DISCLAIMS ALL WARRANTIES WITH
|
|
310
|
+
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
311
|
+
FITNESS, IN NO EVENT SHALL CORPORATION FOR NATIONAL RESEARCH INITIATIVES BE
|
|
312
|
+
LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
313
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
|
314
|
+
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
|
315
|
+
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: openmodus
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.6
|
|
4
4
|
Summary: 为编程助手构建有证据支撑、可持续维护的项目知识。
|
|
5
5
|
Author: Modus contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -31,9 +31,11 @@ Requires-Dist: tree-sitter-go<0.26,>=0.23
|
|
|
31
31
|
Requires-Dist: tree-sitter-java<0.25,>=0.23
|
|
32
32
|
Requires-Dist: tree-sitter-javascript<0.26,>=0.23
|
|
33
33
|
Requires-Dist: tree-sitter-kotlin<2.0,>=1.0
|
|
34
|
+
Requires-Dist: tree-sitter-objc<4.0,>=3.0.2
|
|
34
35
|
Requires-Dist: tree-sitter-php<0.25,>=0.23
|
|
35
36
|
Requires-Dist: tree-sitter-python<0.26,>=0.23
|
|
36
37
|
Requires-Dist: tree-sitter-rust<0.25,>=0.23
|
|
38
|
+
Requires-Dist: tree-sitter-swift<0.8,>=0.7.3
|
|
37
39
|
Requires-Dist: tree-sitter-typescript<0.25,>=0.23
|
|
38
40
|
Requires-Dist: tree-sitter<0.26,>=0.23.0
|
|
39
41
|
Requires-Dist: typer<0.26,>=0.12.0
|
|
@@ -257,6 +259,10 @@ Python、Java、Go、C/C++ 和 TypeScript 可以在结构证据之上使用本
|
|
|
257
259
|
<img src="https://img.shields.io/badge/Astro%20%2F%20Svelte-template-FF5D01?logo=astro&logoColor=white" alt="Astro and Svelte templates" />
|
|
258
260
|
</p>
|
|
259
261
|
|
|
262
|
+
Objective-C、Objective-C++ 和 Swift 提供专门结构提取:保留 OC selector/category/protocol、Swift 扩展与参数标签,并按内容区分 `.h`。Objective-C++ 分别恢复 OC 与 C++ 结构,明确标为部分覆盖;Kotlin 补充包、导入、扩展函数与 Compose 尾随闭包,C++ 补充命名空间、头文件声明与模板调用。日常检索也覆盖 `.m`、`.mm`、`.hh`、`.hxx`。
|
|
263
|
+
|
|
264
|
+
这些结构证据不等于 Xcode/Swift/Kotlin 编译语义;不自动解析全部构建变体、宏展开或 IDL/JNI 跨语言桥接。原生和 Kotlin 取证适配会指导 Agent 核对生成来源、注册、Action/State 与端侧生命周期,缺失关系保留为候选或未解析。
|
|
265
|
+
|
|
260
266
|
其余已登记的源码、模板、配置、数据定义和文档格式仍会进入有界通用证据流程。Modus 会如实保留覆盖缺口,而不会因为某个 Provider 缺失就断言仓库没有业务行为。
|
|
261
267
|
|
|
262
268
|
### 为什么选择 Modus
|
|
@@ -208,6 +208,10 @@ Python、Java、Go、C/C++ 和 TypeScript 可以在结构证据之上使用本
|
|
|
208
208
|
<img src="https://img.shields.io/badge/Astro%20%2F%20Svelte-template-FF5D01?logo=astro&logoColor=white" alt="Astro and Svelte templates" />
|
|
209
209
|
</p>
|
|
210
210
|
|
|
211
|
+
Objective-C、Objective-C++ 和 Swift 提供专门结构提取:保留 OC selector/category/protocol、Swift 扩展与参数标签,并按内容区分 `.h`。Objective-C++ 分别恢复 OC 与 C++ 结构,明确标为部分覆盖;Kotlin 补充包、导入、扩展函数与 Compose 尾随闭包,C++ 补充命名空间、头文件声明与模板调用。日常检索也覆盖 `.m`、`.mm`、`.hh`、`.hxx`。
|
|
212
|
+
|
|
213
|
+
这些结构证据不等于 Xcode/Swift/Kotlin 编译语义;不自动解析全部构建变体、宏展开或 IDL/JNI 跨语言桥接。原生和 Kotlin 取证适配会指导 Agent 核对生成来源、注册、Action/State 与端侧生命周期,缺失关系保留为候选或未解析。
|
|
214
|
+
|
|
211
215
|
其余已登记的源码、模板、配置、数据定义和文档格式仍会进入有界通用证据流程。Modus 会如实保留覆盖缺口,而不会因为某个 Provider 缺失就断言仓库没有业务行为。
|
|
212
216
|
|
|
213
217
|
### 为什么选择 Modus
|
|
@@ -208,6 +208,10 @@ Python, Java, Go, C/C++, and TypeScript can add local compiler or type-checker o
|
|
|
208
208
|
<img src="https://img.shields.io/badge/Astro%20%2F%20Svelte-template-FF5D01?logo=astro&logoColor=white" alt="Astro and Svelte templates" />
|
|
209
209
|
</p>
|
|
210
210
|
|
|
211
|
+
Objective-C, Objective-C++, and Swift have dedicated structural extraction, including OC selectors/categories/protocols, Swift extensions and argument labels, and content-based `.h` dispatch. Objective-C++ combines separate OC and C++ observations with explicit partial coverage. Kotlin adds packages, imports, extension functions, and Compose trailing closures; C++ adds namespaces, header declarations, and template calls. Ordinary source retrieval also includes `.m`, `.mm`, `.hh`, and `.hxx`.
|
|
212
|
+
|
|
213
|
+
These observations are not Xcode, Swift, or Kotlin compiler semantics. They do not automatically resolve every build variant, macro expansion, or IDL/JNI bridge. Native and Kotlin evidence guides direct agents to verify generated origins, registrations, Action/State flows, and client lifecycles; missing relations remain candidate or unresolved evidence.
|
|
214
|
+
|
|
211
215
|
Other registered source, template, configuration, data-definition, and document formats still enter a bounded generic-evidence path. Modus preserves coverage gaps instead of interpreting a missing provider as proof that the repository has no business behavior.
|
|
212
216
|
|
|
213
217
|
### Why choose Modus
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "openmodus"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.6"
|
|
4
4
|
description = "为编程助手构建有证据支撑、可持续维护的项目知识。"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -51,6 +51,8 @@ dependencies = [
|
|
|
51
51
|
"tree-sitter-cpp>=0.23,<0.25",
|
|
52
52
|
"tree-sitter-c-sharp>=0.23,<0.25",
|
|
53
53
|
"tree-sitter-kotlin>=1.0,<2.0",
|
|
54
|
+
"tree-sitter-objc>=3.0.2,<4.0",
|
|
55
|
+
"tree-sitter-swift>=0.7.3,<0.8",
|
|
54
56
|
"tree-sitter-php>=0.23,<0.25",
|
|
55
57
|
]
|
|
56
58
|
|
|
@@ -226,6 +228,10 @@ module = [
|
|
|
226
228
|
"modus.machine.facts.native_binding",
|
|
227
229
|
"modus.machine.facts.native_parser",
|
|
228
230
|
"modus.machine.facts.native_visitor",
|
|
231
|
+
"modus.machine.facts.native_objc",
|
|
232
|
+
"modus.machine.facts.native_swift",
|
|
233
|
+
"modus.machine.facts.native_cpp",
|
|
234
|
+
"modus.machine.facts.native_kotlin",
|
|
229
235
|
]
|
|
230
236
|
disallow_any_generics = false
|
|
231
237
|
disallow_untyped_calls = false
|
|
@@ -183,6 +183,10 @@ PACKAGE_BOUNDARIES = (
|
|
|
183
183
|
"modus/machine/facts/build_resolvers/python_resolver.py",
|
|
184
184
|
"modus/machine/facts/build_resolvers/typescript_resolver.py",
|
|
185
185
|
"modus/machine/facts/extension_registry.py",
|
|
186
|
+
"modus/machine/facts/native_objc.py",
|
|
187
|
+
"modus/machine/facts/native_swift.py",
|
|
188
|
+
"modus/machine/facts/native_cpp.py",
|
|
189
|
+
"modus/machine/facts/native_kotlin.py",
|
|
186
190
|
"modus/machine/facts/frontend.py",
|
|
187
191
|
"modus/machine/facts/frontend_frameworks.py",
|
|
188
192
|
"modus/machine/facts/frontend_routes.py",
|
|
@@ -463,6 +463,18 @@ def exercise_installed_wheel(wheel: Path) -> RuntimeVerification:
|
|
|
463
463
|
_exercise_authoring_contract()
|
|
464
464
|
project_root = workspace / "project"
|
|
465
465
|
project_root.mkdir()
|
|
466
|
+
from modus.machine.corpus.source_snapshot import SourceSnapshot
|
|
467
|
+
from modus.machine.facts.structural import _get_extractor
|
|
468
|
+
|
|
469
|
+
for name, source in {
|
|
470
|
+
"View.m": "@implementation View\n- (void)run {}\n@end",
|
|
471
|
+
"View.mm": "@implementation View\n- (void)run {}\n@end",
|
|
472
|
+
"View.swift": "class View { func run() {} }",
|
|
473
|
+
"View.kt": "class View { fun run() {} }",
|
|
474
|
+
}.items():
|
|
475
|
+
path = project_root / name
|
|
476
|
+
facts = _get_extractor(path)(SourceSnapshot(path, source))
|
|
477
|
+
require(bool(facts.get("declarations")), f"安装后的语言解析不可用:{name}")
|
|
466
478
|
(project_root / "main.py").write_text(SAMPLE_SOURCE, encoding="utf-8")
|
|
467
479
|
project = SmokeProject(project_root, app, CliRunner())
|
|
468
480
|
|
|
@@ -33,6 +33,9 @@ import yaml
|
|
|
33
33
|
|
|
34
34
|
from .atomic_writes import (
|
|
35
35
|
AtomicWriteIntegrityError,
|
|
36
|
+
_assert_portable_atomic_parent,
|
|
37
|
+
_ensure_portable_atomic_parent,
|
|
38
|
+
_is_link_or_reparse,
|
|
36
39
|
atomic_create_text,
|
|
37
40
|
atomic_write_chunks,
|
|
38
41
|
atomic_write_text,
|
|
@@ -346,22 +349,21 @@ def file_lock(lock_path: str | Path) -> Iterator[None]:
|
|
|
346
349
|
handle.close(fcntl, preserve_inherited=True)
|
|
347
350
|
|
|
348
351
|
|
|
349
|
-
def _assert_portable_lock_binding(
|
|
352
|
+
def _assert_portable_lock_binding(
|
|
353
|
+
path: Path,
|
|
354
|
+
descriptor: int,
|
|
355
|
+
parent_snapshot: tuple[tuple[int, int], ...] | None = None,
|
|
356
|
+
) -> None:
|
|
350
357
|
"""Validate the regular-file binding used by the native Windows backend."""
|
|
351
|
-
current = Path(path.anchor)
|
|
352
358
|
try:
|
|
353
|
-
|
|
354
|
-
current = current / part
|
|
355
|
-
info = os.stat(current, follow_symlinks=False)
|
|
356
|
-
if stat.S_ISLNK(info.st_mode) or not stat.S_ISDIR(info.st_mode):
|
|
357
|
-
raise FileLockIntegrityError(f"写锁父路径不是实际目录: {current}")
|
|
359
|
+
_assert_portable_atomic_parent(path.parent, parent_snapshot)
|
|
358
360
|
opened = os.fstat(descriptor)
|
|
359
361
|
named = os.stat(path, follow_symlinks=False)
|
|
360
362
|
except FileLockIntegrityError:
|
|
361
363
|
raise
|
|
362
364
|
except (OSError, TypeError, NotImplementedError) as exc:
|
|
363
365
|
raise FileLockIntegrityError(f"写锁不安全或不可用: {path}: {exc}") from exc
|
|
364
|
-
if
|
|
366
|
+
if _is_link_or_reparse(named) or not stat.S_ISREG(named.st_mode):
|
|
365
367
|
raise FileLockIntegrityError(f"写锁必须为常规文件: {path}")
|
|
366
368
|
if not stat.S_ISREG(opened.st_mode) or (
|
|
367
369
|
opened.st_dev,
|
|
@@ -374,21 +376,24 @@ def _assert_portable_lock_binding(path: Path, descriptor: int) -> None:
|
|
|
374
376
|
def _windows_required_file_lock(lock_path: str | Path, msvcrt_module: Any) -> Iterator[None]:
|
|
375
377
|
"""Acquire a mandatory one-byte Windows file lock without shell tooling."""
|
|
376
378
|
path = _absolute_lock_path(lock_path)
|
|
377
|
-
|
|
379
|
+
try:
|
|
380
|
+
parents = _ensure_portable_atomic_parent(path.parent)
|
|
381
|
+
except OSError as exc:
|
|
382
|
+
raise FileLockIntegrityError(f"写锁父路径不安全或不可用: {path}: {exc}") from exc
|
|
378
383
|
flags = os.O_RDWR | os.O_CREAT | getattr(os, "O_BINARY", 0) | getattr(os, "O_NOINHERIT", 0)
|
|
379
384
|
descriptor = os.open(path, flags, 0o600)
|
|
380
385
|
locked = False
|
|
381
386
|
try:
|
|
382
|
-
_assert_portable_lock_binding(path, descriptor)
|
|
387
|
+
_assert_portable_lock_binding(path, descriptor, parents)
|
|
383
388
|
if os.fstat(descriptor).st_size == 0:
|
|
384
389
|
os.write(descriptor, b"\0")
|
|
385
390
|
os.fsync(descriptor)
|
|
386
391
|
os.lseek(descriptor, 0, os.SEEK_SET)
|
|
387
392
|
msvcrt_module.locking(descriptor, msvcrt_module.LK_LOCK, 1)
|
|
388
393
|
locked = True
|
|
389
|
-
_assert_portable_lock_binding(path, descriptor)
|
|
394
|
+
_assert_portable_lock_binding(path, descriptor, parents)
|
|
390
395
|
yield
|
|
391
|
-
_assert_portable_lock_binding(path, descriptor)
|
|
396
|
+
_assert_portable_lock_binding(path, descriptor, parents)
|
|
392
397
|
finally:
|
|
393
398
|
if locked:
|
|
394
399
|
os.lseek(descriptor, 0, os.SEEK_SET)
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
|
+
import ast
|
|
9
10
|
import re
|
|
10
11
|
from collections import defaultdict
|
|
11
12
|
from io import StringIO
|
|
@@ -161,17 +162,33 @@ def _parameter_hint(error: click.BadParameter) -> str:
|
|
|
161
162
|
# 捕获的路径和取值直接带回,避免翻译改变可操作的信息。
|
|
162
163
|
def _parser_detail(message: str) -> str:
|
|
163
164
|
"""仅适配框架固定句式;动态值原样保留,避免误改文件名和用户输入。"""
|
|
165
|
+
# Click 对路径使用 repr;Windows 的反斜线和文件名中的引号需按字符串字面量还原。
|
|
166
|
+
descriptions = {
|
|
167
|
+
"does not exist": "路径不存在",
|
|
168
|
+
"is not a directory": "路径不是目录",
|
|
169
|
+
"is a file": "路径不是目录",
|
|
170
|
+
"is not a file": "路径不是文件",
|
|
171
|
+
"is a directory": "路径不是文件",
|
|
172
|
+
"is not readable": "路径不可读",
|
|
173
|
+
"is not writable": "路径不可写",
|
|
174
|
+
"is not executable": "路径不可执行",
|
|
175
|
+
}
|
|
176
|
+
for suffix, description in descriptions.items():
|
|
177
|
+
match = re.fullmatch(rf"(?:Directory|File|Path) (.+) {re.escape(suffix)}\.", message)
|
|
178
|
+
if match is None:
|
|
179
|
+
continue
|
|
180
|
+
try:
|
|
181
|
+
path = ast.literal_eval(match[1])
|
|
182
|
+
except (SyntaxError, ValueError):
|
|
183
|
+
return message
|
|
184
|
+
if isinstance(path, str):
|
|
185
|
+
return f"{description}:{path}"
|
|
164
186
|
patterns = (
|
|
165
187
|
(r"No such command '(.*)'\.", r"未知命令:\1。"),
|
|
166
188
|
(r"Option '(.*)' requires an argument\.", r"选项 \1 缺少参数值。"),
|
|
167
189
|
(r"Got unexpected extra argument(?:s)? \((.*)\)", r"存在多余参数:\1"),
|
|
168
190
|
(r"'(.*)' is not a valid integer\.", r"\1 不是有效整数。"),
|
|
169
191
|
(r"'(.*)' is not a valid float\.", r"\1 不是有效数值。"),
|
|
170
|
-
(r"(?:Directory|File|Path) '(.*)' does not exist\.", r"路径不存在:\1"),
|
|
171
|
-
(r"(?:Directory|File|Path) '(.*)' is not a directory\.", r"路径不是目录:\1"),
|
|
172
|
-
(r"(?:Directory|File|Path) '(.*)' is not a file\.", r"路径不是文件:\1"),
|
|
173
|
-
(r"(?:Directory|File|Path) '(.*)' is not readable\.", r"路径不可读:\1"),
|
|
174
|
-
(r"(?:Directory|File|Path) '(.*)' is not writable\.", r"路径不可写:\1"),
|
|
175
192
|
(r"'(.*)' is not one of (.*)\.", r"\1 不在可选值中:\2。"),
|
|
176
193
|
(r"(.*) is not in the range (.*)\.", r"\1 不在允许范围内:\2。"),
|
|
177
194
|
)
|