@ahmed-g-gad/apothem 0.1.1
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.
- package/CHANGELOG.md +60 -0
- package/LICENSE +21 -0
- package/LICENSES/MIT.txt +18 -0
- package/LICENSES/PSF-2.0.txt +47 -0
- package/README.md +549 -0
- package/bin/README.md +37 -0
- package/bin/apothem.mjs +78 -0
- package/package.json +75 -0
- package/pyproject.toml +347 -0
- package/src/apothem/README.md +52 -0
- package/src/apothem/__init__.py +66 -0
- package/src/apothem/__main__.py +28 -0
- package/src/apothem/_vendor/.keep +0 -0
- package/src/apothem/_vendor/__init__.py +25 -0
- package/src/apothem/_vendor/attr/__init__.py +104 -0
- package/src/apothem/_vendor/attr/__init__.pyi +389 -0
- package/src/apothem/_vendor/attr/_cmp.py +160 -0
- package/src/apothem/_vendor/attr/_cmp.pyi +13 -0
- package/src/apothem/_vendor/attr/_compat.py +99 -0
- package/src/apothem/_vendor/attr/_config.py +31 -0
- package/src/apothem/_vendor/attr/_funcs.py +497 -0
- package/src/apothem/_vendor/attr/_make.py +3406 -0
- package/src/apothem/_vendor/attr/_next_gen.py +674 -0
- package/src/apothem/_vendor/attr/_typing_compat.pyi +15 -0
- package/src/apothem/_vendor/attr/_version_info.py +89 -0
- package/src/apothem/_vendor/attr/_version_info.pyi +9 -0
- package/src/apothem/_vendor/attr/converters.py +162 -0
- package/src/apothem/_vendor/attr/converters.pyi +19 -0
- package/src/apothem/_vendor/attr/exceptions.py +95 -0
- package/src/apothem/_vendor/attr/exceptions.pyi +17 -0
- package/src/apothem/_vendor/attr/filters.py +72 -0
- package/src/apothem/_vendor/attr/filters.pyi +6 -0
- package/src/apothem/_vendor/attr/py.typed +0 -0
- package/src/apothem/_vendor/attr/setters.py +79 -0
- package/src/apothem/_vendor/attr/setters.pyi +20 -0
- package/src/apothem/_vendor/attr/validators.py +750 -0
- package/src/apothem/_vendor/attr/validators.pyi +140 -0
- package/src/apothem/_vendor/attr.LICENSE +21 -0
- package/src/apothem/_vendor/attrs/__init__.py +72 -0
- package/src/apothem/_vendor/attrs/__init__.pyi +314 -0
- package/src/apothem/_vendor/attrs/converters.py +3 -0
- package/src/apothem/_vendor/attrs/exceptions.py +3 -0
- package/src/apothem/_vendor/attrs/filters.py +3 -0
- package/src/apothem/_vendor/attrs/py.typed +0 -0
- package/src/apothem/_vendor/attrs/setters.py +3 -0
- package/src/apothem/_vendor/attrs/validators.py +3 -0
- package/src/apothem/_vendor/attrs.LICENSE +21 -0
- package/src/apothem/_vendor/jsonschema/__init__.py +120 -0
- package/src/apothem/_vendor/jsonschema/__main__.py +6 -0
- package/src/apothem/_vendor/jsonschema/_format.py +546 -0
- package/src/apothem/_vendor/jsonschema/_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_legacy_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_types.py +204 -0
- package/src/apothem/_vendor/jsonschema/_typing.py +29 -0
- package/src/apothem/_vendor/jsonschema/_utils.py +355 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/__init__.py +5 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/const_vs_enum.py +30 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/contains.py +28 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/import_benchmark.py +31 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232/issue.json +2653 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232.py +25 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/json_schema_test_suite.py +12 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/nested_schemas.py +56 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/subcomponents.py +42 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/unused_registry.py +35 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_applicator_schemas.py +106 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_keywords.py +32 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/validator_creation.py +14 -0
- package/src/apothem/_vendor/jsonschema/cli.py +292 -0
- package/src/apothem/_vendor/jsonschema/exceptions.py +490 -0
- package/src/apothem/_vendor/jsonschema/protocols.py +230 -0
- package/src/apothem/_vendor/jsonschema/validators.py +1410 -0
- package/src/apothem/_vendor/jsonschema.LICENSE +19 -0
- package/src/apothem/_vendor/jsonschema_specifications/__init__.py +12 -0
- package/src/apothem/_vendor/jsonschema_specifications/_core.py +38 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/metaschema.json +42 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +56 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/core +57 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/format +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/metaschema.json +58 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +48 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/core +51 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +15 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft3/metaschema.json +172 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft4/metaschema.json +149 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft6/metaschema.json +153 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft7/metaschema.json +166 -0
- package/src/apothem/_vendor/jsonschema_specifications.LICENSE +19 -0
- package/src/apothem/_vendor/referencing/__init__.py +7 -0
- package/src/apothem/_vendor/referencing/_attrs.py +31 -0
- package/src/apothem/_vendor/referencing/_attrs.pyi +21 -0
- package/src/apothem/_vendor/referencing/_core.py +739 -0
- package/src/apothem/_vendor/referencing/exceptions.py +165 -0
- package/src/apothem/_vendor/referencing/jsonschema.py +642 -0
- package/src/apothem/_vendor/referencing/py.typed +0 -0
- package/src/apothem/_vendor/referencing/retrieval.py +94 -0
- package/src/apothem/_vendor/referencing/typing.py +61 -0
- package/src/apothem/_vendor/referencing.LICENSE +19 -0
- package/src/apothem/_vendor/rpds/__init__.py +251 -0
- package/src/apothem/_vendor/typing_extensions.LICENSE +279 -0
- package/src/apothem/_vendor/typing_extensions.py +4317 -0
- package/src/apothem/_vendor/vendor.txt +22 -0
- package/src/apothem/_vendor/yaml/__init__.py +389 -0
- package/src/apothem/_vendor/yaml/composer.py +138 -0
- package/src/apothem/_vendor/yaml/constructor.py +748 -0
- package/src/apothem/_vendor/yaml/cyaml.py +100 -0
- package/src/apothem/_vendor/yaml/dumper.py +61 -0
- package/src/apothem/_vendor/yaml/emitter.py +1137 -0
- package/src/apothem/_vendor/yaml/error.py +74 -0
- package/src/apothem/_vendor/yaml/events.py +85 -0
- package/src/apothem/_vendor/yaml/loader.py +63 -0
- package/src/apothem/_vendor/yaml/nodes.py +48 -0
- package/src/apothem/_vendor/yaml/parser.py +588 -0
- package/src/apothem/_vendor/yaml/reader.py +185 -0
- package/src/apothem/_vendor/yaml/representer.py +388 -0
- package/src/apothem/_vendor/yaml/resolver.py +226 -0
- package/src/apothem/_vendor/yaml/scanner.py +1435 -0
- package/src/apothem/_vendor/yaml/serializer.py +110 -0
- package/src/apothem/_vendor/yaml/tokens.py +103 -0
- package/src/apothem/_vendor/yaml.LICENSE +20 -0
- package/src/apothem/agents/README.md +60 -0
- package/src/apothem/agents/codebase-explorer.md +91 -0
- package/src/apothem/agents/convention-auditor.md +93 -0
- package/src/apothem/agents/dependency-auditor.md +97 -0
- package/src/apothem/agents/fact-checker.md +84 -0
- package/src/apothem/agents/mcp-builder.md +86 -0
- package/src/apothem/agents/memory-auditor.md +93 -0
- package/src/apothem/agents/prompt-evaluator.md +87 -0
- package/src/apothem/agents/quality-gate.md +103 -0
- package/src/apothem/agents/refactor-surgeon.md +74 -0
- package/src/apothem/agents/research-scout.md +73 -0
- package/src/apothem/agents/security-scanner.md +83 -0
- package/src/apothem/agents/test-runner.md +84 -0
- package/src/apothem/audit/README.md +73 -0
- package/src/apothem/audit/_scan_lib.py +182 -0
- package/src/apothem/audit/analyze_graph.py +260 -0
- package/src/apothem/audit/build_capability_graph.py +607 -0
- package/src/apothem/audit/build_inventory.py +657 -0
- package/src/apothem/audit/build_plans_provenance.py +997 -0
- package/src/apothem/audit/check_links.py +389 -0
- package/src/apothem/audit/classify_artifacts.py +381 -0
- package/src/apothem/audit/deprecated-tokens.txt +10 -0
- package/src/apothem/audit/execute_plans_migration.py +491 -0
- package/src/apothem/audit/known-projects.txt +15 -0
- package/src/apothem/audit/render_capability_index.py +467 -0
- package/src/apothem/audit/render_inventory.py +405 -0
- package/src/apothem/audit/scan_ai_surfaces.py +1125 -0
- package/src/apothem/audit/scan_ai_surfaces_coarse.py +261 -0
- package/src/apothem/audit/scan_drift_features.py +143 -0
- package/src/apothem/audit/scan_frontmatter.py +293 -0
- package/src/apothem/audit/scan_header_coverage.py +1134 -0
- package/src/apothem/audit/scan_plan_leakage.py +540 -0
- package/src/apothem/audit/scan_plans_discipline.py +188 -0
- package/src/apothem/audit/scan_secrets_pii.py +245 -0
- package/src/apothem/audit/scan_stale_tokens.py +296 -0
- package/src/apothem/audit/synthesize_drift.py +205 -0
- package/src/apothem/benchmarks/README.md +33 -0
- package/src/apothem/benchmarks/__init__.py +3 -0
- package/src/apothem/benchmarks/bench_agents.py +63 -0
- package/src/apothem/benchmarks/bench_hooks.py +93 -0
- package/src/apothem/benchmarks/bench_install.py +58 -0
- package/src/apothem/benchmarks/bench_tests.py +93 -0
- package/src/apothem/benchmarks/bench_validate_ecosystem.py +84 -0
- package/src/apothem/cli/README.md +33 -0
- package/src/apothem/cli/__init__.py +229 -0
- package/src/apothem/cli/_cmd_completion.py +88 -0
- package/src/apothem/cli/_cmd_diff.py +181 -0
- package/src/apothem/cli/_cmd_doctor.py +143 -0
- package/src/apothem/cli/_cmd_harnesses.py +167 -0
- package/src/apothem/cli/_cmd_install.py +327 -0
- package/src/apothem/cli/_cmd_migrate_workspace.py +143 -0
- package/src/apothem/cli/_cmd_profile.py +341 -0
- package/src/apothem/cli/_cmd_status.py +180 -0
- package/src/apothem/cli/_cmd_uninstall.py +215 -0
- package/src/apothem/cli/_cmd_update.py +397 -0
- package/src/apothem/cli/_cmd_verify.py +194 -0
- package/src/apothem/cli/_common_flags.py +90 -0
- package/src/apothem/cli/_epilogs.py +296 -0
- package/src/apothem/cli/_helpers.py +857 -0
- package/src/apothem/cli/_json_formatter.py +21 -0
- package/src/apothem/cli/_materialize.py +376 -0
- package/src/apothem/cli/completions/apothem.bash +30 -0
- package/src/apothem/cli/completions/apothem.fish +19 -0
- package/src/apothem/cli/completions/apothem.ps1 +27 -0
- package/src/apothem/cli/completions/apothem.zsh +42 -0
- package/src/apothem/cli/reference_export.py +126 -0
- package/src/apothem/commands/README.md +125 -0
- package/src/apothem/commands/a11y-audit.md +203 -0
- package/src/apothem/commands/architecture-review.md +194 -0
- package/src/apothem/commands/audit.md +165 -0
- package/src/apothem/commands/code-audit.md +218 -0
- package/src/apothem/commands/code-review.md +193 -0
- package/src/apothem/commands/dependency-audit.md +209 -0
- package/src/apothem/commands/docs-review.md +199 -0
- package/src/apothem/commands/elevate.md +285 -0
- package/src/apothem/commands/eval.md +149 -0
- package/src/apothem/commands/fortress.md +172 -0
- package/src/apothem/commands/freshify.md +168 -0
- package/src/apothem/commands/github-deploy-fresh.md +178 -0
- package/src/apothem/commands/github-deploy-next.md +167 -0
- package/src/apothem/commands/perf-audit.md +198 -0
- package/src/apothem/commands/plan-amend.md +104 -0
- package/src/apothem/commands/plan-audit.md +127 -0
- package/src/apothem/commands/plan-design.md +257 -0
- package/src/apothem/commands/plan-execute.md +495 -0
- package/src/apothem/commands/plan-generate.md +351 -0
- package/src/apothem/commands/plan-review.md +555 -0
- package/src/apothem/commands/plan-spec.md +359 -0
- package/src/apothem/commands/plan-status.md +222 -0
- package/src/apothem/commands/plan.md +173 -0
- package/src/apothem/commands/projectify.md +142 -0
- package/src/apothem/commands/release-readiness.md +142 -0
- package/src/apothem/commands/research-analysis.md +241 -0
- package/src/apothem/commands/research-design.md +231 -0
- package/src/apothem/commands/research-disseminate.md +225 -0
- package/src/apothem/commands/research-experiment.md +232 -0
- package/src/apothem/commands/research-ideate.md +213 -0
- package/src/apothem/commands/research-paper.md +252 -0
- package/src/apothem/commands/research-proposal.md +220 -0
- package/src/apothem/commands/research-publish.md +255 -0
- package/src/apothem/commands/research-review.md +251 -0
- package/src/apothem/commands/research-sources.md +266 -0
- package/src/apothem/commands/research-spec.md +255 -0
- package/src/apothem/commands/research-synthesis.md +233 -0
- package/src/apothem/commands/research-theory.md +218 -0
- package/src/apothem/commands/research.md +181 -0
- package/src/apothem/commands/security-audit.md +196 -0
- package/src/apothem/commands/supply-chain-audit.md +192 -0
- package/src/apothem/commands/test-suite.md +146 -0
- package/src/apothem/commands/threat-model-audit.md +199 -0
- package/src/apothem/commands/ux-review.md +202 -0
- package/src/apothem/commands/workflow.md +162 -0
- package/src/apothem/conformity/README.md +173 -0
- package/src/apothem/conformity/__init__.py +1 -0
- package/src/apothem/conformity/_grep_base.py +93 -0
- package/src/apothem/conformity/agent_capability_grep.py +306 -0
- package/src/apothem/conformity/agents_md_coverage_grep.py +382 -0
- package/src/apothem/conformity/agnosticism_grep.py +311 -0
- package/src/apothem/conformity/always_on_budget_grep.py +318 -0
- package/src/apothem/conformity/bare_except_grep.py +115 -0
- package/src/apothem/conformity/binding_reciprocity_grep.py +151 -0
- package/src/apothem/conformity/brand_mark_grep.py +272 -0
- package/src/apothem/conformity/commented_out_code_grep.py +176 -0
- package/src/apothem/conformity/completion_claim_grep.py +169 -0
- package/src/apothem/conformity/conventional_commit_grep.py +319 -0
- package/src/apothem/conformity/copilot_instructions_presence_grep.py +324 -0
- package/src/apothem/conformity/cross_platform_matrix_grep.py +297 -0
- package/src/apothem/conformity/determinism_grep.py +306 -0
- package/src/apothem/conformity/diagram_staleness_grep.py +154 -0
- package/src/apothem/conformity/dynamism_grep.py +284 -0
- package/src/apothem/conformity/editorconfig_presence_grep.py +281 -0
- package/src/apothem/conformity/file_header_grep.py +502 -0
- package/src/apothem/conformity/freshness_token_grep.py +233 -0
- package/src/apothem/conformity/frontmatter_grep.py +274 -0
- package/src/apothem/conformity/frontmatter_value_grep.py +386 -0
- package/src/apothem/conformity/gate.py +1386 -0
- package/src/apothem/conformity/gitattributes_presence_grep.py +238 -0
- package/src/apothem/conformity/harden_runner_grep.py +320 -0
- package/src/apothem/conformity/hedging_grep.py +129 -0
- package/src/apothem/conformity/license_author_consistency_grep.py +204 -0
- package/src/apothem/conformity/link_check.py +327 -0
- package/src/apothem/conformity/magic_number_grep.py +182 -0
- package/src/apothem/conformity/multi_surface_coherence_grep.py +620 -0
- package/src/apothem/conformity/naming_grep.py +224 -0
- package/src/apothem/conformity/no_global_plans_grep.py +339 -0
- package/src/apothem/conformity/no_toplevel_docs_grep.py +120 -0
- package/src/apothem/conformity/oidc_trusted_publishing_grep.py +291 -0
- package/src/apothem/conformity/option_annotation_grep.py +352 -0
- package/src/apothem/conformity/orphan_output_grep.py +206 -0
- package/src/apothem/conformity/permissions_minimum_scope_grep.py +299 -0
- package/src/apothem/conformity/plain_language_grep.py +559 -0
- package/src/apothem/conformity/plan_next_step_consistency_grep.py +450 -0
- package/src/apothem/conformity/plan_suite_structure_grep.py +534 -0
- package/src/apothem/conformity/plans_discipline_language_grep.py +245 -0
- package/src/apothem/conformity/production_ready_pr_grep.py +200 -0
- package/src/apothem/conformity/recommend_next_step_grep.py +250 -0
- package/src/apothem/conformity/redundancy_grep.py +401 -0
- package/src/apothem/conformity/reference_token_grep.py +230 -0
- package/src/apothem/conformity/registry_capability_consistency_grep.py +368 -0
- package/src/apothem/conformity/secret_leak_grep.py +193 -0
- package/src/apothem/conformity/semver_stability_grep.py +358 -0
- package/src/apothem/conformity/smoke_install_grep.py +194 -0
- package/src/apothem/conformity/static_version_grep.py +284 -0
- package/src/apothem/conformity/token_efficiency_grep.py +185 -0
- package/src/apothem/conformity/unpinned_action_grep.py +115 -0
- package/src/apothem/conformity/user_confirm_grep.py +74 -0
- package/src/apothem/conformity/workflow_concurrency_grep.py +283 -0
- package/src/apothem/harnesses/README.md +63 -0
- package/src/apothem/harnesses/__init__.py +16 -0
- package/src/apothem/harnesses/_shared/README.md +36 -0
- package/src/apothem/harnesses/_shared/__init__.py +12 -0
- package/src/apothem/harnesses/_shared/install_driver.py +281 -0
- package/src/apothem/harnesses/_shared/install_driver_apply.py +612 -0
- package/src/apothem/harnesses/_shared/install_driver_backup.py +535 -0
- package/src/apothem/harnesses/_shared/install_driver_converters.py +310 -0
- package/src/apothem/harnesses/_shared/install_driver_lifecycle.py +495 -0
- package/src/apothem/harnesses/_shared/install_driver_materialize.py +675 -0
- package/src/apothem/harnesses/_shared/install_driver_merge.py +656 -0
- package/src/apothem/harnesses/_shared/install_driver_pathsafety.py +137 -0
- package/src/apothem/harnesses/_shared/install_driver_planvalidation.py +240 -0
- package/src/apothem/harnesses/_shared/install_driver_removal.py +366 -0
- package/src/apothem/harnesses/_shared/install_driver_treeops.py +248 -0
- package/src/apothem/harnesses/_shared/install_driver_types.py +330 -0
- package/src/apothem/harnesses/_shared/wrapper_factories.py +448 -0
- package/src/apothem/harnesses/antigravity/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/antigravity/__init__.py +70 -0
- package/src/apothem/harnesses/antigravity/capabilities.yml +40 -0
- package/src/apothem/harnesses/antigravity/install.py +63 -0
- package/src/apothem/harnesses/antigravity/templates/GEMINI.md +40 -0
- package/src/apothem/harnesses/antigravity/templates/plugin.json +5 -0
- package/src/apothem/harnesses/antigravity/uninstall.py +22 -0
- package/src/apothem/harnesses/antigravity/update.py +10 -0
- package/src/apothem/harnesses/antigravity/verify.py +11 -0
- package/src/apothem/harnesses/claude_code/STANDARD-CONVENTION-PIN.md +65 -0
- package/src/apothem/harnesses/claude_code/__init__.py +107 -0
- package/src/apothem/harnesses/claude_code/capabilities.yml +42 -0
- package/src/apothem/harnesses/claude_code/install.py +147 -0
- package/src/apothem/harnesses/claude_code/templates/settings.json +351 -0
- package/src/apothem/harnesses/claude_code/uninstall.py +23 -0
- package/src/apothem/harnesses/claude_code/update.py +10 -0
- package/src/apothem/harnesses/claude_code/verify.py +11 -0
- package/src/apothem/harnesses/codebuddy/STANDARD-CONVENTION-PIN.md +74 -0
- package/src/apothem/harnesses/codebuddy/__init__.py +49 -0
- package/src/apothem/harnesses/codebuddy/capabilities.yml +34 -0
- package/src/apothem/harnesses/codebuddy/install.py +40 -0
- package/src/apothem/harnesses/codebuddy/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/codebuddy/uninstall.py +25 -0
- package/src/apothem/harnesses/codebuddy/update.py +10 -0
- package/src/apothem/harnesses/codebuddy/verify.py +11 -0
- package/src/apothem/harnesses/codex/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/codex/__init__.py +72 -0
- package/src/apothem/harnesses/codex/capabilities.yml +40 -0
- package/src/apothem/harnesses/codex/install.py +69 -0
- package/src/apothem/harnesses/codex/templates/AGENTS.md +40 -0
- package/src/apothem/harnesses/codex/templates/hooks.json +127 -0
- package/src/apothem/harnesses/codex/uninstall.py +23 -0
- package/src/apothem/harnesses/codex/update.py +10 -0
- package/src/apothem/harnesses/codex/verify.py +11 -0
- package/src/apothem/harnesses/cursor/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/cursor/__init__.py +48 -0
- package/src/apothem/harnesses/cursor/capabilities.yml +42 -0
- package/src/apothem/harnesses/cursor/install.py +38 -0
- package/src/apothem/harnesses/cursor/templates/apothem-rules.mdc +40 -0
- package/src/apothem/harnesses/cursor/uninstall.py +25 -0
- package/src/apothem/harnesses/cursor/update.py +10 -0
- package/src/apothem/harnesses/cursor/verify.py +11 -0
- package/src/apothem/harnesses/gemini_cli/STANDARD-CONVENTION-PIN.md +102 -0
- package/src/apothem/harnesses/gemini_cli/__init__.py +52 -0
- package/src/apothem/harnesses/gemini_cli/capabilities.yml +43 -0
- package/src/apothem/harnesses/gemini_cli/install.py +43 -0
- package/src/apothem/harnesses/gemini_cli/templates/GEMINI.md +38 -0
- package/src/apothem/harnesses/gemini_cli/uninstall.py +25 -0
- package/src/apothem/harnesses/gemini_cli/update.py +10 -0
- package/src/apothem/harnesses/gemini_cli/verify.py +11 -0
- package/src/apothem/harnesses/github_copilot/STANDARD-CONVENTION-PIN.md +84 -0
- package/src/apothem/harnesses/github_copilot/__init__.py +47 -0
- package/src/apothem/harnesses/github_copilot/capabilities.yml +42 -0
- package/src/apothem/harnesses/github_copilot/install.py +40 -0
- package/src/apothem/harnesses/github_copilot/templates/copilot-instructions.md +33 -0
- package/src/apothem/harnesses/github_copilot/uninstall.py +25 -0
- package/src/apothem/harnesses/github_copilot/update.py +10 -0
- package/src/apothem/harnesses/github_copilot/verify.py +11 -0
- package/src/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/glm/__init__.py +56 -0
- package/src/apothem/harnesses/glm/capabilities.yml +33 -0
- package/src/apothem/harnesses/glm/install.py +45 -0
- package/src/apothem/harnesses/glm/templates/glm.toml +58 -0
- package/src/apothem/harnesses/glm/uninstall.py +25 -0
- package/src/apothem/harnesses/glm/update.py +10 -0
- package/src/apothem/harnesses/glm/verify.py +11 -0
- package/src/apothem/harnesses/hermes/STANDARD-CONVENTION-PIN.md +57 -0
- package/src/apothem/harnesses/hermes/__init__.py +33 -0
- package/src/apothem/harnesses/hermes/capabilities.yml +36 -0
- package/src/apothem/harnesses/hermes/install.py +17 -0
- package/src/apothem/harnesses/hermes/materializer.py +35 -0
- package/src/apothem/harnesses/hermes/uninstall.py +33 -0
- package/src/apothem/harnesses/hermes/update.py +10 -0
- package/src/apothem/harnesses/hermes/verify.py +11 -0
- package/src/apothem/harnesses/kimi_code/STANDARD-CONVENTION-PIN.md +128 -0
- package/src/apothem/harnesses/kimi_code/__init__.py +59 -0
- package/src/apothem/harnesses/kimi_code/capabilities.yml +40 -0
- package/src/apothem/harnesses/kimi_code/install.py +42 -0
- package/src/apothem/harnesses/kimi_code/templates/AGENTS.md +43 -0
- package/src/apothem/harnesses/kimi_code/uninstall.py +27 -0
- package/src/apothem/harnesses/kimi_code/update.py +10 -0
- package/src/apothem/harnesses/kimi_code/verify.py +11 -0
- package/src/apothem/harnesses/kiro/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/kiro/__init__.py +49 -0
- package/src/apothem/harnesses/kiro/capabilities.yml +36 -0
- package/src/apothem/harnesses/kiro/install.py +39 -0
- package/src/apothem/harnesses/kiro/templates/apothem-rules.md +36 -0
- package/src/apothem/harnesses/kiro/uninstall.py +25 -0
- package/src/apothem/harnesses/kiro/update.py +10 -0
- package/src/apothem/harnesses/kiro/verify.py +11 -0
- package/src/apothem/harnesses/open_claw/STANDARD-CONVENTION-PIN.md +62 -0
- package/src/apothem/harnesses/open_claw/__init__.py +35 -0
- package/src/apothem/harnesses/open_claw/capabilities.yml +35 -0
- package/src/apothem/harnesses/open_claw/install.py +17 -0
- package/src/apothem/harnesses/open_claw/materializer.py +36 -0
- package/src/apothem/harnesses/open_claw/uninstall.py +32 -0
- package/src/apothem/harnesses/open_claw/update.py +10 -0
- package/src/apothem/harnesses/open_claw/verify.py +11 -0
- package/src/apothem/harnesses/opencode/STANDARD-CONVENTION-PIN.md +76 -0
- package/src/apothem/harnesses/opencode/__init__.py +35 -0
- package/src/apothem/harnesses/opencode/capabilities.yml +43 -0
- package/src/apothem/harnesses/opencode/install.py +17 -0
- package/src/apothem/harnesses/opencode/materializer.py +31 -0
- package/src/apothem/harnesses/opencode/uninstall.py +34 -0
- package/src/apothem/harnesses/opencode/update.py +10 -0
- package/src/apothem/harnesses/opencode/verify.py +11 -0
- package/src/apothem/harnesses/qwen_code/STANDARD-CONVENTION-PIN.md +87 -0
- package/src/apothem/harnesses/qwen_code/__init__.py +37 -0
- package/src/apothem/harnesses/qwen_code/capabilities.yml +43 -0
- package/src/apothem/harnesses/qwen_code/install.py +19 -0
- package/src/apothem/harnesses/qwen_code/materializer.py +174 -0
- package/src/apothem/harnesses/qwen_code/templates/QWEN.md +30 -0
- package/src/apothem/harnesses/qwen_code/uninstall.py +34 -0
- package/src/apothem/harnesses/qwen_code/update.py +10 -0
- package/src/apothem/harnesses/qwen_code/verify.py +11 -0
- package/src/apothem/harnesses/trae/STANDARD-CONVENTION-PIN.md +70 -0
- package/src/apothem/harnesses/trae/__init__.py +49 -0
- package/src/apothem/harnesses/trae/capabilities.yml +34 -0
- package/src/apothem/harnesses/trae/install.py +38 -0
- package/src/apothem/harnesses/trae/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/trae/uninstall.py +25 -0
- package/src/apothem/harnesses/trae/update.py +10 -0
- package/src/apothem/harnesses/trae/verify.py +11 -0
- package/src/apothem/harnesses/windsurf/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/windsurf/__init__.py +52 -0
- package/src/apothem/harnesses/windsurf/capabilities.yml +40 -0
- package/src/apothem/harnesses/windsurf/install.py +41 -0
- package/src/apothem/harnesses/windsurf/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/windsurf/uninstall.py +25 -0
- package/src/apothem/harnesses/windsurf/update.py +10 -0
- package/src/apothem/harnesses/windsurf/verify.py +11 -0
- package/src/apothem/harnesses/zed/STANDARD-CONVENTION-PIN.md +92 -0
- package/src/apothem/harnesses/zed/__init__.py +57 -0
- package/src/apothem/harnesses/zed/capabilities.yml +38 -0
- package/src/apothem/harnesses/zed/install.py +41 -0
- package/src/apothem/harnesses/zed/templates/apothem-rules.md +32 -0
- package/src/apothem/harnesses/zed/uninstall.py +28 -0
- package/src/apothem/harnesses/zed/update.py +10 -0
- package/src/apothem/harnesses/zed/verify.py +11 -0
- package/src/apothem/hooks/README.md +81 -0
- package/src/apothem/hooks/__init__.py +24 -0
- package/src/apothem/hooks/askuserquestion_validator.py +380 -0
- package/src/apothem/hooks/dispatch.py +296 -0
- package/src/apothem/hooks/emit_hook_context.py +444 -0
- package/src/apothem/hooks/hooks.json +318 -0
- package/src/apothem/hooks/lib/README.md +39 -0
- package/src/apothem/hooks/lib/__init__.py +18 -0
- package/src/apothem/hooks/lib/bootstrap.ps1 +129 -0
- package/src/apothem/hooks/lib/bootstrap.sh +103 -0
- package/src/apothem/hooks/lib/events.py +51 -0
- package/src/apothem/hooks/lib/find-pwsh.ps1 +78 -0
- package/src/apothem/hooks/lib/find-pwsh.sh +76 -0
- package/src/apothem/hooks/lib/find-python.ps1 +63 -0
- package/src/apothem/hooks/lib/find-python.sh +97 -0
- package/src/apothem/hooks/lib/log.py +43 -0
- package/src/apothem/hooks/lib/resolve_root.py +264 -0
- package/src/apothem/hooks/messages/postcompact.md +14 -0
- package/src/apothem/hooks/messages/posttooluse-proactive-compaction.md +46 -0
- package/src/apothem/hooks/messages/precompact.md +14 -0
- package/src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md +65 -0
- package/src/apothem/hooks/messages/pretooluse-bash-plan-guard.md +97 -0
- package/src/apothem/hooks/messages/pretooluse-bash.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-conformity.md +70 -0
- package/src/apothem/hooks/messages/pretooluse-dependency-guard.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-edit-header-guard.md +61 -0
- package/src/apothem/hooks/messages/pretooluse-edit.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-eval-guard.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-notebookedit.md +11 -0
- package/src/apothem/hooks/messages/pretooluse-write-header-guard.md +45 -0
- package/src/apothem/hooks/messages/pretooluse-write-plan-guard.md +72 -0
- package/src/apothem/hooks/messages/pretooluse-write.md +21 -0
- package/src/apothem/hooks/messages/sessionstart.md +15 -0
- package/src/apothem/hooks/messages/stop.md +27 -0
- package/src/apothem/hooks/proactive_compaction_tracker.py +327 -0
- package/src/apothem/hooks/session_start_bootstrap.py +472 -0
- package/src/apothem/lib/README.md +42 -0
- package/src/apothem/lib/__init__.py +13 -0
- package/src/apothem/lib/atomic_io.py +189 -0
- package/src/apothem/lib/auditor.py +687 -0
- package/src/apothem/lib/clean_slate.py +396 -0
- package/src/apothem/lib/contexts.py +352 -0
- package/src/apothem/lib/data_home.py +255 -0
- package/src/apothem/lib/frontmatter.py +101 -0
- package/src/apothem/lib/harness_materializer.py +213 -0
- package/src/apothem/lib/harness_protocol.py +59 -0
- package/src/apothem/lib/harness_registry.py +282 -0
- package/src/apothem/lib/harness_registry_data.py +843 -0
- package/src/apothem/lib/install_ledger.py +347 -0
- package/src/apothem/lib/learning.py +540 -0
- package/src/apothem/lib/memory.py +347 -0
- package/src/apothem/lib/parallel_sweep.py +234 -0
- package/src/apothem/lib/plan_tiers.py +200 -0
- package/src/apothem/lib/plugin_bootstrap.py +132 -0
- package/src/apothem/lib/plugin_tree.py +599 -0
- package/src/apothem/lib/profile.py +755 -0
- package/src/apothem/lib/profile_projection.py +198 -0
- package/src/apothem/lib/propagation-manifest.yaml +878 -0
- package/src/apothem/lib/propagation.py +220 -0
- package/src/apothem/lib/python_resolver.py +189 -0
- package/src/apothem/lib/reporter.py +62 -0
- package/src/apothem/lib/workspace_migration.py +323 -0
- package/src/apothem/output-styles/README.md +41 -0
- package/src/apothem/output-styles/concise-engineer.md +49 -0
- package/src/apothem/output-styles/default-architect.md +52 -0
- package/src/apothem/output-styles/default.md +113 -0
- package/src/apothem/output-styles/forensic-auditor.md +63 -0
- package/src/apothem/py.typed +0 -0
- package/src/apothem/rules/README.md +121 -0
- package/src/apothem/rules/agent-capability-discipline-matrix.md +89 -0
- package/src/apothem/rules/agent-capability-discipline.md +78 -0
- package/src/apothem/rules/agent-orchestration-patterns.md +144 -0
- package/src/apothem/rules/agent-orchestration.md +65 -0
- package/src/apothem/rules/agents-md-convention.md +86 -0
- package/src/apothem/rules/agile-sprints-elements.md +135 -0
- package/src/apothem/rules/agile-sprints.md +64 -0
- package/src/apothem/rules/agnostic-posture-checklist.md +47 -0
- package/src/apothem/rules/agnostic-posture.md +48 -0
- package/src/apothem/rules/authoritative-referencing-quotation.md +50 -0
- package/src/apothem/rules/authoritative-referencing.md +66 -0
- package/src/apothem/rules/authority-inquiry-categories.md +58 -0
- package/src/apothem/rules/authority-inquiry.md +54 -0
- package/src/apothem/rules/auto-memory-topic-files.md +86 -0
- package/src/apothem/rules/auto-memory.md +67 -0
- package/src/apothem/rules/bidirectional-binding.md +123 -0
- package/src/apothem/rules/canonical-layout-reporting-tiers.md +212 -0
- package/src/apothem/rules/canonical-layout.md +60 -0
- package/src/apothem/rules/clean-architecture-layers.md +186 -0
- package/src/apothem/rules/clean-room-generation-protocols.md +124 -0
- package/src/apothem/rules/clean-room-generation.md +59 -0
- package/src/apothem/rules/code-craft-conventions.md +101 -0
- package/src/apothem/rules/code-craft-markdown.md +138 -0
- package/src/apothem/rules/code-craft-python.md +154 -0
- package/src/apothem/rules/code-craft-shell.md +192 -0
- package/src/apothem/rules/cognitive-identity-techniques.md +180 -0
- package/src/apothem/rules/cognitive-identity.md +81 -0
- package/src/apothem/rules/context-management-budget.md +46 -0
- package/src/apothem/rules/context-management-protocol.md +161 -0
- package/src/apothem/rules/context-management-scratch.md +128 -0
- package/src/apothem/rules/context-management.md +85 -0
- package/src/apothem/rules/definitiveness-virtues.md +67 -0
- package/src/apothem/rules/definitiveness.md +58 -0
- package/src/apothem/rules/determinism.md +81 -0
- package/src/apothem/rules/disclosure-ledger-markers.md +58 -0
- package/src/apothem/rules/disclosure-ledger.md +52 -0
- package/src/apothem/rules/dynamism.md +38 -0
- package/src/apothem/rules/etc-extension.md +57 -0
- package/src/apothem/rules/expertise-posture-elements.md +68 -0
- package/src/apothem/rules/expertise-posture.md +54 -0
- package/src/apothem/rules/freshness-facade.md +64 -0
- package/src/apothem/rules/harness-adapter-shape-schemas.md +162 -0
- package/src/apothem/rules/harness-adapter-shape.md +42 -0
- package/src/apothem/rules/host-discovery-manifests.md +50 -0
- package/src/apothem/rules/host-discovery.md +56 -0
- package/src/apothem/rules/i18n-discipline-locale-cohorts.md +120 -0
- package/src/apothem/rules/i18n-discipline.md +70 -0
- package/src/apothem/rules/interactive-questions-canonical-shapes.md +590 -0
- package/src/apothem/rules/interactive-questions-detail.md +41 -0
- package/src/apothem/rules/interactive-questions-sweep-matchers.md +184 -0
- package/src/apothem/rules/interactive-questions.md +89 -0
- package/src/apothem/rules/large-file-generation.md +112 -0
- package/src/apothem/rules/large-file-reading.md +59 -0
- package/src/apothem/rules/living-docs.md +85 -0
- package/src/apothem/rules/multi-agent-workflow.md +57 -0
- package/src/apothem/rules/operational-mandates-expanded.md +78 -0
- package/src/apothem/rules/operational-mandates.md +88 -0
- package/src/apothem/rules/option-annotation-form.md +60 -0
- package/src/apothem/rules/option-annotation.md +45 -0
- package/src/apothem/rules/own-voice-reimplementation.md +86 -0
- package/src/apothem/rules/performance-discipline.md +91 -0
- package/src/apothem/rules/persistent-conventions-vigilance-checklist.md +54 -0
- package/src/apothem/rules/persistent-conventions-vigilance.md +61 -0
- package/src/apothem/rules/plain-language.md +56 -0
- package/src/apothem/rules/planning-techniques.md +130 -0
- package/src/apothem/rules/pre-emission-gate-bars.md +86 -0
- package/src/apothem/rules/pre-emission-gate.md +54 -0
- package/src/apothem/rules/production-ready-prs-surfaces.md +162 -0
- package/src/apothem/rules/production-ready-prs.md +83 -0
- package/src/apothem/rules/propagation.md +63 -0
- package/src/apothem/rules/recommend-next-step.md +106 -0
- package/src/apothem/rules/refactoring-discipline.md +76 -0
- package/src/apothem/rules/session-closure.md +44 -0
- package/src/apothem/rules/sota-elevation-exemplars.md +76 -0
- package/src/apothem/rules/sota-elevation.md +52 -0
- package/src/apothem/rules/source-accessibility.md +58 -0
- package/src/apothem/rules/surgical-manipulation.md +48 -0
- package/src/apothem/rules/systemic-participation-relations.md +108 -0
- package/src/apothem/rules/systemic-participation.md +70 -0
- package/src/apothem/rules/ten-dimension-check-dimensions.md +52 -0
- package/src/apothem/rules/ten-dimension-check.md +59 -0
- package/src/apothem/rules/token-budget-discipline.md +81 -0
- package/src/apothem/rules/token-efficiency-rewrite-protocol.md +79 -0
- package/src/apothem/rules/token-efficiency-rewrite.md +77 -0
- package/src/apothem/rules/tool-use-discipline.md +48 -0
- package/src/apothem/rules/visual-leverage.md +102 -0
- package/src/apothem/schemas/NOTICE.md +9 -0
- package/src/apothem/schemas/README.md +104 -0
- package/src/apothem/schemas/__init__.py +176 -0
- package/src/apothem/schemas/advisory-finding.schema.json +111 -0
- package/src/apothem/schemas/agent.schema.json +106 -0
- package/src/apothem/schemas/authorship-header.txt +1 -0
- package/src/apothem/schemas/cohort-manifest.yaml +248 -0
- package/src/apothem/schemas/cohort-metadata-vocabulary.yaml +168 -0
- package/src/apothem/schemas/cohort.schema.json +113 -0
- package/src/apothem/schemas/command.schema.json +68 -0
- package/src/apothem/schemas/compatibility-matrix.yaml +432 -0
- package/src/apothem/schemas/context-fragment.schema.json +64 -0
- package/src/apothem/schemas/freshness-token-denylist.txt +51 -0
- package/src/apothem/schemas/handoff-manifest.yaml +353 -0
- package/src/apothem/schemas/header-exceptions.txt +141 -0
- package/src/apothem/schemas/header-visibility.yaml +39 -0
- package/src/apothem/schemas/learning-signal.schema.json +46 -0
- package/src/apothem/schemas/memory-record.schema.json +61 -0
- package/src/apothem/schemas/output-style.schema.json +40 -0
- package/src/apothem/schemas/plan.schema.json +51 -0
- package/src/apothem/schemas/plugin.schema.json +83 -0
- package/src/apothem/schemas/profile.example.yaml +70 -0
- package/src/apothem/schemas/profile.minimal.yaml +6 -0
- package/src/apothem/schemas/profile.schema.json +396 -0
- package/src/apothem/schemas/reference-token-denylist.txt +25 -0
- package/src/apothem/schemas/skill.schema.json +75 -0
- package/src/apothem/skills/README.md +93 -0
- package/src/apothem/skills/dependency-upgrade/SKILL.md +105 -0
- package/src/apothem/skills/dev-toolkit/SKILL.md +120 -0
- package/src/apothem/skills/diagram-authoring/SKILL.md +113 -0
- package/src/apothem/skills/document-authoring/SKILL.md +118 -0
- package/src/apothem/skills/ecosystem-audit/SKILL.md +108 -0
- package/src/apothem/skills/ecosystem-audit/references/audit-fortress.md +85 -0
- package/src/apothem/skills/ecosystem-audit/references/procedure.md +162 -0
- package/src/apothem/skills/eval-harness/SKILL.md +88 -0
- package/src/apothem/skills/incident-runbook/SKILL.md +92 -0
- package/src/apothem/skills/multi-source-research/SKILL.md +90 -0
- package/src/apothem/skills/plan-suite/SKILL.md +118 -0
- package/src/apothem/skills/plan-suite/master_template.md +1324 -0
- package/src/apothem/skills/projectify/SKILL.md +117 -0
- package/src/apothem/skills/prompt-engineering/SKILL.md +122 -0
- package/src/apothem/skills/refactor-extract/SKILL.md +85 -0
- package/src/apothem/skills/research-suite/SKILL.md +170 -0
- package/src/apothem/skills/research-suite/references/directory-structure.md +47 -0
- package/src/apothem/skills/research-suite/references/lifecycle.md +67 -0
- package/src/apothem/skills/research-suite/references/principal-investigator-framework.md +37 -0
- package/src/apothem/skills/research-suite/references/rigor-mandates.md +30 -0
- package/src/apothem/skills/research-suite/research_template.md +476 -0
- package/src/apothem/skills/secret-rotation/SKILL.md +87 -0
- package/src/apothem/skills/source-synthesis/SKILL.md +92 -0
- package/src/apothem/skills/surgical-guard/SKILL.md +118 -0
- package/src/apothem/skills/test-authoring/SKILL.md +85 -0
- package/src/apothem/skills/vuln-triage/SKILL.md +91 -0
- package/src/apothem/skills/workflow/SKILL.md +139 -0
- package/src/apothem/statuslines/README.md +26 -0
- package/src/apothem/statuslines/__init__.py +20 -0
- package/src/apothem/statuslines/conformity.json +5 -0
- package/src/apothem/statuslines/render.py +334 -0
- package/src/apothem/statuslines/statusline.md +50 -0
- package/src/apothem/templates/README.md +43 -0
- package/src/apothem/templates/agents-md-template.md +80 -0
- package/src/apothem/templates/consideration-log.md +39 -0
- package/src/apothem/templates/expertise-gap-log.md +56 -0
- package/src/apothem/templates/master-index-template.md +93 -0
- package/src/apothem/templates/potency-map.md +53 -0
- package/src/apothem/templates/preservation-audit.md +60 -0
- package/src/apothem/templates/question-resolution-audit.md +52 -0
- package/src/apothem/templates/trace-matrix-template.md +77 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Materializer for the hermes harness — renders YAML config."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
import yaml
|
|
10
|
+
|
|
11
|
+
from apothem.lib.profile import coerce_profile
|
|
12
|
+
from apothem.lib.profile_projection import mcp_servers_for, render_mcp_standard
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def materialize_native_config(profile: dict[str, Any]) -> str:
|
|
16
|
+
"""Render the hermes native configuration from *profile*.
|
|
17
|
+
|
|
18
|
+
Renders the profile's MCP inventory under the native ``auxiliary.mcp`` block.
|
|
19
|
+
Apothem does NOT author ``skills.config`` — per the convention pin that key
|
|
20
|
+
is a list of installable registry *packages* (not a directory loader), so a
|
|
21
|
+
directory path there would be misread as a non-existent package. Apothem's
|
|
22
|
+
shared command/skill content lands under ``~/.hermes/apothem/`` (support
|
|
23
|
+
subtree) and the profile reaches Hermes through the projected managed-block
|
|
24
|
+
document. Returns a YAML string ready to be written to ``output_path``.
|
|
25
|
+
"""
|
|
26
|
+
for_harness = coerce_profile(profile).for_harness("hermes")
|
|
27
|
+
header = (
|
|
28
|
+
"# hermes configuration — managed by Apothem\n"
|
|
29
|
+
"# Do not edit manually; run `apothem update --harness hermes` to regenerate.\n"
|
|
30
|
+
)
|
|
31
|
+
config: dict[str, object] = {}
|
|
32
|
+
mcp = render_mcp_standard(mcp_servers_for(for_harness))
|
|
33
|
+
if mcp:
|
|
34
|
+
config["auxiliary"] = {"mcp": mcp}
|
|
35
|
+
return header + yaml.safe_dump(config, sort_keys=False, allow_unicode=True)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Uninstall logic for the hermes harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from apothem.harnesses._shared import install_driver
|
|
10
|
+
from apothem.harnesses.hermes.materializer import materialize_native_config
|
|
11
|
+
|
|
12
|
+
_HARNESS_NAME: str = "hermes"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def uninstall(output_path: Path) -> None:
|
|
16
|
+
"""Remove Apothem-managed Hermes targets surgically.
|
|
17
|
+
|
|
18
|
+
The native ``config.yaml`` is rendered by the materializer rather than the
|
|
19
|
+
manifest, so it is cleaned here: only Apothem's keys (the ``auxiliary.mcp``
|
|
20
|
+
block) are stripped from the parsed operator YAML — operator channels / auth
|
|
21
|
+
keys survive — and the file is deleted only when nothing operator-authored
|
|
22
|
+
remains. The pre-mutation file is copied into the Apothem backup root; no
|
|
23
|
+
whole-file ``.bak`` sibling is left beside the operator's file. The manifest
|
|
24
|
+
support subtree is then cleaned child-by-child by the shared driver.
|
|
25
|
+
"""
|
|
26
|
+
install_driver.surgically_remove_materialized_config(
|
|
27
|
+
output_path,
|
|
28
|
+
materialize_native_config({}),
|
|
29
|
+
install_root=output_path.parent,
|
|
30
|
+
harness_name=_HARNESS_NAME,
|
|
31
|
+
apothem_keys=frozenset({"auxiliary"}),
|
|
32
|
+
)
|
|
33
|
+
install_driver.run_uninstall(_HARNESS_NAME, harness_root=output_path.parent)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Update logic for the hermes harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from apothem.harnesses._shared.wrapper_factories import make_update
|
|
8
|
+
from apothem.harnesses.hermes.install import install
|
|
9
|
+
|
|
10
|
+
update = make_update(install)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Verify logic for the hermes harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from apothem.harnesses._shared.wrapper_factories import make_verify_native_config
|
|
8
|
+
|
|
9
|
+
_HARNESS_NAME: str = "hermes"
|
|
10
|
+
|
|
11
|
+
verify = make_verify_native_config(_HARNESS_NAME)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Kimi Code Standard Convention Pin
|
|
4
|
+
|
|
5
|
+
## Snapshot
|
|
6
|
+
|
|
7
|
+
- Snapshot date: 2026-06-25
|
|
8
|
+
- vendor-doc-url: <https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html>
|
|
9
|
+
- snapshot-date: 2026-06-25
|
|
10
|
+
- Canonical docs host: `moonshotai.github.io/kimi-cli` (source repo `MoonshotAI/kimi-cli`); the legacy `kimi-code` docs host mirror-resolves but risks link-rot.
|
|
11
|
+
- canonical-filename: `AGENTS.md`
|
|
12
|
+
- canonical-schema: the universal AGENTS.md open standard (Markdown agent-instructions file at the project root)
|
|
13
|
+
- Adapter source: `src/apothem/harnesses/kimi_code/`
|
|
14
|
+
- Evidence level: adapter-local projection; no vendor-native UI claim is made here.
|
|
15
|
+
|
|
16
|
+
## Official Surface Refresh
|
|
17
|
+
|
|
18
|
+
- Re-verified live 2026-06-25 against `github.com/MoonshotAI/kimi-cli` +
|
|
19
|
+
`kimi-code`. Kimi Code (Moonshot) reads the project-root `AGENTS.md`
|
|
20
|
+
instruction file (universal AGENTS.md convention; `/init` generates it,
|
|
21
|
+
`KIMI_AGENTS_MD` consumes it) — CONFIRMED. FINDING (config-path discovery,
|
|
22
|
+
flagged not rewritten): the pin declares `kimi-cli` the canonical source yet
|
|
23
|
+
uses `<project>/.kimi-code/` project-scope paths, while the live kimi-cli docs
|
|
24
|
+
show user-scope `~/.kimi/config.toml` + `~/.kimi/` for config / sessions / MCP
|
|
25
|
+
and a conversational `/mcp-config` (`kimi mcp`) surface. The `kimi-code` vs
|
|
26
|
+
`kimi-cli` product distinction makes the project-scope `.kimi-code/` path
|
|
27
|
+
UNCERTAIN — it needs a targeted discovery pass against the actual `kimi-code`
|
|
28
|
+
product before any path rewrite; flagged here rather than guessed (M5: never
|
|
29
|
+
fabricate a path). The adapter authors no config / MCP entries, so no write is
|
|
30
|
+
affected by the ambiguity.
|
|
31
|
+
- Canonical filename: `AGENTS.md` at the project root. The adapter is
|
|
32
|
+
project-scope and writes the apothem governance surface into `AGENTS.md` as a
|
|
33
|
+
sentinel-delimited managed block so operator prose outside the sentinels is
|
|
34
|
+
never clobbered.
|
|
35
|
+
- Support tree: non-native Markdown cohorts (rules, commands, skills, agents,
|
|
36
|
+
templates) land under the Apothem-owned `<project>/.kimi-code/apothem/`
|
|
37
|
+
subtree and are referenced from the `AGENTS.md` anchor. They are never forced
|
|
38
|
+
into vendor-reserved configuration directories.
|
|
39
|
+
- Model family: the Kimi Code model FAMILY is vendor-pinned and selected through
|
|
40
|
+
the operator's own Kimi Code configuration; the adapter authors no model id
|
|
41
|
+
and presets no model or effort preference.
|
|
42
|
+
|
|
43
|
+
## Verification
|
|
44
|
+
|
|
45
|
+
The vendor configuration surface at the pinned `vendor-doc-url` above was
|
|
46
|
+
verified against vendor reality on `snapshot-date`. Adapter materializer output
|
|
47
|
+
MUST produce an `AGENTS.md` managed block conforming to the universal AGENTS.md
|
|
48
|
+
convention; deviations are findings per
|
|
49
|
+
`rules/harness-adapter-shape.md` §4 Standard-Conformance.
|
|
50
|
+
|
|
51
|
+
## MCP Surface Projection
|
|
52
|
+
|
|
53
|
+
- Status: MCP is the recognized operator-owned surface at
|
|
54
|
+
`<project>/.kimi-code/mcp.json`. Apothem names this surface in
|
|
55
|
+
`capabilities.yml` but does not author MCP server entries; `.kimi-code/mcp.json`
|
|
56
|
+
is operator-owned and outside the adapter's write surface.
|
|
57
|
+
- Boundary: the registry capability cell is `discovery-pending` — the pinned
|
|
58
|
+
snapshot catalogs the config-materialization surfaces, not the vendor MCP
|
|
59
|
+
schema, so Apothem claims only that the surface exists, not that it
|
|
60
|
+
materializes entries.
|
|
61
|
+
|
|
62
|
+
## Tool-Surface Restriction Projection
|
|
63
|
+
|
|
64
|
+
- Status: `discovery-pending`. The Kimi Code tool-permission surface is not yet
|
|
65
|
+
pinned against a vendor schema. The universal-deny floor (secrets paths,
|
|
66
|
+
destructive shell ops, network-write to unsigned endpoints) binds regardless
|
|
67
|
+
per `rules/agent-capability-discipline.md` §5 and is named in
|
|
68
|
+
`capabilities.yml` under `tool_surface_restrictions`.
|
|
69
|
+
|
|
70
|
+
## Recommended Postfix Rendering
|
|
71
|
+
|
|
72
|
+
- Status: supported as plain text.
|
|
73
|
+
- Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option
|
|
74
|
+
label. Kimi Code-facing prompts and fallback text preserve that suffix as
|
|
75
|
+
authored.
|
|
76
|
+
- Boundary: this pin does not claim a harness-native recommended-option widget.
|
|
77
|
+
It only pins the text-rendered convention used by
|
|
78
|
+
`rules/interactive-questions.md`.
|
|
79
|
+
|
|
80
|
+
## Long Context and Compaction
|
|
81
|
+
|
|
82
|
+
- Status: profile-managed.
|
|
83
|
+
- Mechanism: Apothem keeps full-suite `/plan-execute` runs continuous by
|
|
84
|
+
externalizing state to `.apothem/plans/`, compacting or restarting the harness session
|
|
85
|
+
at phase boundaries as needed, and restoring via the Blind Bootstrap sequence.
|
|
86
|
+
- Boundary: this pin does not claim vendor-native autocompaction or a
|
|
87
|
+
long-context size. It pins the adapter-local state handoff and
|
|
88
|
+
compaction-restoration convention used by `rules/context-management.md`.
|
|
89
|
+
|
|
90
|
+
## Large-Codebase Practice Projection
|
|
91
|
+
|
|
92
|
+
- Layered context: declared in `capabilities.yml` under
|
|
93
|
+
`layered_context_surface` — `AGENTS.md` plus the support tree; no vendor-native
|
|
94
|
+
hierarchy is claimed beyond the adapter's documented file/template surface.
|
|
95
|
+
- LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool
|
|
96
|
+
surface is pinned.
|
|
97
|
+
- Hook learning capture: routed through the `persistent-conventions-vigilance`
|
|
98
|
+
artifact-evolution cycle; pass-class hooks stay silent and recurring findings
|
|
99
|
+
become rule, skill, hook, or documentation updates.
|
|
100
|
+
|
|
101
|
+
## Refresh cadence
|
|
102
|
+
|
|
103
|
+
Re-verify against vendor reality every 90 days. On refresh, update
|
|
104
|
+
`snapshot-date` (and `vendor-doc-url` if the authority host moves) in the same
|
|
105
|
+
change-set and emit a `[Pin — refreshed: kimi_code; …]` ledger entry per
|
|
106
|
+
`rules/disclosure-ledger.md`. A pin whose `snapshot-date` exceeds 90 days
|
|
107
|
+
against current vendor reality surfaces as a finding at the next adapter-touch
|
|
108
|
+
boundary per `rules/harness-adapter-shape.md` §6 stale-pin discipline.
|
|
109
|
+
|
|
110
|
+
## Plugin-alone Persistence
|
|
111
|
+
|
|
112
|
+
Kimi Code exposes **no vendor plugin or extension install surface** that Apothem
|
|
113
|
+
ships. The adapter is project-scope: it writes the `AGENTS.md` managed block plus
|
|
114
|
+
an Apothem support tree under `<project>/.kimi-code/apothem/`. There is no
|
|
115
|
+
standalone-installable bundle; every artifact requires the full
|
|
116
|
+
`apothem install --harness kimi-code --project <path>` engine run.
|
|
117
|
+
|
|
118
|
+
| Artifact class | Persists standalone? | Mechanism / limit |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| Context anchor (rules-as-text) | No — requires `apothem install` | `AGENTS.md` is written by the engine; nothing persists before that run. |
|
|
121
|
+
| Rules / Commands / Skills / Agents / Templates | No — deliberate posture | The support tree under the Apothem-owned subtree is engine-materialized as reference material. NOTE: contrary to the prior framing, Kimi Code/CLI DOES document native skills (marketplace + GitHub install), built-in subagents (coder / explore / plan), slash commands (`/init`, `/plan`, `/mcp-config`), and agent specs — the adapter authors none of them (deliberate AGENTS.md-anchor posture), not an absence-of-surface claim. |
|
|
122
|
+
| MCP servers | No — operator-owned | `.kimi-code/mcp.json` is operator-owned; the adapter authors no entries. |
|
|
123
|
+
|
|
124
|
+
## Bindings
|
|
125
|
+
|
|
126
|
+
- Established by ↑ `rules/harness-adapter-shape.md` §6.
|
|
127
|
+
- Cross-bound with ↔ `src/apothem/harnesses/kimi_code/__init__.py` (the adapter
|
|
128
|
+
whose discovery walk this pin anchors).
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Apothem harness adapter for kimi_code — project-scope install.
|
|
4
|
+
|
|
5
|
+
Materializes the apothem instruction surface into the operator-supplied
|
|
6
|
+
project root at ``<project>/AGENTS.md`` — the canonical Kimi Code CLI
|
|
7
|
+
instruction file per the vendor configuration docs
|
|
8
|
+
(https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html,
|
|
9
|
+
snapshot-date 2026-06-24). Kimi Code (Moonshot) reads project-root
|
|
10
|
+
``AGENTS.md`` as its agent-instructions surface following the universal
|
|
11
|
+
AGENTS.md convention; project configuration lives under
|
|
12
|
+
``<project>/.kimi-code/``.
|
|
13
|
+
|
|
14
|
+
The adapter writes the apothem governance surface into ``AGENTS.md`` as a
|
|
15
|
+
sentinel-delimited managed block (operator prose outside the sentinels is
|
|
16
|
+
preserved — identical to how the user-scope codex adapter handles its
|
|
17
|
+
``AGENTS.md``, but project-scoped via ``${PROJECT_ROOT}``). Non-native
|
|
18
|
+
Markdown cohorts (rules, commands, skills, agents, templates) land under an
|
|
19
|
+
Apothem-owned support tree at ``<project>/.kimi-code/apothem/`` referenced
|
|
20
|
+
from the instruction anchor. The ``.kimi-code/mcp.json`` MCP surface is
|
|
21
|
+
operator-owned and out of apothem's adapter scope; the model FAMILY and
|
|
22
|
+
its configuration are vendor-pinned, not adapter-authored.
|
|
23
|
+
|
|
24
|
+
The adapter opts into the project-scope contract via
|
|
25
|
+
``requires_project = True``; the CLI rejects an install / update /
|
|
26
|
+
uninstall / verify invocation that omits ``--project <path>``. Delegates
|
|
27
|
+
install logic to :mod:`apothem.harnesses.kimi_code.install`, which consumes
|
|
28
|
+
the canonical propagation manifest at
|
|
29
|
+
``src/apothem/lib/propagation-manifest.yaml``.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
from __future__ import annotations
|
|
33
|
+
|
|
34
|
+
from pathlib import Path
|
|
35
|
+
|
|
36
|
+
from apothem.harnesses._shared.wrapper_factories import make_project_scope_adapter
|
|
37
|
+
from apothem.harnesses.kimi_code.install import install as _install
|
|
38
|
+
from apothem.harnesses.kimi_code.install import plan as _plan
|
|
39
|
+
from apothem.harnesses.kimi_code.uninstall import uninstall as _uninstall
|
|
40
|
+
from apothem.harnesses.kimi_code.update import update as _update
|
|
41
|
+
from apothem.harnesses.kimi_code.verify import verify as _verify
|
|
42
|
+
|
|
43
|
+
# Sentinel relative path used by ``output_path`` for display purposes
|
|
44
|
+
# only. The real target is resolved per-install via
|
|
45
|
+
# ``resolve_output_path(project)`` once the operator supplies
|
|
46
|
+
# ``--project <path>``.
|
|
47
|
+
_SENTINEL_RELATIVE: Path = Path("AGENTS.md")
|
|
48
|
+
|
|
49
|
+
KimiCodeAdapter = make_project_scope_adapter(
|
|
50
|
+
"kimi-code",
|
|
51
|
+
error_label="kimi-code",
|
|
52
|
+
relative_target=_SENTINEL_RELATIVE,
|
|
53
|
+
install_fn=_install,
|
|
54
|
+
plan_fn=_plan,
|
|
55
|
+
uninstall_fn=_uninstall,
|
|
56
|
+
update_fn=_update,
|
|
57
|
+
verify_fn=_verify,
|
|
58
|
+
class_name="KimiCodeAdapter",
|
|
59
|
+
)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Per rules/agent-capability-discipline.md §1 / §3 / §7. The kimi_code
|
|
4
|
+
# harness (Kimi Code CLI, Moonshot) reads project-root AGENTS.md as its
|
|
5
|
+
# agent-instructions surface and keeps project configuration under
|
|
6
|
+
# <project>/.kimi-code/. Apothem writes the AGENTS.md managed block plus an
|
|
7
|
+
# Apothem support tree under <project>/.kimi-code/apothem/ for non-native
|
|
8
|
+
# Markdown cohorts (rules, commands, skills, agents, templates). MCP is the
|
|
9
|
+
# recognized operator-owned surface at <project>/.kimi-code/mcp.json; Apothem
|
|
10
|
+
# names it but defers authoring entries. The vendor configuration docs are
|
|
11
|
+
# pinned at https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html
|
|
12
|
+
# (snapshot-date 2026-06-25); the model FAMILY is vendor-pinned, never
|
|
13
|
+
# adapter-authored.
|
|
14
|
+
|
|
15
|
+
mcp_servers:
|
|
16
|
+
- project-scope-.kimi-code/mcp.json-operator-owned
|
|
17
|
+
# Operator-owned MCP surface: the adapter recognizes it but authors no entries.
|
|
18
|
+
mcp_servers_authored: false
|
|
19
|
+
sub_agent_dispatch: true
|
|
20
|
+
custom_command_support: "yes"
|
|
21
|
+
recommended_postfix_rendering: "plain-text"
|
|
22
|
+
long_context_compaction: "profile-managed"
|
|
23
|
+
context_ignore_surface: "not-documented-in-current-pin"
|
|
24
|
+
layered_context_surface: "AGENTS.md plus <project>/.kimi-code/apothem/{rules,commands,skills,agents,templates}"
|
|
25
|
+
lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
|
|
26
|
+
hook_learning_capture: "artifact-evolution-cycle"
|
|
27
|
+
standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
|
|
28
|
+
# web-fetch / browser-retrieval surface — the backing capability dimension for
|
|
29
|
+
# rules/source-accessibility.md step 1 ("retrieve through the host's browser /
|
|
30
|
+
# fetch capability"). The pinned snapshot catalogs config-materialization
|
|
31
|
+
# surfaces, not the vendor tool surface, so the web-fetch tool is not yet
|
|
32
|
+
# discovered against the pin — discovery-pending per
|
|
33
|
+
# rules/agent-capability-discipline-matrix.md §1.
|
|
34
|
+
web_fetch: "discovery-pending"
|
|
35
|
+
tool_surface_restrictions:
|
|
36
|
+
- secrets-paths
|
|
37
|
+
- destructive-shell-ops
|
|
38
|
+
- network-write-unsigned
|
|
39
|
+
system_prompt_template_path: "templates/AGENTS.md"
|
|
40
|
+
agent_memory_surface: "AGENTS.md durable context (memory bank)"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Install logic for the kimi_code harness adapter.
|
|
4
|
+
|
|
5
|
+
Materializes the apothem Kimi Code instruction surface into the
|
|
6
|
+
operator-supplied project root. Kimi Code's canonical instruction surface is
|
|
7
|
+
the project-root ``AGENTS.md`` file (per the vendor configuration docs at
|
|
8
|
+
https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html);
|
|
9
|
+
project configuration lives under ``<project>/.kimi-code/``. The adapter
|
|
10
|
+
writes the apothem governance surface into ``AGENTS.md`` as a
|
|
11
|
+
sentinel-delimited managed block so operator prose is never clobbered, and
|
|
12
|
+
keeps non-native Markdown cohorts (rules, commands, skills, agents,
|
|
13
|
+
templates) under an Apothem-owned support tree at
|
|
14
|
+
``<project>/.kimi-code/apothem/`` referenced from the anchor.
|
|
15
|
+
|
|
16
|
+
The propagation contract is declared in the canonical manifest at
|
|
17
|
+
``src/apothem/lib/propagation-manifest.yaml`` under the ``kimi_code`` key
|
|
18
|
+
(a single operator-owned ``sentinel_merge`` operation targeting
|
|
19
|
+
``${PROJECT_ROOT}/AGENTS.md`` plus the apothem-owned support tree) and
|
|
20
|
+
applied by the shared driver at
|
|
21
|
+
``apothem.harnesses._shared.install_driver``. The ``${PROJECT_ROOT}``
|
|
22
|
+
placeholder is substituted with the operator-supplied ``--project <path>``
|
|
23
|
+
value the CLI threads through; absence of ``--project`` is rejected upstream
|
|
24
|
+
at ``apothem.cli._materialize`` via the ``requires_project`` opt-in.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from __future__ import annotations
|
|
28
|
+
|
|
29
|
+
from apothem.harnesses._shared.wrapper_factories import (
|
|
30
|
+
make_project_scope_install,
|
|
31
|
+
make_project_scope_plan,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
# Manifest harness key for this adapter.
|
|
35
|
+
_HARNESS_NAME: str = "kimi_code"
|
|
36
|
+
|
|
37
|
+
install = make_project_scope_install(
|
|
38
|
+
_HARNESS_NAME,
|
|
39
|
+
error_message="kimi-code adapter requires --project <path>; CLI must thread it through",
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
plan = make_project_scope_plan(_HARNESS_NAME)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Apothem — Kimi Code Bootstrap
|
|
4
|
+
|
|
5
|
+
This file is the vendor-canonical agent-instructions surface for the Kimi
|
|
6
|
+
Code CLI (Moonshot): the project-root `AGENTS.md` per the vendor
|
|
7
|
+
configuration docs
|
|
8
|
+
(https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html).
|
|
9
|
+
It follows the universal AGENTS.md convention adopted across coding-agent
|
|
10
|
+
ecosystems. Apothem materialises its governance surface into this file as a
|
|
11
|
+
sentinel-delimited managed block and keeps non-native Markdown cohorts under
|
|
12
|
+
an Apothem-owned support tree at `<project>/.kimi-code/apothem/`.
|
|
13
|
+
|
|
14
|
+
## Apothem Conventions
|
|
15
|
+
|
|
16
|
+
The Apothem-managed cohorts are installed as follows:
|
|
17
|
+
|
|
18
|
+
- `<project>/AGENTS.md` — this Kimi Code instruction anchor, carrying the
|
|
19
|
+
Apothem governance surface as a managed block. Operator prose outside the
|
|
20
|
+
Apothem sentinels is preserved on every re-install.
|
|
21
|
+
- `<project>/.kimi-code/apothem/rules/` — Apothem Markdown rules used as
|
|
22
|
+
reference material by this file and the installed cohorts.
|
|
23
|
+
- `<project>/.kimi-code/apothem/skills/` — Apothem skills plus command prompts
|
|
24
|
+
wrapped as skills.
|
|
25
|
+
- `<project>/.kimi-code/apothem/agents/` — Apothem sub-agent definitions.
|
|
26
|
+
- `<project>/.kimi-code/apothem/templates/` — plan, report, and audit
|
|
27
|
+
templates.
|
|
28
|
+
|
|
29
|
+
## Runtime Configuration
|
|
30
|
+
|
|
31
|
+
Kimi Code CLI's runtime configuration lives under `<project>/.kimi-code/`.
|
|
32
|
+
Apothem does not overwrite operator-owned configuration there; it installs
|
|
33
|
+
instructions and support content through the vendor-native paths above. The
|
|
34
|
+
`<project>/.kimi-code/mcp.json` MCP surface is operator-owned — Apothem names
|
|
35
|
+
it but authors no entries. The Kimi Code model family is selected through the
|
|
36
|
+
operator's own configuration; Apothem presets no model or effort.
|
|
37
|
+
|
|
38
|
+
## Operator Surface
|
|
39
|
+
|
|
40
|
+
Operators may extend project-specific instructions in this `AGENTS.md` outside
|
|
41
|
+
the Apothem managed block. Re-run `apothem install --harness kimi-code
|
|
42
|
+
--project <this-project-root>` to refresh this instruction anchor and the
|
|
43
|
+
installed support cohorts. The operation is idempotent.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Uninstall logic for the kimi_code harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from apothem.harnesses._shared import install_driver
|
|
10
|
+
|
|
11
|
+
_HARNESS_NAME: str = "kimi_code"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def uninstall(output_path: Path, *, project: Path | None = None) -> None:
|
|
15
|
+
"""Remove Apothem-managed Kimi Code targets surgically.
|
|
16
|
+
|
|
17
|
+
The ``AGENTS.md`` ``sentinel_merge`` anchor is cleaned by the shared
|
|
18
|
+
driver, which strips only Apothem's managed block (operator prose
|
|
19
|
+
survives), and the Apothem-owned support tree under
|
|
20
|
+
``<project>/.kimi-code/apothem/`` is removed. The target is the
|
|
21
|
+
project-root ``AGENTS.md``, so the project root is its immediate parent
|
|
22
|
+
when ``project`` is not threaded through.
|
|
23
|
+
"""
|
|
24
|
+
install_driver.run_uninstall(
|
|
25
|
+
_HARNESS_NAME,
|
|
26
|
+
project_root=project or output_path.parent,
|
|
27
|
+
)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Update logic for the kimi_code harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from apothem.harnesses._shared.wrapper_factories import make_update_project
|
|
8
|
+
from apothem.harnesses.kimi_code.install import install
|
|
9
|
+
|
|
10
|
+
update = make_update_project(install)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Verify logic for the kimi_code harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from apothem.harnesses._shared.wrapper_factories import make_verify_project
|
|
8
|
+
|
|
9
|
+
_HARNESS_NAME: str = "kimi_code"
|
|
10
|
+
|
|
11
|
+
verify = make_verify_project(_HARNESS_NAME)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Kiro Standard Convention Pin
|
|
4
|
+
|
|
5
|
+
## Snapshot
|
|
6
|
+
|
|
7
|
+
- Snapshot date: 2026-06-25
|
|
8
|
+
- Snapshot note: live re-verification against `kiro.dev/docs` surfaced TWO findings: (1) the steering inclusion-mode enumeration was INCOMPLETE — the vendor documents FOUR modes (`always | auto | fileMatch | manual`); the prior pin omitted `auto` (description-matched, skill-like inclusion); (2) STALENESS — the pin framed Kiro's skill/agent surface as absent, but the vendor documents Agent Skills (`kiro.dev/docs/skills`), CLI custom agents (`kiro.dev/docs/cli/custom-agents`), and Kiro powers (`POWER.md`). The adapter's rules-only steering delivery remains a DELIBERATE posture. `.kiro/steering/*.md` (workspace) + `~/.kiro/steering/` (global), specs (`.kiro/specs/`), agent hooks, and MCP (`.kiro/settings/mcp.json`) all confirmed current. Previous 2026-06-09.
|
|
9
|
+
- Adapter source: `src/apothem/harnesses/kiro/`
|
|
10
|
+
- Evidence level: adapter-local projection; no vendor-native UI claim is made here.
|
|
11
|
+
- Vendor doc URL: https://kiro.dev/docs/steering/
|
|
12
|
+
- Canonical filename: `.kiro/steering/apothem-rules.md`
|
|
13
|
+
|
|
14
|
+
## Official Surface Refresh
|
|
15
|
+
|
|
16
|
+
- Refreshed live 2026-06-09 against the current Kiro documentation
|
|
17
|
+
(`kiro.dev/docs`). No immutable version pin is exposed (mutable docs site),
|
|
18
|
+
so every captured convention carries a no-immutable-source exception.
|
|
19
|
+
- Kiro reached general availability 2026 with a documented steering surface at
|
|
20
|
+
`.kiro/steering/*.md`. Steering files are Markdown with optional YAML front
|
|
21
|
+
matter controlling inclusion (`inclusion: always | auto | fileMatch | manual`,
|
|
22
|
+
with `fileMatchPattern` for the `fileMatch` mode and description-matched
|
|
23
|
+
inclusion for the `auto` mode). The adapter is project-scope and
|
|
24
|
+
writes only `<project>/.kiro/steering/apothem-rules.md` with
|
|
25
|
+
`inclusion: always`, so it never clobbers the operator-authored foundation
|
|
26
|
+
files (`product.md`, `tech.md`, `structure.md`).
|
|
27
|
+
- MCP is recognized: `.kiro/settings/mcp.json` (workspace) and
|
|
28
|
+
`~/.kiro/settings/mcp.json` (user) are operator-owned; the adapter recognizes
|
|
29
|
+
them but does not author entries. `capabilities.yml` `mcp_servers` and the
|
|
30
|
+
shared capability matrix were set accordingly.
|
|
31
|
+
- Steering is a `.kiro/steering/*.md` directory, not a single file;
|
|
32
|
+
`layered_context_surface` was set to match. Kiro also recognizes `AGENTS.md`
|
|
33
|
+
at the project root; the adapter does not write `AGENTS.md` (the dedicated
|
|
34
|
+
steering file is the deliberate, non-clobbering surface).
|
|
35
|
+
- The vendor documents specs (`.kiro/specs/`), agent hooks, Agent Skills
|
|
36
|
+
(`kiro.dev/docs/skills`), CLI custom agents (`kiro.dev/docs/cli/custom-agents`),
|
|
37
|
+
and Kiro powers (`POWER.md`). The adapter delivers only the project steering
|
|
38
|
+
file and authors none of those cohorts: a DELIBERATE rules-only posture, not a
|
|
39
|
+
claim the surfaces are absent. Settings and status surfaces remain undocumented
|
|
40
|
+
as adapter-owned file surfaces.
|
|
41
|
+
|
|
42
|
+
## Recommended Postfix Rendering
|
|
43
|
+
|
|
44
|
+
- Status: supported as plain text.
|
|
45
|
+
- Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option label. Kiro steering files preserve that suffix as authored.
|
|
46
|
+
- Boundary: this pin does not claim a harness-native recommended-option widget. It only pins the text-rendered convention used by `rules/interactive-questions.md`.
|
|
47
|
+
|
|
48
|
+
## Long Context and Compaction
|
|
49
|
+
|
|
50
|
+
- Status: profile-managed.
|
|
51
|
+
- Mechanism: Apothem keeps full-suite `/plan-execute` runs continuous by externalizing state to `.apothem/plans/`, compacting or restarting the harness session at phase boundaries as needed, and restoring via the Blind Bootstrap sequence.
|
|
52
|
+
- Boundary: this pin does not claim vendor-native autocompaction or a long-context size. It pins the adapter-local state handoff and compaction-restoration convention used by `rules/context-management.md`.
|
|
53
|
+
|
|
54
|
+
## Large-Codebase Practice Projection
|
|
55
|
+
|
|
56
|
+
- Layered context: declared in `capabilities.yml` under `layered_context_surface`; no vendor-native hierarchy is claimed beyond the adapter's documented file/template surface. Kiro steering inclusion modes (`always`, `fileMatch`, `manual`) are the vendor-native context-scoping mechanism; the adapter ships the `always` mode for its governance surface.
|
|
57
|
+
- LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool surface is pinned.
|
|
58
|
+
- Hook learning capture: routed through the `persistent-conventions-vigilance` artifact-evolution cycle; pass-class hooks stay silent and recurring findings become rule, skill, hook, or documentation updates.
|
|
59
|
+
|
|
60
|
+
## Plugin-alone Persistence
|
|
61
|
+
|
|
62
|
+
Kiro exposes **no vendor plugin or extension install surface** that Apothem
|
|
63
|
+
ships. The adapter is project-scope rules-only: it writes a single merged
|
|
64
|
+
steering file at `<project>/.kiro/steering/apothem-rules.md` (`inclusion: always`)
|
|
65
|
+
and authors no other cohort. There is no standalone-installable bundle; every
|
|
66
|
+
artifact requires the full `apothem install --harness kiro --project <path>`
|
|
67
|
+
engine run.
|
|
68
|
+
|
|
69
|
+
| Artifact class | Persists standalone? | Mechanism / limit |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| Rules (steering-as-text) | No — requires `apothem install` | The merged `apothem-rules.md` steering file (carrying the embedded behavioral mandates) is written only by the engine into the vendor-native `.kiro/steering/` directory. Nothing persists before that run. |
|
|
72
|
+
| Commands / Skills / Agents | No — deliberate rules-only posture | Kiro documents specs (`.kiro/specs/`), agent hooks, Agent Skills, and CLI custom agents, but the adapter authors none of them (preserve-first rules-only delivery); these cohorts are not materialized for this harness by design. |
|
|
73
|
+
| Hooks / MCP / Settings | No — operator-owned / platform limit | `.kiro/settings/mcp.json` (MCP) and the foundation steering files are operator-owned; the adapter authors no entries. |
|
|
74
|
+
|
|
75
|
+
Platform limit: Kiro ships no marketplace/extension channel, so a plugin-alone
|
|
76
|
+
story does not exist — the merged steering file via `apothem install` is the sole
|
|
77
|
+
persistence surface.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Apothem harness adapter for kiro — project-scope install.
|
|
4
|
+
|
|
5
|
+
Materializes the apothem rules surface into the operator-supplied
|
|
6
|
+
project root at ``<project>/.kiro/steering/apothem-rules.md`` — a
|
|
7
|
+
dedicated Apothem steering file inside Kiro's documented steering
|
|
8
|
+
directory per https://kiro.dev/docs/steering/. Kiro's foundation
|
|
9
|
+
steering files (``product.md``, ``tech.md``, ``structure.md``) are
|
|
10
|
+
operator-authored; the adapter writes only its own ``apothem-rules.md``
|
|
11
|
+
steering file and never clobbers them. Kiro specs
|
|
12
|
+
(``.kiro/specs/``) and agent hooks are out of apothem's adapter scope.
|
|
13
|
+
|
|
14
|
+
The adapter opts into the project-scope contract via
|
|
15
|
+
``requires_project = True``; the CLI rejects an install / update /
|
|
16
|
+
uninstall / verify invocation that omits ``--project <path>``. Delegates
|
|
17
|
+
install logic to :mod:`apothem.harnesses.kiro.install`, which
|
|
18
|
+
consumes the canonical propagation manifest at
|
|
19
|
+
``src/apothem/lib/propagation-manifest.yaml``.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
from pathlib import Path
|
|
25
|
+
|
|
26
|
+
from apothem.harnesses._shared.wrapper_factories import make_project_scope_adapter
|
|
27
|
+
from apothem.harnesses.kiro.install import install as _install
|
|
28
|
+
from apothem.harnesses.kiro.install import plan as _plan
|
|
29
|
+
from apothem.harnesses.kiro.uninstall import uninstall as _uninstall
|
|
30
|
+
from apothem.harnesses.kiro.update import update as _update
|
|
31
|
+
from apothem.harnesses.kiro.verify import verify as _verify
|
|
32
|
+
|
|
33
|
+
# Sentinel relative path used by ``output_path`` for display purposes
|
|
34
|
+
# only. The real target is resolved per-install via
|
|
35
|
+
# ``resolve_output_path(project)`` once the operator supplies
|
|
36
|
+
# ``--project <path>``.
|
|
37
|
+
_SENTINEL_RELATIVE: Path = Path(".kiro") / "steering" / "apothem-rules.md"
|
|
38
|
+
|
|
39
|
+
KiroAdapter = make_project_scope_adapter(
|
|
40
|
+
"kiro",
|
|
41
|
+
error_label="kiro",
|
|
42
|
+
relative_target=_SENTINEL_RELATIVE,
|
|
43
|
+
install_fn=_install,
|
|
44
|
+
plan_fn=_plan,
|
|
45
|
+
uninstall_fn=_uninstall,
|
|
46
|
+
update_fn=_update,
|
|
47
|
+
verify_fn=_verify,
|
|
48
|
+
class_name="KiroAdapter",
|
|
49
|
+
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Per rules/agent-capability-discipline.md §1 / §3 / §7. Kiro
|
|
4
|
+
# ratifies MCP via .kiro/settings/mcp.json (workspace) and
|
|
5
|
+
# ~/.kiro/settings/mcp.json (user) — both operator-owned; the adapter
|
|
6
|
+
# recognizes them but does not author entries. The adapter delivers a
|
|
7
|
+
# single project steering file under .kiro/steering/ and does not
|
|
8
|
+
# dispatch sub-agents or author spec/hook cohorts.
|
|
9
|
+
|
|
10
|
+
mcp_servers:
|
|
11
|
+
- workspace-scope-.kiro/settings/mcp.json
|
|
12
|
+
- user-scope-~/.kiro/settings/mcp.json
|
|
13
|
+
# Operator-owned MCP surface: the adapter recognizes it but authors no entries.
|
|
14
|
+
mcp_servers_authored: false
|
|
15
|
+
sub_agent_dispatch: false
|
|
16
|
+
custom_command_support: "no"
|
|
17
|
+
recommended_postfix_rendering: "plain-text"
|
|
18
|
+
long_context_compaction: "profile-managed"
|
|
19
|
+
context_ignore_surface: "not-documented-in-current-pin"
|
|
20
|
+
layered_context_surface: ".kiro/steering/*.md directory"
|
|
21
|
+
lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
|
|
22
|
+
hook_learning_capture: "artifact-evolution-cycle"
|
|
23
|
+
standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
|
|
24
|
+
# web-fetch / browser-retrieval surface — the backing capability dimension for
|
|
25
|
+
# rules/source-accessibility.md step 1 ("retrieve through the host's browser /
|
|
26
|
+
# fetch capability"). The pinned snapshot catalogs config-materialization
|
|
27
|
+
# surfaces, not the vendor tool surface, so the web-fetch tool is not yet
|
|
28
|
+
# discovered against the pin — discovery-pending per
|
|
29
|
+
# rules/agent-capability-discipline-matrix.md §1.
|
|
30
|
+
web_fetch: "discovery-pending"
|
|
31
|
+
tool_surface_restrictions:
|
|
32
|
+
- secrets-paths
|
|
33
|
+
- destructive-shell-ops
|
|
34
|
+
- network-write-unsigned
|
|
35
|
+
system_prompt_template_path: "templates/apothem-rules.md"
|
|
36
|
+
agent_memory_surface: "kiro-steering-persistent-context"
|