@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,42 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Per rules/agent-capability-discipline.md §1 / §3 / §7. GitHub Copilot
|
|
4
|
+
# anchors project-scope .github/copilot-instructions.md; the vendor also
|
|
5
|
+
# recognizes .github/instructions/*.instructions.md, AGENTS.md, and root
|
|
6
|
+
# CLAUDE.md/GEMINI.md, but the adapter delivers only the repo-wide
|
|
7
|
+
# instructions file. MCP is service/IDE state (~/.copilot/mcp-config.json),
|
|
8
|
+
# not a repo-writable file, so mcp_servers stays []. No repo-config
|
|
9
|
+
# sub-agent dispatch; no durable memory surface. Universal-deny floor binds.
|
|
10
|
+
|
|
11
|
+
mcp_servers: []
|
|
12
|
+
# Operator-owned MCP surface: the adapter recognizes it but authors no entries.
|
|
13
|
+
mcp_servers_authored: false
|
|
14
|
+
sub_agent_dispatch: false
|
|
15
|
+
custom_command_support: "no"
|
|
16
|
+
recommended_postfix_rendering: "plain-text"
|
|
17
|
+
long_context_compaction: "profile-managed"
|
|
18
|
+
context_ignore_surface: "not-documented-in-current-pin"
|
|
19
|
+
layered_context_surface: "copilot-instructions.md plus instructions directory"
|
|
20
|
+
lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
|
|
21
|
+
hook_learning_capture: "artifact-evolution-cycle"
|
|
22
|
+
standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
|
|
23
|
+
# web-fetch / browser-retrieval surface — the backing capability dimension for
|
|
24
|
+
# rules/source-accessibility.md step 1 ("retrieve through the host's browser /
|
|
25
|
+
# fetch capability"). Vendor-confirmed: GitHub Copilot CLI (the agent-invocable
|
|
26
|
+
# surface, distinct from the IDE extension) ships a `web_fetch` tool that
|
|
27
|
+
# retrieves URL content as markdown, gated by `--allow-url` / `--deny-url`
|
|
28
|
+
# permissions. Evidence triple — vendor-doc-url:
|
|
29
|
+
# https://docs.github.com/en/copilot/concepts/agents/copilot-cli/research
|
|
30
|
+
# (+ .../how-tos/copilot-cli/set-up-copilot-cli/configure-copilot-cli); snapshot-id:
|
|
31
|
+
# living docs; snapshot-date: 2026-06-21. Note: this row reflects the Copilot CLI
|
|
32
|
+
# tool surface; the adapter itself materializes only .github/copilot-instructions.md
|
|
33
|
+
# and authors no tool config. Canonical evidence home is STANDARD-CONVENTION-PIN.md
|
|
34
|
+
# per rules/agent-capability-discipline-matrix.md §1A; pin refresh tracked as a
|
|
35
|
+
# follow-up.
|
|
36
|
+
web_fetch: "yes"
|
|
37
|
+
tool_surface_restrictions:
|
|
38
|
+
- secrets-paths
|
|
39
|
+
- destructive-shell-ops
|
|
40
|
+
- network-write-unsigned
|
|
41
|
+
system_prompt_template_path: "templates/copilot-instructions.md"
|
|
42
|
+
agent_memory_surface: "n/a"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Install logic for the github-copilot harness adapter.
|
|
4
|
+
|
|
5
|
+
Materializes the apothem GitHub Copilot instructions surface into the
|
|
6
|
+
operator-supplied project root. The GA repo-wide instructions file is
|
|
7
|
+
``<project>/.github/copilot-instructions.md`` per
|
|
8
|
+
https://docs.github.com/en/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot.
|
|
9
|
+
User-scope is unavailable — Copilot's user-level settings live in IDE
|
|
10
|
+
state (VS Code / JetBrains UI), not a file path the harness can write.
|
|
11
|
+
|
|
12
|
+
The propagation contract is declared in the canonical manifest at
|
|
13
|
+
``src/apothem/lib/propagation-manifest.yaml`` under the ``github_copilot``
|
|
14
|
+
key (a single ``sentinel_merge`` operation targeting
|
|
15
|
+
``${PROJECT_ROOT}/.github/copilot-instructions.md``) and applied by the
|
|
16
|
+
shared driver at ``apothem.harnesses._shared.install_driver``. The
|
|
17
|
+
``${PROJECT_ROOT}`` placeholder is substituted with the operator-supplied
|
|
18
|
+
``--project <path>`` value the CLI threads through; absence of
|
|
19
|
+
``--project`` is rejected upstream at ``apothem.cli._materialize`` via the
|
|
20
|
+
``requires_project`` opt-in.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
from apothem.harnesses._shared.wrapper_factories import (
|
|
26
|
+
make_project_scope_install,
|
|
27
|
+
make_project_scope_plan,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
# Manifest harness key for this adapter.
|
|
31
|
+
_HARNESS_NAME: str = "github_copilot"
|
|
32
|
+
|
|
33
|
+
install = make_project_scope_install(
|
|
34
|
+
_HARNESS_NAME,
|
|
35
|
+
error_message=(
|
|
36
|
+
"github_copilot adapter requires --project <path>; CLI must thread it through"
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
plan = make_project_scope_plan(_HARNESS_NAME)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# GitHub Copilot — Apothem Bootstrap
|
|
4
|
+
|
|
5
|
+
This file is materialised by `apothem install --harness github-copilot --project <path>` and lands at `<project>/.github/copilot-instructions.md`, the GA repo-wide instructions surface per https://docs.github.com/en/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot. The first 4,000 characters are parsed by Copilot's code-review agent; the remaining body is consumed by chat / completions in this project.
|
|
6
|
+
|
|
7
|
+
## Project Context
|
|
8
|
+
|
|
9
|
+
GitHub Copilot operates against the apothem governance and convention surface in this project. Apothem propagates a shared engineering discipline across every supported AI harness; inside Copilot, the surface manifests as this repo-wide instructions file.
|
|
10
|
+
|
|
11
|
+
The full apothem rule / skill / command / agent cohort lives at the apothem source repository under `src/apothem/{rules,skills,commands,agents}/`. This file is the Copilot-facing anchor; consult the apothem rule tree for the per-rule body when generating non-trivial code or prose.
|
|
12
|
+
|
|
13
|
+
## Engineering disciplines in force
|
|
14
|
+
|
|
15
|
+
The apothem governance contract binds the following disciplines uniformly across every harness, including GitHub Copilot:
|
|
16
|
+
|
|
17
|
+
- **Plans-Locality.** Plan-suite artefacts (PROGRESS.md, PLAN-NOTES.md, PHASE.md, REPORT.md) live under `<project>/.apothem/plans/{suite}/` — the sole canonical home; a legacy `<project>/.plans/` tree upgrades via `apothem migrate-workspace`. They never land in a global plans directory or any other global-ecosystem location.
|
|
18
|
+
- **Authority hygiene.** Never fabricate identity, scope, security posture, or version-pin data. When generation requires data the operator has not supplied, surface the ambiguity through a question instead of inventing a plausible-looking value.
|
|
19
|
+
- **Definitiveness.** Hedging vocabulary (`maybe`, `might`, `usually`, `generally`, `typically`, `probably`) is eliminated where binding prescription is possible. Pre / post / failure conditions are stated on every contract.
|
|
20
|
+
- **Production-ready discipline.** Every change ships in production-ready form — tests, docs, CHANGELOG entry, conformant commit message, CI green — in the same change-set.
|
|
21
|
+
- **Plain-language.** Codebase artefacts and user-facing prose read as natural domain language with zero trace of internal planning structure. Generated code uses domain-native names (`calculate_portfolio_risk`, not `process_data`).
|
|
22
|
+
- **Human-only authorship.** Git commit messages, PR descriptions, branch names, and tag annotations carry human contributors only — never name the underlying language model, the runtime, the IDE extension, or any automated tool as a co-author.
|
|
23
|
+
- **Lean-context delegation.** Where the host provides delegated-worker dispatch, broad reads and heavy workloads route to a spawned worker by default so the main working context stays lean. The heavy parallel apparatus stays opt-in; routing delegable work away from the main thread is the standing posture once dispatch is available.
|
|
24
|
+
- **Observe-decide-act discipline.** Tool use runs as a loop — observe the current state, decide the next move from what was observed, then act — never an edit before a read or a result asserted before a check. Independent reads and searches run together in one pass, not one per turn; the loop closes on a verifiable condition (a gate green, a read confirmed), never a fixed number of tries. Advisory, never an auto-applied behavior.
|
|
25
|
+
- **Source accessibility.** When the authoritative source for a claim, convention, or version pin is closed, paywalled, login-gated, or otherwise unreachable, ask the operator for it in full rather than substituting a lower-trust open page. Trust outranks reachability.
|
|
26
|
+
|
|
27
|
+
## Modal hierarchy
|
|
28
|
+
|
|
29
|
+
When the operator's request conflicts with an apothem rule, the rule wins; surface the conflict and propose the rule-conformant alternative. When two apothem surfaces conflict, the most specific path-filtered rule wins over the always-on rule. Always-on rules are listed at `<apothem-src>/src/apothem/rules/` with `alwaysApply: true` in their frontmatter.
|
|
30
|
+
|
|
31
|
+
## Refreshing the file
|
|
32
|
+
|
|
33
|
+
Re-run `apothem install --harness github-copilot --project <this-project-root>` to overwrite this file with the latest apothem template. The operation is idempotent — re-running cleanly replaces the prior content. The companion `apothem uninstall --harness github-copilot --project <this-project-root>` renames the file to a timestamped backup; `apothem verify --harness github-copilot --project <this-project-root>` checks the file is present and non-empty.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Uninstall logic for the github-copilot 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 = "github_copilot"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def uninstall(output_path: Path, *, project: Path | None = None) -> None:
|
|
15
|
+
"""Remove Apothem-managed GitHub Copilot targets surgically.
|
|
16
|
+
|
|
17
|
+
The copilot-instructions ``sentinel_merge`` anchor is cleaned by the shared
|
|
18
|
+
driver, which strips only Apothem's managed block (operator prose survives),
|
|
19
|
+
deletes an Apothem-only file, and backs the file up under the Apothem backup
|
|
20
|
+
root — no whole-file ``.bak`` sibling is left beside the operator's file.
|
|
21
|
+
"""
|
|
22
|
+
install_driver.run_uninstall(
|
|
23
|
+
_HARNESS_NAME,
|
|
24
|
+
project_root=project or output_path.parents[1],
|
|
25
|
+
)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Update logic for the github-copilot harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from apothem.harnesses._shared.wrapper_factories import make_update_project
|
|
8
|
+
from apothem.harnesses.github_copilot.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 github_copilot 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 = "github_copilot"
|
|
10
|
+
|
|
11
|
+
verify = make_verify_project(_HARNESS_NAME)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# GLM (Z.ai) Standard Convention Pin
|
|
4
|
+
|
|
5
|
+
## Snapshot
|
|
6
|
+
|
|
7
|
+
- Snapshot date: 2026-06-25
|
|
8
|
+
- Snapshot note: base URLs re-confirmed live against `docs.z.ai` — the Anthropic-compatible endpoint `https://api.z.ai/api/anthropic` (env `ANTHROPIC_BASE_URL` / `ANTHROPIC_AUTH_TOKEN` / `API_TIMEOUT_MS`) is an exact match to current docs; the no-pinned-model-id decision is vindicated (the catalog already advanced to GLM-5.2 / GLM-5-Turbo / GLM-4.7, which a hard-pinned id would have made stale). Previous 2026-06-24.
|
|
9
|
+
- Adapter source: `src/apothem/harnesses/glm/`
|
|
10
|
+
- Evidence level: adapter-local projection; no vendor-native coding-tool UI claim is made here. GLM is a model backend, not a coding-agent tool.
|
|
11
|
+
|
|
12
|
+
## Official Surface Refresh
|
|
13
|
+
|
|
14
|
+
- Refreshed live 2026-06-24 against the current Z.ai documentation
|
|
15
|
+
(`docs.z.ai`). No authority-host move; no immutable version pin is exposed
|
|
16
|
+
(mutable docs site), so every captured convention carries a
|
|
17
|
+
no-immutable-source exception.
|
|
18
|
+
- GLM (Z.ai) is a **model backend**, not a first-party coding CLI. Z.ai ships
|
|
19
|
+
no native GLM coding-agent tool. An Anthropic-compatible or OpenAI-compatible
|
|
20
|
+
coding agent is pointed at GLM by setting backend environment variables.
|
|
21
|
+
- Anthropic-compatible backend: base URL `https://api.z.ai/api/anthropic`. An
|
|
22
|
+
operator sets `ANTHROPIC_BASE_URL`, `ANTHROPIC_AUTH_TOKEN`, and
|
|
23
|
+
(optionally) `API_TIMEOUT_MS` to route an Anthropic-compatible agent to GLM.
|
|
24
|
+
- OpenAI-compatible backend: base URL `https://api.z.ai/api/coding/paas/v4`.
|
|
25
|
+
- Canonical filename: `.apothem/providers/glm.toml`. The adapter is
|
|
26
|
+
project-scope and writes only `<project>/.apothem/providers/glm.toml`, an
|
|
27
|
+
Apothem-owned TOML provider file recording both compatibility surfaces, an
|
|
28
|
+
auth-token placeholder (never a real secret), and operator-configurable
|
|
29
|
+
model-mapping placeholders. No GLM model id is pinned (model ids are
|
|
30
|
+
version-volatile); the operator selects one from the current Z.ai catalog.
|
|
31
|
+
- The adapter authors no coding-agent cohort (rules, commands, skills, agents,
|
|
32
|
+
hooks): a model backend exposes none. Every capability is `unsupported`.
|
|
33
|
+
|
|
34
|
+
## Recommended Postfix Rendering
|
|
35
|
+
|
|
36
|
+
- Status: not applicable.
|
|
37
|
+
- Mechanism: GLM is a model backend, not a coding-agent tool with an
|
|
38
|
+
option-rendering surface. Apothem renders no recommended-option label here.
|
|
39
|
+
- Boundary: this pin claims no harness-native recommended-option widget; the
|
|
40
|
+
backend exposes no agent UI surface to render one.
|
|
41
|
+
|
|
42
|
+
## Long Context and Compaction
|
|
43
|
+
|
|
44
|
+
- Status: profile-managed.
|
|
45
|
+
- Mechanism: long-context and compaction are properties of the coding agent
|
|
46
|
+
the operator points at GLM, not of the backend. Apothem's context-management
|
|
47
|
+
discipline lives in the agent harness, not in this backend provider file.
|
|
48
|
+
- Boundary: this pin claims no vendor-native autocompaction or long-context
|
|
49
|
+
size for the backend itself.
|
|
50
|
+
|
|
51
|
+
## Large-Codebase Practice Projection
|
|
52
|
+
|
|
53
|
+
- Layered context: not applicable — GLM is a backend endpoint, not an agent
|
|
54
|
+
with a context hierarchy. The provider config file carries backend wiring
|
|
55
|
+
only.
|
|
56
|
+
- LSP symbol navigation: not applicable — provided by the agent runtime the
|
|
57
|
+
operator points at GLM, never by the backend.
|
|
58
|
+
- Hook learning capture: routed through the `persistent-conventions-vigilance`
|
|
59
|
+
artifact-evolution cycle; the backend exposes no hook surface.
|
|
60
|
+
|
|
61
|
+
## Plugin-alone Persistence
|
|
62
|
+
|
|
63
|
+
GLM (Z.ai) exposes **no vendor plugin or extension install surface** that
|
|
64
|
+
Apothem ships. The adapter is project-scope and writes a single Apothem-owned
|
|
65
|
+
provider config file at `<project>/.apothem/providers/glm.toml`. There is no
|
|
66
|
+
standalone-installable bundle; the file is written only by the
|
|
67
|
+
`apothem install --harness glm --project <path>` engine run.
|
|
68
|
+
|
|
69
|
+
| Artifact class | Persists standalone? | Mechanism / limit |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| Provider config | No — requires `apothem install` | The `glm.toml` backend-provider file is written only by the engine into `<project>/.apothem/providers/`. Nothing persists before that run. |
|
|
72
|
+
| Commands / Skills / Agents / Rules / Hooks | No — platform limit | GLM is a model backend; it exposes no coding-agent primitive Apothem targets, so these cohorts are not materialized for this harness. |
|
|
73
|
+
| Auth / model mapping | Operator-owned | The auth token and model ids are operator placeholders; Apothem never writes a real secret or pins a version-volatile model id. |
|
|
74
|
+
|
|
75
|
+
Platform limit: GLM ships no marketplace/extension channel, so a plugin-alone
|
|
76
|
+
story does not exist for this harness — the backend-provider file via
|
|
77
|
+
`apothem install` is the sole persistence surface.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Apothem harness adapter for glm — project-scope backend-provider config.
|
|
4
|
+
|
|
5
|
+
GLM (Z.ai) is a **model backend**, not a first-party coding-agent tool: Z.ai
|
|
6
|
+
ships no native GLM coding CLI. GLM is the model an Anthropic-compatible or
|
|
7
|
+
OpenAI-compatible coding agent points at by setting backend environment
|
|
8
|
+
variables. The adapter therefore writes a provider configuration file —
|
|
9
|
+
``<project>/.apothem/providers/glm.toml`` — that records the Anthropic-compatible
|
|
10
|
+
and OpenAI-compatible base URLs, an auth-token placeholder, and
|
|
11
|
+
operator-configurable model-mapping placeholders so an operator can wire any
|
|
12
|
+
compatible agent to GLM. The file is materialized via ``write_text`` as an
|
|
13
|
+
operator-owned valid-TOML config: Apothem writes the clean template, and the
|
|
14
|
+
operator owns the file thereafter — their own backend secrets and edits route
|
|
15
|
+
through the per-file destructive-op authorization gate on every subsequent
|
|
16
|
+
``update`` rather than being silently overwritten. It carries **no** projected
|
|
17
|
+
shared-profile content and **no** coding-agent cohort (rules, commands, skills,
|
|
18
|
+
agents, hooks): a model backend is not rule-bearing and exposes none. The
|
|
19
|
+
managed-block sentinel machinery is markdown-only (HTML-comment delimiters, a
|
|
20
|
+
frozen contract), so it is deliberately not used here — folding sentinels into
|
|
21
|
+
a ``.toml`` surface would produce invalid TOML.
|
|
22
|
+
|
|
23
|
+
The adapter opts into the project-scope contract via ``requires_project = True``;
|
|
24
|
+
the CLI rejects an install / update / uninstall / verify invocation that omits
|
|
25
|
+
``--project <path>``. Delegates install logic to
|
|
26
|
+
:mod:`apothem.harnesses.glm.install`, which consumes the canonical propagation
|
|
27
|
+
manifest at ``src/apothem/lib/propagation-manifest.yaml`` under the ``glm`` key.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
from __future__ import annotations
|
|
31
|
+
|
|
32
|
+
from pathlib import Path
|
|
33
|
+
|
|
34
|
+
from apothem.harnesses._shared.wrapper_factories import make_project_scope_adapter
|
|
35
|
+
from apothem.harnesses.glm.install import install as _install
|
|
36
|
+
from apothem.harnesses.glm.install import plan as _plan
|
|
37
|
+
from apothem.harnesses.glm.uninstall import uninstall as _uninstall
|
|
38
|
+
from apothem.harnesses.glm.update import update as _update
|
|
39
|
+
from apothem.harnesses.glm.verify import verify as _verify
|
|
40
|
+
|
|
41
|
+
# Sentinel relative path used by ``output_path`` for display purposes only.
|
|
42
|
+
# The real target is resolved per-install via ``resolve_output_path(project)``
|
|
43
|
+
# once the operator supplies ``--project <path>``.
|
|
44
|
+
_SENTINEL_RELATIVE: Path = Path(".apothem") / "providers" / "glm.toml"
|
|
45
|
+
|
|
46
|
+
GlmAdapter = make_project_scope_adapter(
|
|
47
|
+
"glm",
|
|
48
|
+
error_label="glm",
|
|
49
|
+
relative_target=_SENTINEL_RELATIVE,
|
|
50
|
+
install_fn=_install,
|
|
51
|
+
plan_fn=_plan,
|
|
52
|
+
uninstall_fn=_uninstall,
|
|
53
|
+
update_fn=_update,
|
|
54
|
+
verify_fn=_verify,
|
|
55
|
+
class_name="GlmAdapter",
|
|
56
|
+
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Per rules/agent-capability-discipline.md §1 / §3 / §7. GLM (Z.ai) is a
|
|
4
|
+
# model backend, not a coding-agent tool: Z.ai ships no native GLM coding CLI.
|
|
5
|
+
# An Anthropic-compatible or OpenAI-compatible agent points at GLM by setting
|
|
6
|
+
# backend environment variables. The adapter writes a single Apothem-owned
|
|
7
|
+
# provider config file under .apothem/providers/ and authors no coding-agent
|
|
8
|
+
# cohort (rules, commands, skills, agents, hooks), because a model backend
|
|
9
|
+
# exposes none. Every capability is therefore unsupported.
|
|
10
|
+
|
|
11
|
+
# No MCP file surface exists: GLM is a backend endpoint, not an agent that
|
|
12
|
+
# hosts MCP servers. Empty list per the registry's unsupported mcp_servers cell.
|
|
13
|
+
mcp_servers: []
|
|
14
|
+
mcp_servers_authored: false
|
|
15
|
+
sub_agent_dispatch: false
|
|
16
|
+
custom_command_support: "no"
|
|
17
|
+
recommended_postfix_rendering: "not-applicable-model-backend"
|
|
18
|
+
long_context_compaction: "profile-managed"
|
|
19
|
+
context_ignore_surface: "not-applicable-model-backend"
|
|
20
|
+
layered_context_surface: ".apothem/providers/glm.toml backend config (no agent context surface)"
|
|
21
|
+
lsp_symbol_navigation: "not-applicable-model-backend"
|
|
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. GLM is a model backend with no agent
|
|
26
|
+
# tool surface to discover against the pin.
|
|
27
|
+
web_fetch: "not-applicable-model-backend"
|
|
28
|
+
tool_surface_restrictions:
|
|
29
|
+
- secrets-paths
|
|
30
|
+
- destructive-shell-ops
|
|
31
|
+
- network-write-unsigned
|
|
32
|
+
system_prompt_template_path: "templates/glm.toml"
|
|
33
|
+
agent_memory_surface: "not-applicable-model-backend (no agent runtime owned by the backend)"
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Install logic for the glm harness adapter.
|
|
4
|
+
|
|
5
|
+
Materializes the GLM backend-provider configuration into the operator-supplied
|
|
6
|
+
project root. GLM (Z.ai) is a model backend an Anthropic-compatible or
|
|
7
|
+
OpenAI-compatible coding agent points at; it exposes no native coding-agent
|
|
8
|
+
config surface, so the adapter writes a single provider file at
|
|
9
|
+
``<project>/.apothem/providers/glm.toml`` recording the backend base URLs, an
|
|
10
|
+
auth-token placeholder, and operator-configurable model-mapping placeholders.
|
|
11
|
+
|
|
12
|
+
The propagation contract is declared in the canonical manifest at
|
|
13
|
+
``src/apothem/lib/propagation-manifest.yaml`` under the ``glm`` key (a single
|
|
14
|
+
operator-owned ``write_text`` operation targeting
|
|
15
|
+
``${PROJECT_ROOT}/.apothem/providers/glm.toml``) and applied by the shared
|
|
16
|
+
driver at ``apothem.harnesses._shared.install_driver``. ``write_text`` writes
|
|
17
|
+
the clean valid-TOML template; the operator owns the file thereafter, so a
|
|
18
|
+
subsequent ``update`` that would overwrite differing operator content routes
|
|
19
|
+
through the per-file destructive-op authorization gate rather than clobbering
|
|
20
|
+
silently. The file carries **no** projected shared-profile content — GLM is a
|
|
21
|
+
model backend, not a rule-bearing coding agent, so there is no instruction
|
|
22
|
+
cohort to fold in, and the markdown-only sentinel-merge machinery (HTML-comment
|
|
23
|
+
delimiters) would corrupt a ``.toml`` surface and is deliberately not used. The
|
|
24
|
+
``${PROJECT_ROOT}`` placeholder is substituted with the operator-supplied
|
|
25
|
+
``--project <path>`` value the CLI threads through; absence of ``--project`` is
|
|
26
|
+
rejected upstream at ``apothem.cli._materialize`` via the ``requires_project``
|
|
27
|
+
opt-in.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
from __future__ import annotations
|
|
31
|
+
|
|
32
|
+
from apothem.harnesses._shared.wrapper_factories import (
|
|
33
|
+
make_project_scope_install,
|
|
34
|
+
make_project_scope_plan,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Manifest harness key for this adapter.
|
|
38
|
+
_HARNESS_NAME: str = "glm"
|
|
39
|
+
|
|
40
|
+
install = make_project_scope_install(
|
|
41
|
+
_HARNESS_NAME,
|
|
42
|
+
error_message="glm adapter requires --project <path>; CLI must thread it through",
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
plan = make_project_scope_plan(_HARNESS_NAME)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# GLM (Z.ai) backend-provider configuration — operator-owned.
|
|
4
|
+
#
|
|
5
|
+
# GLM is a MODEL BACKEND, not a coding-agent tool. Z.ai ships no first-party
|
|
6
|
+
# GLM coding CLI; instead, an Anthropic-compatible or OpenAI-compatible coding
|
|
7
|
+
# agent is pointed at GLM by setting the backend base URL and an auth token.
|
|
8
|
+
# This file records both compatibility surfaces plus operator-configurable
|
|
9
|
+
# model-mapping placeholders so any compatible agent can be wired to the GLM
|
|
10
|
+
# model family. Replace every <...> placeholder; the auth token is a
|
|
11
|
+
# placeholder, never a committed secret.
|
|
12
|
+
#
|
|
13
|
+
# This file is operator-owned. GLM is a model backend, not a rule-bearing
|
|
14
|
+
# coding agent, so Apothem projects NO shared-profile instruction content here
|
|
15
|
+
# (no rules, no opted-in behaviors — a backend exposes none): the file carries
|
|
16
|
+
# only the backend wiring below. Apothem writes this clean template on install;
|
|
17
|
+
# thereafter the file is yours. Your own backend keys and edits route through
|
|
18
|
+
# the per-file confirmation gate on every subsequent `apothem install` /
|
|
19
|
+
# `apothem update` rather than being silently overwritten.
|
|
20
|
+
#
|
|
21
|
+
# Vendor surface conventions are pinned at
|
|
22
|
+
# src/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md (snapshotted against the
|
|
23
|
+
# live Z.ai documentation).
|
|
24
|
+
|
|
25
|
+
[provider]
|
|
26
|
+
# Display label for the GLM model family. No specific model id is pinned here:
|
|
27
|
+
# model ids are version-volatile, so the operator selects one from the current
|
|
28
|
+
# Z.ai catalog at install time (see the [models] table below).
|
|
29
|
+
name = "GLM (Z.ai)"
|
|
30
|
+
family = "glm"
|
|
31
|
+
docs = "https://docs.z.ai/"
|
|
32
|
+
|
|
33
|
+
# Anthropic-compatible backend. Point an Anthropic-compatible coding agent at
|
|
34
|
+
# GLM by exporting these environment variables before launching the agent.
|
|
35
|
+
[backends.anthropic_compatible]
|
|
36
|
+
base_url = "https://api.z.ai/api/anthropic"
|
|
37
|
+
# Environment variables an operator sets so an Anthropic-compatible agent
|
|
38
|
+
# routes to GLM instead of the default Anthropic endpoint.
|
|
39
|
+
[backends.anthropic_compatible.env]
|
|
40
|
+
ANTHROPIC_BASE_URL = "https://api.z.ai/api/anthropic"
|
|
41
|
+
ANTHROPIC_AUTH_TOKEN = "<YOUR_ZAI_API_KEY>"
|
|
42
|
+
API_TIMEOUT_MS = "<TIMEOUT_MS>"
|
|
43
|
+
|
|
44
|
+
# OpenAI-compatible backend. Point an OpenAI-compatible coding agent at GLM by
|
|
45
|
+
# setting its base URL to this endpoint and supplying the API key.
|
|
46
|
+
[backends.openai_compatible]
|
|
47
|
+
base_url = "https://api.z.ai/api/coding/paas/v4"
|
|
48
|
+
[backends.openai_compatible.env]
|
|
49
|
+
OPENAI_BASE_URL = "https://api.z.ai/api/coding/paas/v4"
|
|
50
|
+
OPENAI_API_KEY = "<YOUR_ZAI_API_KEY>"
|
|
51
|
+
|
|
52
|
+
# Operator-configurable model-mapping placeholders. Apothem pins no model id
|
|
53
|
+
# (version-volatile); the operator fills these from the current GLM catalog at
|
|
54
|
+
# https://docs.z.ai/ so the chosen agent's logical roles map to GLM models.
|
|
55
|
+
[models]
|
|
56
|
+
default = "<GLM_MODEL_ID>"
|
|
57
|
+
fast = "<GLM_FAST_MODEL_ID>"
|
|
58
|
+
reasoning = "<GLM_REASONING_MODEL_ID>"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Uninstall logic for the glm 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 = "glm"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def uninstall(output_path: Path, *, project: Path | None = None) -> None:
|
|
15
|
+
"""Remove Apothem-managed GLM provider targets surgically.
|
|
16
|
+
|
|
17
|
+
The Apothem-owned ``glm.toml`` provider file is removed by the shared
|
|
18
|
+
driver, which backs the file up under the Apothem backup root before
|
|
19
|
+
deletion — no whole-file ``.bak`` sibling is left beside the operator's
|
|
20
|
+
project files.
|
|
21
|
+
"""
|
|
22
|
+
install_driver.run_uninstall(
|
|
23
|
+
_HARNESS_NAME,
|
|
24
|
+
project_root=project or output_path.parents[2],
|
|
25
|
+
)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Update logic for the glm harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from apothem.harnesses._shared.wrapper_factories import make_update_project
|
|
8
|
+
from apothem.harnesses.glm.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 glm 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 = "glm"
|
|
10
|
+
|
|
11
|
+
verify = make_verify_project(_HARNESS_NAME)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Hermes Standard Convention Pin
|
|
4
|
+
|
|
5
|
+
## Snapshot
|
|
6
|
+
|
|
7
|
+
- Snapshot date: 2026-06-25
|
|
8
|
+
- Snapshot note: live re-verification — Hermes docs are now also published at `hermes-agent.nousresearch.com/docs`; the `~/.hermes/config.yaml` `delegation` block (subagent model/provider override, bounded), the `skills.config` namespace (skills auto-exposed as commands; `hermes config migrate` / `show`), and `quick_commands` all confirmed current; the commit anchor `355af2c…` is retained as the immutable evidence pin. Previous 2026-05-31.
|
|
9
|
+
- Adapter source: `src/apothem/harnesses/hermes/`
|
|
10
|
+
- Evidence level: vendor-repo pinned (live re-fetch 2026-05-31) at commit
|
|
11
|
+
`355af2c20f495b97c22c9aeb4c227fb0ca010da7` for `~/.hermes/config.yaml`.
|
|
12
|
+
Skills are installable registry packages under `skills.config` (auto-exposed
|
|
13
|
+
as commands) — NOT `skills.external_dirs` (that earlier claim is refuted). MCP
|
|
14
|
+
is the `auxiliary.mcp` config block; sub-agent dispatch is the `delegation`
|
|
15
|
+
block (`delegate_task`, bounded by `max_concurrent_children` /
|
|
16
|
+
`max_spawn_depth`); user commands are `quick_commands` plus skill-exposed
|
|
17
|
+
commands; durable memory lives at `~/.hermes/memories/`. Hermes is a
|
|
18
|
+
multi-platform messaging gateway. No vendor-native UI claim is made here.
|
|
19
|
+
- Official references (commit-permalinked to the pinned SHA):
|
|
20
|
+
- <https://github.com/NousResearch/hermes-agent/blob/355af2c20f495b97c22c9aeb4c227fb0ca010da7/website/docs/user-guide/configuration.md>
|
|
21
|
+
- <https://github.com/NousResearch/hermes-agent/blob/355af2c20f495b97c22c9aeb4c227fb0ca010da7/website/docs/reference/slash-commands.md>
|
|
22
|
+
|
|
23
|
+
## Recommended Postfix Rendering
|
|
24
|
+
|
|
25
|
+
- Status: supported as plain text.
|
|
26
|
+
- Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option label. Hermes adapter output preserves that suffix when prompt text is materialized.
|
|
27
|
+
- 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`.
|
|
28
|
+
|
|
29
|
+
## Long Context and Compaction
|
|
30
|
+
|
|
31
|
+
- Status: profile-managed.
|
|
32
|
+
- 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.
|
|
33
|
+
- 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`.
|
|
34
|
+
|
|
35
|
+
## Large-Codebase Practice Projection
|
|
36
|
+
|
|
37
|
+
- Layered context: declared in `capabilities.yml` under `layered_context_surface`; no vendor-native hierarchy is claimed beyond the adapter's documented file/template surface.
|
|
38
|
+
- LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool surface is pinned.
|
|
39
|
+
- 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.
|
|
40
|
+
|
|
41
|
+
## Plugin-alone Persistence
|
|
42
|
+
|
|
43
|
+
Hermes is a multi-platform messaging gateway with **no vendor plugin or
|
|
44
|
+
extension install surface** that Apothem ships. The adapter materializes
|
|
45
|
+
`~/.hermes/config.yaml` (native MCP under `auxiliary.mcp`) via its materializer
|
|
46
|
+
and keeps non-native cohorts under the Apothem support subtree
|
|
47
|
+
(`~/.hermes/apothem/`). There is no standalone-installable bundle; every artifact
|
|
48
|
+
requires the full `apothem install --harness hermes` engine run.
|
|
49
|
+
|
|
50
|
+
| Artifact class | Persists standalone? | Mechanism / limit |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| Config / MCP | No — requires `apothem install` | `~/.hermes/config.yaml` is materializer-rendered by the engine; nothing persists before that run. |
|
|
53
|
+
| Commands / Skills / Agents / Rules | No — requires `apothem install` | These land under `~/.hermes/apothem/` (support subtree) via the engine; Hermes `skills.config` registry packages are a vendor list the adapter does not author. |
|
|
54
|
+
| Hooks / Settings | No — platform limit | No Apothem-authored hook or settings surface beyond the config materializer. |
|
|
55
|
+
|
|
56
|
+
Platform limit: Hermes ships no marketplace/extension channel, so a plugin-alone
|
|
57
|
+
story does not exist — the engine install is the sole persistence path.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Apothem harness adapter for hermes.
|
|
4
|
+
|
|
5
|
+
Materializes ``~/.hermes/config.yaml`` from the shared profile: the Hermes
|
|
6
|
+
Agent user-global configuration file per the vendor canonical schema at
|
|
7
|
+
https://hermes-agent.nousresearch.com/docs/. The adapter-local
|
|
8
|
+
``STANDARD-CONVENTION-PIN.md`` records the current convention snapshot.
|
|
9
|
+
Delegates installation to :mod:`apothem.harnesses.hermes.materializer`.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
|
|
16
|
+
from apothem.harnesses._shared.wrapper_factories import make_native_config_adapter
|
|
17
|
+
from apothem.harnesses.hermes.install import install as _install
|
|
18
|
+
from apothem.harnesses.hermes.materializer import (
|
|
19
|
+
materialize_native_config as materialize_native_config,
|
|
20
|
+
)
|
|
21
|
+
from apothem.harnesses.hermes.uninstall import uninstall as _uninstall
|
|
22
|
+
from apothem.harnesses.hermes.update import update as _update
|
|
23
|
+
from apothem.harnesses.hermes.verify import verify as _verify
|
|
24
|
+
|
|
25
|
+
HermesAdapter = make_native_config_adapter(
|
|
26
|
+
"hermes",
|
|
27
|
+
target_factory=lambda: Path.home() / ".hermes/config.yaml",
|
|
28
|
+
install_fn=_install,
|
|
29
|
+
uninstall_fn=_uninstall,
|
|
30
|
+
update_fn=_update,
|
|
31
|
+
verify_fn=_verify,
|
|
32
|
+
class_name="HermesAdapter",
|
|
33
|
+
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Per rules/agent-capability-discipline.md §1 / §3 / §7. Hermes (a multi-platform
|
|
4
|
+
# messaging gateway) ratifies ~/.hermes/config.yaml as the canonical surface.
|
|
5
|
+
# Skills are installable registry packages under skills.config (auto-exposed as
|
|
6
|
+
# commands); MCP is the auxiliary.mcp config block; sub-agent dispatch is the
|
|
7
|
+
# delegation block (delegate_task, bounded by max_concurrent_children /
|
|
8
|
+
# max_spawn_depth); user commands are quick_commands plus skill-exposed commands;
|
|
9
|
+
# durable memory lives at ~/.hermes/memories/ (MEMORY.md + USER.md).
|
|
10
|
+
|
|
11
|
+
mcp_servers:
|
|
12
|
+
- config.yaml-auxiliary-mcp-block
|
|
13
|
+
# The adapter's materializer.py authors this MCP block from the shared profile.
|
|
14
|
+
mcp_servers_authored: true
|
|
15
|
+
sub_agent_dispatch: true
|
|
16
|
+
custom_command_support: "quick-commands-and-skill-commands"
|
|
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: "config.yaml (SOUL.md voice anchor) plus skills.config registry skills"
|
|
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: "n/a"
|
|
36
|
+
agent_memory_surface: "~/.hermes/memories/ (MEMORY.md + USER.md, vendor-managed)"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
"""Install logic for the hermes harness adapter."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from apothem.harnesses._shared.wrapper_factories import make_native_config_install
|
|
8
|
+
from apothem.harnesses.hermes.materializer import materialize_native_config
|
|
9
|
+
|
|
10
|
+
_HARNESS_NAME: str = "hermes"
|
|
11
|
+
_HARNESS_ID: str = "hermes"
|
|
12
|
+
|
|
13
|
+
install = make_native_config_install(
|
|
14
|
+
_HARNESS_NAME,
|
|
15
|
+
materialize_native_config,
|
|
16
|
+
harness_id=_HARNESS_ID,
|
|
17
|
+
)
|