atomadic-forge 0.16.2__tar.gz → 0.19.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/ci.yml +21 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/customer-refactor.yml +4 -4
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/CHANGELOG.md +241 -0
- atomadic_forge-0.19.0/PKG-INFO +235 -0
- atomadic_forge-0.19.0/README.md +203 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/01-getting-started.md +4 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/02-commands.md +6 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/AGENTS_GUIDE.md +71 -4
- atomadic_forge-0.19.0/docs/IDE_INTEGRATION.md +83 -0
- atomadic_forge-0.19.0/docs/PROVIDERS.md +153 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/pyproject.toml +17 -2
- atomadic_forge-0.19.0/src/atomadic_forge/a0_qk_constants/config_defaults.py +61 -0
- atomadic_forge-0.19.0/src/atomadic_forge/a0_qk_constants/gen_language.py +192 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +8 -1
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +17 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/call_graph.py +47 -4
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +11 -2
- atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/custom_provider_client.py +259 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +139 -2
- atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/polyglot_classify.py +111 -0
- atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/polyglot_imports.py +208 -0
- atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/polyglot_surface.py +418 -0
- atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/provider_resolver.py +141 -0
- atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +273 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +129 -18
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +4 -1
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/test_selector.py +9 -1
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wire_check.py +92 -4
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_loop.py +137 -15
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +41 -2
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/welcome_feature.py +6 -3
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +12 -6
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +7 -1
- atomadic_forge-0.19.0/src/atomadic_forge/commands/config_cmd.py +322 -0
- atomadic_forge-0.19.0/src/atomadic_forge.egg-info/PKG-INFO +235 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/SOURCES.txt +13 -0
- atomadic_forge-0.19.0/tests/test_custom_provider.py +248 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_evolve_js.py +8 -3
- atomadic_forge-0.19.0/tests/test_mcp_lazy_bootstrap.py +114 -0
- atomadic_forge-0.19.0/tests/test_polyglot_cli_mcp.py +343 -0
- atomadic_forge-0.19.0/tests/test_polyglot_full_pipeline.py +477 -0
- atomadic_forge-0.19.0/tests/test_polyglot_hardening.py +479 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_polyglot_swift_kotlin_go.py +20 -10
- atomadic_forge-0.19.0/tests/test_polyglot_symbol_parity.py +425 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_whoami_cmd.py +8 -2
- atomadic_forge-0.16.2/PKG-INFO +0 -808
- atomadic_forge-0.16.2/README.md +0 -776
- atomadic_forge-0.16.2/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -38
- atomadic_forge-0.16.2/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -116
- atomadic_forge-0.16.2/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -50
- atomadic_forge-0.16.2/src/atomadic_forge/commands/config_cmd.py +0 -145
- atomadic_forge-0.16.2/src/atomadic_forge.egg-info/PKG-INFO +0 -808
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/FUNDING.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/release.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/surface-drift.yml +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/ARCHITECTURE.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/LICENSE +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/MANIFEST.in +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/SECURITY.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/04-llm-loops.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/05-faq.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/COMMANDS.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/FIRST_10_MINUTES.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/FORMALIZATION.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/HIVE_PRIMITIVES.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/HIVE_STATUS.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/MARKET_POSITIONING.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/MIGRATION.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/README.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RECEIPT.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RELAY_PROTOCOL.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RELEASE_MESSAGING.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/ROADMAP.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/WORLD_COLLISION.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/INDEX.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/config.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/setup.cfg +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/_registry.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/create.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/enhancement.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/guard_install.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/handoff.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/harvest.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/hive.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/materialize.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/recon_swarm.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/relay.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/surface.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/welcome.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/wisdom.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_hire_protocol.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_plan.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_plan_pkg_label.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_chat.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_classify_tier_ast_signals.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cli_smoke.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cli_swarm_aliases.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_codex_5_complete.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_compliance_checker.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_config.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_copilots_copilot.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_create_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_dedup_engine.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_demo.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_emergent_synthesize_imports.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_enhancement_proposal.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_exported_api_check.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_auth_a1.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_auth_a2.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_enforce.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_handoff.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_hierarchical_memory.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_hive_sync.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_ling_provider.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_materialize_feature.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_mcp_protocol.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_nexus_bridge.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_plan_apply.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_response_enricher.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_roi_calculator.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sbom_cmd_text_summary.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_smell_score_formula.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_surface_export.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_synergy.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_test_runner.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_trust_gate_response.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_verify_suggested_recipe.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_welcome.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_welcome_enhancements.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wire_certify.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wire_suggest_repairs.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wire_type_checking.py +0 -0
- {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wisdom.py +0 -0
|
@@ -94,3 +94,24 @@ jobs:
|
|
|
94
94
|
with:
|
|
95
95
|
name: atomadic-forge-dist
|
|
96
96
|
path: dist/*
|
|
97
|
+
|
|
98
|
+
metrics:
|
|
99
|
+
name: Metrics freshness
|
|
100
|
+
runs-on: ubuntu-latest
|
|
101
|
+
steps:
|
|
102
|
+
- name: Check out repository
|
|
103
|
+
uses: actions/checkout@v6
|
|
104
|
+
|
|
105
|
+
- name: Set up Python
|
|
106
|
+
uses: actions/setup-python@v6
|
|
107
|
+
with:
|
|
108
|
+
python-version: "3.12"
|
|
109
|
+
cache: pip
|
|
110
|
+
|
|
111
|
+
- name: Install package
|
|
112
|
+
run: |
|
|
113
|
+
python -m pip install --upgrade pip
|
|
114
|
+
python -m pip install -e ".[dev]"
|
|
115
|
+
|
|
116
|
+
- name: Verify forge_metrics.json is current
|
|
117
|
+
run: python scripts/update_metrics.py --check
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Customer Refactor — fully automated $
|
|
1
|
+
# Customer Refactor — fully automated $149/$99 forge.atomadic.tech fulfillment.
|
|
2
2
|
#
|
|
3
3
|
# Triggered by Atomadic's REFACTOR_REPO action via the GitHub
|
|
4
4
|
# repository_dispatch API. The cognition worker POSTs:
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
# The cognition endpoint emails the customer (apology + refund offer) and
|
|
29
29
|
# pings Dad on Discord so the order can be retried manually.
|
|
30
30
|
|
|
31
|
-
name: Customer Refactor (forge.atomadic.tech $
|
|
31
|
+
name: Customer Refactor (forge.atomadic.tech $149/$99 fulfillment)
|
|
32
32
|
|
|
33
33
|
on:
|
|
34
34
|
repository_dispatch:
|
|
@@ -55,7 +55,7 @@ on:
|
|
|
55
55
|
description: "Amount paid (cents)"
|
|
56
56
|
required: false
|
|
57
57
|
type: string
|
|
58
|
-
default: "
|
|
58
|
+
default: "9900"
|
|
59
59
|
|
|
60
60
|
permissions:
|
|
61
61
|
contents: read
|
|
@@ -234,7 +234,7 @@ jobs:
|
|
|
234
234
|
echo " above."
|
|
235
235
|
echo "4. Run your own test suite — Forge does not touch behavior."
|
|
236
236
|
echo ""
|
|
237
|
-
echo "One round of revisions is included with your
|
|
237
|
+
echo "One round of revisions is included with your order."
|
|
238
238
|
echo "Reply to the email you received from Atomadic with anything"
|
|
239
239
|
echo "you want changed."
|
|
240
240
|
echo ""
|
|
@@ -2,6 +2,247 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## v0.19.0 — 2026-05-07 — MCP/CLI parity sweep: 8 tool fixes, call_graph overhaul, smell improvements
|
|
6
|
+
|
|
7
|
+
### fix(recon): MCP recon now returns prior_wisdom
|
|
8
|
+
|
|
9
|
+
`_tool_recon` in `mcp_protocol.py` now injects the same `prior_wisdom`
|
|
10
|
+
field that the CLI has always produced via `recall_for_recon`. Agents
|
|
11
|
+
calling `recon` over MCP now see the top-5 repo-scoped wisdom entries in
|
|
12
|
+
the response — matching CLI parity and giving every MCP agent the
|
|
13
|
+
institutional memory it needs before starting work.
|
|
14
|
+
|
|
15
|
+
### perf(mcp): certify skip-tests, wire dynamic-import allowlist, verify slim summaries
|
|
16
|
+
|
|
17
|
+
**certify**
|
|
18
|
+
|
|
19
|
+
- New `skip_tests: bool = False` parameter on `certify()` — skips the
|
|
20
|
+
pytest run, credits the behavioural axis at 1.0, and adds
|
|
21
|
+
`tests_skipped: true` to the result. Reduces certify time from ~40s
|
|
22
|
+
to ~500ms in CI pipelines that run pytest separately.
|
|
23
|
+
- `pytest_summary` raw dot-string is now stripped from the `test_run`
|
|
24
|
+
dict at source; agents receive structured counts only (no 1500-char dot
|
|
25
|
+
strings).
|
|
26
|
+
- MCP tool schema updated with a `skip_tests` boolean input parameter.
|
|
27
|
+
|
|
28
|
+
**wire**
|
|
29
|
+
|
|
30
|
+
- `_tool_wire` reads `[tool.forge.wire].allowed_dynamic_imports` from
|
|
31
|
+
`pyproject.toml`.
|
|
32
|
+
- Response now includes `new_dynamic_warnings` (count of genuinely new
|
|
33
|
+
warnings) and `whitelisted_dynamic_warnings_count`.
|
|
34
|
+
- `dynamic_import_warnings` array shows only non-whitelisted warnings.
|
|
35
|
+
- `pyproject.toml` gained a `[tool.forge.wire]` section with three
|
|
36
|
+
known-safe dynamic-import entries documented.
|
|
37
|
+
|
|
38
|
+
**verify**
|
|
39
|
+
|
|
40
|
+
- `wire` and `certify` keys in the verify response are now slim
|
|
41
|
+
summaries instead of full payloads (~80% response size reduction).
|
|
42
|
+
- Wire summary: `{verdict, violation_count, auto_fixable, new_dynamic_warnings}`
|
|
43
|
+
- Certify summary: `{score, verdict, blockers, score_components, issues, tests_skipped}`
|
|
44
|
+
- New top-level `wisdom_draft: {insight, tags, command}` field — no
|
|
45
|
+
more digging into the nested `wisdom_capture_prompt` structure.
|
|
46
|
+
- `auto_record_threshold_met` now fires on any PASS verdict, not only
|
|
47
|
+
score-delta events.
|
|
48
|
+
|
|
49
|
+
### fix(batch3): select-tests CLI broken, test discovery gap, certify --skip-tests, context_pack best_next
|
|
50
|
+
|
|
51
|
+
- `select-tests` CLI: Typer group positional `Argument` never parsed — converted
|
|
52
|
+
`intent` to `--intent / -i` option (the only correct workaround for Typer groups).
|
|
53
|
+
- `test_selector`: stem-component token heuristic (≥6-char tokens) now catches
|
|
54
|
+
test files like `test_certify_operational_axis.py` for `certify_checks.py`.
|
|
55
|
+
Before: only exact `test_<stem>.py` mirror matches. After: 7 targeted tests
|
|
56
|
+
for a 3-file change instead of 1.
|
|
57
|
+
- `forge certify --skip-tests` CLI flag (was MCP-only and Python API-only).
|
|
58
|
+
- `context_pack.best_next_action` was always `null` on clean repos — now derives
|
|
59
|
+
a meaningful suggestion from the focus mode (recon / preflight / release / lineage).
|
|
60
|
+
|
|
61
|
+
### fix(batch4): call_graph fully repaired — relative imports + package normalization; smell_scan build/ exclusion
|
|
62
|
+
|
|
63
|
+
**call_graph** — two independent bugs both produced `target_in_graph: false`:
|
|
64
|
+
- `package` defaulted to `project_root.name` (e.g. `"atomadic-forge"` with
|
|
65
|
+
hyphen); Python package is `"atomadic_forge"` — all qualnames in the graph
|
|
66
|
+
were wrong. Fix: `_detect_package_name()` reads `[project].name` from
|
|
67
|
+
`pyproject.toml` and normalizes `"-"` → `"_"`.
|
|
68
|
+
- Relative imports (`from ..a1_at_functions.certify_checks import certify as _certify`)
|
|
69
|
+
resolved to bare paths missing the package prefix (`a1_at_functions.certify_checks.certify`
|
|
70
|
+
instead of `atomadic_forge.a1_at_functions.certify_checks.certify`). Fix:
|
|
71
|
+
`_collect_imports()` now accepts `module_dotted` and resolves `node.level`
|
|
72
|
+
against it. `certify()` callers: 0 → **36**.
|
|
73
|
+
|
|
74
|
+
**smell_scan** — `_walk_functions()` now skips `build/`, `dist/`, `.eggs/`,
|
|
75
|
+
`.tox/`, `node_modules/`. The scanner was walking compiled artifacts in `build/`
|
|
76
|
+
and double-counting every function. Forge repo smell_score: 67.1 → **89.7**.
|
|
77
|
+
|
|
78
|
+
### fix(batch5): trust-gate CLI crash, welcome certify verdict None
|
|
79
|
+
|
|
80
|
+
- `trust_gate_cmd`: `d = verdict.schema` set `d` to the schema-version string,
|
|
81
|
+
not a payload dict; subsequent `.get("safe_to_act")` crashed with
|
|
82
|
+
`AttributeError`. Fix: `dataclasses.asdict(verdict)` for the full dict.
|
|
83
|
+
- `welcome_feature.py`: `scan.certify.verdict` was always `None` because the
|
|
84
|
+
code read `certify_report.get("verdict")` (top-level, doesn't exist in normal
|
|
85
|
+
runs) instead of `certify_report["health_summary"]["verdict"]`. Fixed with
|
|
86
|
+
fallback chain: `health_summary.verdict` (normal) → `top-level verdict` (error
|
|
87
|
+
fallback path).
|
|
88
|
+
|
|
89
|
+
## v0.18.0 — 2026-05-07 flexible LLM providers + VS Code extension + hook repairs
|
|
90
|
+
|
|
91
|
+
### Flexible LLM provider config
|
|
92
|
+
|
|
93
|
+
Forge previously hardcoded six provider classes (Anthropic, OpenAI, Gemini,
|
|
94
|
+
Ollama, OpenRouter, AAAA-Nexus). v0.18.0 adds a generic OpenAI-compatible
|
|
95
|
+
client + a `custom_providers` config field so users can wire ANY
|
|
96
|
+
chat-completions-API service (DeepSeek, Groq, Together, Fireworks, xAI,
|
|
97
|
+
Mistral, Perplexity, Cerebras, Hyperbolic, internal proxies, …) without
|
|
98
|
+
writing Python.
|
|
99
|
+
|
|
100
|
+
- **NEW** `a1.custom_provider_client` — `CustomProviderClient` honours the
|
|
101
|
+
same `LLMClient` Protocol as the hardcoded clients. 11 bundled presets
|
|
102
|
+
(openai, openrouter, deepseek, groq, together, fireworks, xai, mistral,
|
|
103
|
+
perplexity, cerebras, hyperbolic) for one-line setup.
|
|
104
|
+
- **NEW** `a0.config_defaults.custom_providers: list[CustomProviderEntry]`
|
|
105
|
+
— declare any provider as `{name, base_url, model, api_key_env, format}`.
|
|
106
|
+
Resolver looks up config entries first (overrides win over presets), then
|
|
107
|
+
falls back to bundled presets, then to hardcoded backward-compat names.
|
|
108
|
+
- **NEW** CLI: `forge config provider {add | list | remove | presets}`.
|
|
109
|
+
`add` accepts a `--preset` for one-line setup, plus optional
|
|
110
|
+
`--base-url`, `--model`, `--api-key-env`, `--format`, `--global`.
|
|
111
|
+
- **NEW** env-var override on every preset: `FORGE_<NAME>_MODEL` swaps the
|
|
112
|
+
default model without rewriting config (e.g. `FORGE_GROQ_MODEL=…`).
|
|
113
|
+
- 27 new tests in `test_custom_provider.py` pinning the registry,
|
|
114
|
+
validation, network call shape, and resolver fallback chain.
|
|
115
|
+
|
|
116
|
+
### VS Code extension
|
|
117
|
+
|
|
118
|
+
NEW `vscode-extension/` directory ships a complete VS Code package:
|
|
119
|
+
|
|
120
|
+
- **Status bar** — live certify score + wire violation count, click to
|
|
121
|
+
re-verify; turns red below the configured `failUnder` threshold.
|
|
122
|
+
- **Activity-bar panel** — two tree views: Wire Violations (click-through
|
|
123
|
+
to file) + Certify Axes (which of the 9 axes are passing).
|
|
124
|
+
- **10 commands** mapped 1:1 to forge CLI verbs (recon, wire, certify,
|
|
125
|
+
verify, smell, context-pack, enforce --apply, welcome, config wizard,
|
|
126
|
+
mcp serve).
|
|
127
|
+
- **MCP server launcher** — opens a terminal running `forge mcp serve` for
|
|
128
|
+
Claude Code / Cursor / Cowork / Windsurf to attach.
|
|
129
|
+
- **Auto-verify on save** (opt-in) for Python, JavaScript, TypeScript,
|
|
130
|
+
Rust, Go, Swift, Kotlin.
|
|
131
|
+
- Settings: `executable`, `provider`, `failUnder`, `statusBarFormat`,
|
|
132
|
+
`scanLanguages`, `autoVerifyOnSave`.
|
|
133
|
+
- Build: `cd vscode-extension && npm install && npm run package`.
|
|
134
|
+
|
|
135
|
+
### Git hook repairs
|
|
136
|
+
|
|
137
|
+
The shipped `hooks/post-clone`, `hooks/pre-commit`, and `hooks/pre-push`
|
|
138
|
+
all called Forge verbs with the obsolete `--project` / `--suggest_repairs`
|
|
139
|
+
flag style. Verified against the live CLI: every verb takes a positional
|
|
140
|
+
path and uses kebab-case flags.
|
|
141
|
+
|
|
142
|
+
- `hooks/post-clone` — now invokes `forge welcome run --project-root …`
|
|
143
|
+
+ `forge explain-repo` + `forge context-pack --target …`.
|
|
144
|
+
- `hooks/pre-commit` — switched to positional `forge certify PATH`,
|
|
145
|
+
`forge wire SOURCE`, kebab-case `--suggest-repairs` and `--apply`.
|
|
146
|
+
Auto-derives `SRC_ROOT` from the workspace.
|
|
147
|
+
- `hooks/pre-push` — same flag fixes; smoke-tested against the live repo:
|
|
148
|
+
`[forge-wire] PASS — 0 violations, verdict: PASS`.
|
|
149
|
+
|
|
150
|
+
### Documentation
|
|
151
|
+
|
|
152
|
+
- **NEW** `docs/PROVIDERS.md` — full preset table, custom-provider walkthrough,
|
|
153
|
+
resolution-order spec, env-var override matrix.
|
|
154
|
+
- **NEW** `docs/IDE_INTEGRATION.md` — VS Code extension, MCP attach
|
|
155
|
+
configs for Claude Code / Cursor / Cowork / Windsurf / Claude Desktop,
|
|
156
|
+
recommended VS Code settings, hook installation.
|
|
157
|
+
|
|
158
|
+
### Score
|
|
159
|
+
|
|
160
|
+
Self-certify: 100/100, wire 0 violations, all gates green.
|
|
161
|
+
|
|
162
|
+
## v0.17.0 — 2026-05-06 full polyglot pipeline (Rust / Go / Swift / Kotlin native)
|
|
163
|
+
|
|
164
|
+
Forge now operates the full pipeline — recon, wire, certify, scaffold,
|
|
165
|
+
evolve — on **seven languages** with the same depth: **Python, JavaScript,
|
|
166
|
+
TypeScript, Rust, Go, Swift, Kotlin.** What used to be a Python+JS
|
|
167
|
+
classifier is now a true polyglot architecture engine.
|
|
168
|
+
|
|
169
|
+
### Read pass (recon + wire)
|
|
170
|
+
|
|
171
|
+
- **Per-symbol harvest** for every native language. Rust / Go / Swift /
|
|
172
|
+
Kotlin files no longer collapse to a single ``module`` record — every
|
|
173
|
+
public function, struct/class/enum/trait/protocol/interface, method
|
|
174
|
+
(with parent type), and constant is emitted as its own symbol so
|
|
175
|
+
cherry-pick and emergent-compose treat native langs identically to
|
|
176
|
+
Python and JS. See ``a1.polyglot_surface``.
|
|
177
|
+
- **Tier classification by content** (not just by directory). A new
|
|
178
|
+
``a1.polyglot_classify.classify_native_tier`` runs a 7-rule cascade
|
|
179
|
+
(path tier > main entry > I/O imports > stateful types > pure fns >
|
|
180
|
+
consts > a3 fallback) over each parsed surface.
|
|
181
|
+
- **Wire upward-import scan** for Rust ``use crate::aN_…``, Go
|
|
182
|
+
``import "…/aN_…"``, Swift ``import aN_…``, Kotlin
|
|
183
|
+
``import com.x.aN_…``. ``_tier_of_specifier`` now normalises ``::``
|
|
184
|
+
and ``.`` to ``/`` so every language's import path resolves to the
|
|
185
|
+
same tier dictionary. Violations carry the standard F0040–F0049
|
|
186
|
+
codes and ``auto_fixable`` is widened to all 7 langs.
|
|
187
|
+
- **Effect detection** (pure / state / io) per file, derived from
|
|
188
|
+
surface signals (presence of state-bearing types, I/O imports).
|
|
189
|
+
|
|
190
|
+
### Write pass (scaffold + emit)
|
|
191
|
+
|
|
192
|
+
- ``Language`` literal extends to ``"rust" | "go" | "swift" | "kotlin"``
|
|
193
|
+
with full per-language tables: ``PKG_ROOT_TEMPLATE``,
|
|
194
|
+
``ALLOWED_FILE_EXTS``, ``MAIN_EXT``, plus new ``EMITS_CARGO_TOML``,
|
|
195
|
+
``EMITS_GO_MOD``, ``EMITS_PACKAGE_SWIFT``, ``EMITS_BUILD_GRADLE``,
|
|
196
|
+
``EMITS_TIER_MOD_RS``.
|
|
197
|
+
- New ``a1.scaffold_polyglot`` renderers produce idiomatic shells:
|
|
198
|
+
Cargo crate (Cargo.toml + src/lib.rs + per-tier mod.rs); Go module
|
|
199
|
+
(go.mod + per-tier ``<tier>.go`` package decls); SwiftPM target
|
|
200
|
+
(Package.swift + Sources/<pkg>/<tier>/); Gradle library
|
|
201
|
+
(build.gradle.kts + settings.gradle.kts +
|
|
202
|
+
src/main/kotlin/<pkg>/<tier>/). Each renderer is pure (string in,
|
|
203
|
+
string out) so the emit branch in ``forge_loop._scaffold_package``
|
|
204
|
+
stays a single dispatcher.
|
|
205
|
+
- ``normalize_language`` accepts ``rs``/``rust``, ``go``/``golang``,
|
|
206
|
+
``swift``, ``kt``/``kotlin``.
|
|
207
|
+
|
|
208
|
+
### Hardening
|
|
209
|
+
|
|
210
|
+
- 156 polyglot tests across four files: ``test_polyglot_full_pipeline``
|
|
211
|
+
(registry + scaffold), ``test_polyglot_symbol_parity`` (per-symbol
|
|
212
|
+
harvest contract), ``test_polyglot_hardening`` (malformed source +
|
|
213
|
+
generics + async + extensions + idiomatic Rust crate fixture), and
|
|
214
|
+
``test_polyglot_cli_mcp`` (CLI ↔ MCP equivalence on synthetic Rust /
|
|
215
|
+
Go / Swift / Kotlin repos).
|
|
216
|
+
- Whoami test fixture now removes ``FORGE_MASTER_API_KEY`` in addition
|
|
217
|
+
to ``FORGE_API_KEY`` so dev-shell test runs are hermetic. Was the
|
|
218
|
+
last 3 failures keeping certify off 100/100.
|
|
219
|
+
- ``mcp_protocol`` lazy a3-bootstrap. Downstream consumers that
|
|
220
|
+
imported ``a1.mcp_protocol`` directly (without going through
|
|
221
|
+
``forge mcp serve``) used to get ``wired:false`` stubs from
|
|
222
|
+
registered tools (``verify``, ``emergent_scan``, ``synergy_scan``,
|
|
223
|
+
``handoff_list``, ``wisdom_query``, …) until they remembered to
|
|
224
|
+
``import atomadic_forge.a3_og_features.mcp_server`` themselves.
|
|
225
|
+
Fixed: every wrapper now calls ``_bootstrap_a3_handlers()`` which
|
|
226
|
+
performs an idempotent ``importlib.import_module`` of the a3 server
|
|
227
|
+
on first call. The static a1↔a3 import graph stays untouched (the
|
|
228
|
+
upward-only law is preserved); subsequent calls are a single
|
|
229
|
+
boolean check. Pinned by ``tests/test_mcp_lazy_bootstrap.py``.
|
|
230
|
+
|
|
231
|
+
### Release-time bug fixes
|
|
232
|
+
|
|
233
|
+
- ``scripts/update_metrics.py`` — hardcoded language list updated to
|
|
234
|
+
the full 7-language polyglot set; ``sys.stdout.reconfigure('utf-8')``
|
|
235
|
+
guard added so the script's checkmarks don't crash on Windows
|
|
236
|
+
cp1252 (was breaking ``make release`` step 2).
|
|
237
|
+
- ``scripts/version-sync-check.sh`` — paths are now passed to embedded
|
|
238
|
+
Python via ``sys.argv[1]`` instead of interpolated into source code,
|
|
239
|
+
so ``!!AtomadicStandard``-style paths can't be misread as Python
|
|
240
|
+
escape sequences (was breaking the cross-repo sync check on Windows).
|
|
241
|
+
|
|
242
|
+
### Score
|
|
243
|
+
|
|
244
|
+
Self-certify: **100/100**, wire 0 violations, 1460/1460 tests passing.
|
|
245
|
+
|
|
5
246
|
## v0.16.2 — 2026-05-06 welcome scope guard + Boris pre-demo hardening
|
|
6
247
|
|
|
7
248
|
Pre-Boris-demo stress test surfaced a single class of welcome failure:
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: atomadic-forge
|
|
3
|
+
Version: 0.19.0
|
|
4
|
+
Summary: Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Rust · Go · Swift · Kotlin) architecture guardian for AI-generated code.
|
|
5
|
+
Author: Atomadic
|
|
6
|
+
License-Expression: BUSL-1.1
|
|
7
|
+
Keywords: atomadic,ass-ade,monadic,architecture,forge,code-quality,ai,agents,javascript,typescript,polyglot
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
14
|
+
Requires-Python: >=3.10
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: click<9,>=8.1
|
|
18
|
+
Requires-Dist: typer<1,>=0.15
|
|
19
|
+
Requires-Dist: rich<16,>=14
|
|
20
|
+
Requires-Dist: pyyaml<7,>=6
|
|
21
|
+
Provides-Extra: dev
|
|
22
|
+
Requires-Dist: pytest>=7; extra == "dev"
|
|
23
|
+
Requires-Dist: import-linter<3,>=2.0; extra == "dev"
|
|
24
|
+
Requires-Dist: ruff>=0.4; extra == "dev"
|
|
25
|
+
Requires-Dist: build<2,>=1; extra == "dev"
|
|
26
|
+
Requires-Dist: twine<7,>=5; extra == "dev"
|
|
27
|
+
Requires-Dist: tomli>=2; python_version < "3.11" and extra == "dev"
|
|
28
|
+
Requires-Dist: cryptography<48,>=42; extra == "dev"
|
|
29
|
+
Provides-Extra: signing
|
|
30
|
+
Requires-Dist: cryptography<48,>=42; extra == "signing"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
<p align="center">
|
|
34
|
+
<img src="assets/Atomadic-Forge-01.png" alt="Atomadic Forge" width="600"/>
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<h1 align="center">Atomadic Forge</h1>
|
|
38
|
+
|
|
39
|
+
<p align="center">
|
|
40
|
+
<strong>Spaghetti is Toast.</strong><br/>
|
|
41
|
+
The architecture enforcement engine for AI-generated code.
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
<p align="center">
|
|
45
|
+
<a href="https://pypi.org/project/atomadic-forge/"><img src="https://img.shields.io/pypi/v/atomadic-forge.svg" alt="PyPI"/></a>
|
|
46
|
+
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/Python-3.10%2B-blue.svg" alt="Python 3.10+"/></a>
|
|
47
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-BSL--1.1-yellow.svg" alt="License: BSL-1.1"/></a>
|
|
48
|
+
<a href="https://github.com/atomadictech/atomadic-forge/actions/workflows/ci.yml"><img src="https://github.com/atomadictech/atomadic-forge/actions/workflows/ci.yml/badge.svg" alt="CI"/></a>
|
|
49
|
+
<a href="docs/SHOWCASE.md"><img src="https://img.shields.io/badge/forge_certify-100%2F100-brightgreen" alt="Forge certify"/></a>
|
|
50
|
+
<a href="https://registry.modelcontextprotocol.io/"><img src="https://img.shields.io/badge/MCP-Official_Registry-blue" alt="MCP Registry"/></a>
|
|
51
|
+
</p>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
AI agents write code **10x faster** than humans can review it. Pattern violations went from 5% to 60% post-LLM. Your codebase is accumulating architectural debt at machine speed.
|
|
56
|
+
|
|
57
|
+
**Forge fixes that.**
|
|
58
|
+
|
|
59
|
+
- **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
|
|
60
|
+
- **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
|
|
61
|
+
- **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language.
|
|
62
|
+
- **Bring your own LLM.** Built-in presets for OpenAI, Anthropic, Gemini, OpenRouter, DeepSeek, Groq, Together, Fireworks, xAI, Mistral, Perplexity, Cerebras, Hyperbolic, AAAA-Nexus, and Ollama — plus `forge config provider add` for any custom OpenAI-compatible endpoint. See [docs/PROVIDERS.md](docs/PROVIDERS.md).
|
|
63
|
+
- **IDE-native.** VS Code extension (`vscode-extension/`), MCP server for Claude Code / Cursor / Cowork / Windsurf, four ready-to-use Claude Code skills. See [docs/IDE_INTEGRATION.md](docs/IDE_INTEGRATION.md).
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Quick Start
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pip install atomadic-forge # install
|
|
71
|
+
forge recon . # scan any repo (free, read-only)
|
|
72
|
+
forge certify . --print-card # get your architecture score (0-100)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
That's it. No API key, no config, no writes.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## What Forge Does
|
|
80
|
+
|
|
81
|
+
Forge enforces a **5-tier monadic law** — every source file belongs to exactly one tier, tiers compose upward only. AI agents generate code fast; Forge gives it gravity.
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
a4_orchestration/ <- CLI, entry points
|
|
85
|
+
|
|
|
86
|
+
a3_features/ <- Feature modules
|
|
87
|
+
|
|
|
88
|
+
a2_composites/ <- Stateful classes
|
|
89
|
+
|
|
|
90
|
+
a1_functions/ <- Pure functions
|
|
91
|
+
|
|
|
92
|
+
a0_constants/ <- Constants, enums (zero logic)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Before Forge:**
|
|
96
|
+
```
|
|
97
|
+
62 import violations · certify score 23/100 · "it works on my machine"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**After `forge auto`:**
|
|
101
|
+
```
|
|
102
|
+
0 violations · certify 100/100 · signed conformance receipt · ship it
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## CLI Commands
|
|
108
|
+
|
|
109
|
+
### Core Pipeline
|
|
110
|
+
|
|
111
|
+
| Command | What it does |
|
|
112
|
+
|---------|-------------|
|
|
113
|
+
| `forge auto` | **Flagship.** scout -> cherry -> assimilate -> wire -> certify -> receipt |
|
|
114
|
+
| `forge recon` | Scan a repo — classify every symbol, show tier distribution |
|
|
115
|
+
| `forge wire` | Detect upward-import violations |
|
|
116
|
+
| `forge certify` | Architecture score (0-100): docs, tests, tier layout, imports |
|
|
117
|
+
| `forge verify` | Composite ship gate: PASS / REFINE / FAIL |
|
|
118
|
+
| `forge enforce` | Apply mechanical fixes (rollback-safe) |
|
|
119
|
+
| `forge status` | Wire + certify in one call |
|
|
120
|
+
| `forge welcome` | First-call handshake — score + guidance in one response |
|
|
121
|
+
|
|
122
|
+
### Quality & Intelligence
|
|
123
|
+
|
|
124
|
+
| Command | What it does |
|
|
125
|
+
|---------|-------------|
|
|
126
|
+
| `forge smell` | Code smell scan: cyclomatic complexity, long functions, duplicates |
|
|
127
|
+
| `forge call-graph` | AST call graph for any symbol |
|
|
128
|
+
| `forge cna-check` | Compose-Not-Add — flag duplicates before writing |
|
|
129
|
+
| `forge trust-gate` | LLM response hallucination detector |
|
|
130
|
+
| `forge preflight` | Pre-edit guardrail: tier + import + scope check |
|
|
131
|
+
|
|
132
|
+
### Composition & Multi-Repo
|
|
133
|
+
|
|
134
|
+
| Command | What it does |
|
|
135
|
+
|---------|-------------|
|
|
136
|
+
| `forge create` | Intent + seed repos -> new pip-installable package |
|
|
137
|
+
| `forge emergent scan` | Cross-domain composition discovery |
|
|
138
|
+
| `forge recon-swarm` | Walk N repos, unified report |
|
|
139
|
+
| `forge harvest` | Cross-repo capability gap finder |
|
|
140
|
+
|
|
141
|
+
### Planning & LLM Loops
|
|
142
|
+
|
|
143
|
+
| Command | What it does |
|
|
144
|
+
|---------|-------------|
|
|
145
|
+
| `forge iterate` | LLM loop: intent -> code -> absorb -> score -> iterate |
|
|
146
|
+
| `forge evolve` | Recursive improvement over N rounds |
|
|
147
|
+
| `forge plan` | Bounded execution plan with risk + rollback |
|
|
148
|
+
| `forge chat` | Terminal copilot over forge docs |
|
|
149
|
+
|
|
150
|
+
**26+ CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## MCP Server — 66 Tools
|
|
155
|
+
|
|
156
|
+
Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aider, Devin, or any MCP-compatible agent:
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"mcpServers": {
|
|
161
|
+
"atomadic-forge": {
|
|
162
|
+
"command": "forge",
|
|
163
|
+
"args": ["mcp", "serve", "--project", "/path/to/your/repo"]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**66 tools locally. 40 on the deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp).** Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
|
|
170
|
+
|
|
171
|
+
Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welcome`
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## By the Numbers
|
|
176
|
+
|
|
177
|
+
| Metric | Value |
|
|
178
|
+
|--------|-------|
|
|
179
|
+
| Tests | **1,291 passing** |
|
|
180
|
+
| MCP tools | **66** |
|
|
181
|
+
| Source files | **193** |
|
|
182
|
+
| CLI verbs | **26+** |
|
|
183
|
+
| Lean4 formal proofs | **624** (mathematically verified core logic) |
|
|
184
|
+
| Languages | Python, JS/TS, Swift, Kotlin, Go |
|
|
185
|
+
| Infrastructure cost | **$5/mo** |
|
|
186
|
+
| Self-score | **100/100** certify, 0 wire violations |
|
|
187
|
+
| License | BSL 1.1 (Apache 2.0 after 2030-04-27) |
|
|
188
|
+
|
|
189
|
+
Forge eats its own cooking. Every CI run scores itself.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Pricing
|
|
194
|
+
|
|
195
|
+
| Tier | Price | What you get |
|
|
196
|
+
|------|-------|-------------|
|
|
197
|
+
| **Free** | $0 | OSS, 25 calls/day, read-only tools |
|
|
198
|
+
| **One-Time Refactor** | ~~$149~~ **$99** | We run `auto` on your repo -> PR targeting 100/100. One revision included. |
|
|
199
|
+
| **Starter** | $79/mo | All 66 tools, 5k calls/mo, signed receipts, custom recipes |
|
|
200
|
+
| **Pro** | $249/mo | + notarization, compliance attestations, cross-repo telemetry |
|
|
201
|
+
| **Founding Member** | $999/yr | Everything. Forever. First 25 only. |
|
|
202
|
+
| **Enterprise** | Custom | BSL commercial license, SSO, self-host, SLA |
|
|
203
|
+
|
|
204
|
+
> **Launch special:** The one-time refactor is **$99** (normally $149). See what Forge does to your codebase before committing to a subscription.
|
|
205
|
+
|
|
206
|
+
[Get started ->](https://forge.atomadic.tech/pricing)
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Docs
|
|
211
|
+
|
|
212
|
+
| | |
|
|
213
|
+
|---|---|
|
|
214
|
+
| [First 10 Minutes](docs/FIRST_10_MINUTES.md) | Install, demo, first scan |
|
|
215
|
+
| [Tutorials](docs/tutorials/) | Quickstart, 5-tier law, LLM integration |
|
|
216
|
+
| [Architecture](ARCHITECTURE.md) | How Forge itself is built |
|
|
217
|
+
| [CI/CD Integration](docs/CI_CD.md) | GitHub Actions, GitLab CI, pre-commit |
|
|
218
|
+
| [Showcase](docs/SHOWCASE.md) | Live run trajectories |
|
|
219
|
+
| [Changelog](CHANGELOG.md) | Version history |
|
|
220
|
+
| [Contributing](CONTRIBUTING.md) | How to extend Forge |
|
|
221
|
+
| [Security](SECURITY.md) | Vulnerability reporting |
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## License
|
|
226
|
+
|
|
227
|
+
[Business Source License 1.1](LICENSE). Free for non-production use. Commercial license for production — see [COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md). Change Date: 2030-04-27 -> Apache 2.0.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
<p align="center">
|
|
232
|
+
<a href="https://forge.atomadic.tech">forge.atomadic.tech</a> — paste any GitHub repo, watch the analysis in real time.
|
|
233
|
+
<br/><br/>
|
|
234
|
+
<a href="https://invest.atomadic.tech">Interested in investing?</a>
|
|
235
|
+
</p>
|