@event4u/agent-config 8.4.1 → 8.5.0
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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +67 -0
- package/README.md +17 -5
- package/dist/agent-src/README.md +1 -1
- package/dist/agent-src/commands/{analyze-reference-repo.md → analyze/reference-repo.md} +3 -1
- package/dist/agent-src/commands/analyze.md +9 -6
- package/dist/agent-src/commands/{bug-fix.md → bug/fix.md} +3 -1
- package/dist/agent-src/commands/{bug-investigate.md → bug/investigate.md} +4 -2
- package/dist/agent-src/commands/bug.md +59 -0
- package/dist/agent-src/commands/{set-cost-profile.md → cost/profile.md} +9 -6
- package/dist/agent-src/commands/{cost-report.md → cost/report.md} +18 -17
- package/dist/agent-src/commands/cost.md +57 -0
- package/dist/agent-src/commands/evals/{review-changes.json → review.json} +12 -8
- package/dist/agent-src/commands/{quality-fix.md → fix/quality.md} +5 -2
- package/dist/agent-src/commands/fix.md +7 -4
- package/dist/agent-src/commands/optimize/project.md +250 -0
- package/dist/agent-src/commands/{optimize-prompt.md → optimize/prompt.md} +3 -2
- package/dist/agent-src/commands/optimize.md +17 -12
- package/dist/agent-src/commands/{package-reset.md → package/reset.md} +2 -0
- package/dist/agent-src/commands/{package-test.md → package/test.md} +3 -1
- package/dist/agent-src/commands/package.md +56 -0
- package/dist/agent-src/commands/{project-analyze.md → project/analyze.md} +10 -8
- package/dist/agent-src/commands/{project-health.md → project/health.md} +2 -0
- package/dist/agent-src/commands/project.md +60 -0
- package/dist/agent-src/commands/{review-changes.md → review/changes.md} +26 -24
- package/dist/agent-src/commands/{review-routing.md → review/routing.md} +21 -17
- package/dist/agent-src/commands/review.md +61 -0
- package/dist/agent-src/commands/security-audit-config.md +24 -23
- package/dist/agent-src/commands/{sync-agent-settings.md → sync/agent-settings.md} +11 -7
- package/dist/agent-src/commands/{sync-gitignore → sync/gitignore}/fix.md +36 -27
- package/dist/agent-src/commands/{sync-gitignore.md → sync/gitignore.md} +22 -21
- package/dist/agent-src/commands/sync.md +58 -0
- package/dist/agent-src/commands/{e2e-heal.md → tests/e2e-heal.md} +5 -2
- package/dist/agent-src/commands/{e2e-plan.md → tests/e2e-plan.md} +5 -2
- package/dist/agent-src/commands/tests.md +11 -5
- package/dist/agent-src/contexts/augment-infrastructure.md +3 -3
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/skills-and-commands.md +2 -2
- package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
- package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/templates/agent-settings.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
- package/dist/cli/commands/config.js +44 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/uiServe.js +1 -0
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/help.js +38 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/initRouting.js +16 -1
- package/dist/cli/initRouting.js.map +1 -1
- package/dist/cli/main.js +43 -37
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +45 -44
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +419 -210
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +31 -25
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +30 -24
- package/dist/install/install.mjs +6064 -159
- package/dist/install/selectedTools.js +39 -10
- package/dist/install/selectedTools.js.map +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/server/app.js +15 -3
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/ping.js +16 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +42 -6
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/settingsChanges.js +55 -0
- package/dist/server/routes/settingsChanges.js.map +1 -0
- package/dist/server/routes/userMd.js +7 -2
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +76 -14
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/writeRoot.js +17 -0
- package/dist/server/writeRoot.js.map +1 -1
- package/dist/shared/settingsSurface.js +120 -0
- package/dist/shared/settingsSurface.js.map +1 -0
- package/dist/ui/assets/index-BPFMZWUs.css +1 -0
- package/dist/ui/assets/index-BiEZiZ31.js +40 -0
- package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
- package/dist/ui/index.html +15 -2
- package/docs/CLAIMS.md +20 -15
- package/docs/architecture.md +1 -1
- package/docs/catalog.md +37 -31
- package/docs/command-flows.md +22 -16
- package/docs/contracts/command-clusters.md +39 -9
- package/docs/contracts/file-ownership-matrix.json +21 -0
- package/docs/contracts/frontmatter-contract.md +1 -1
- package/docs/contracts/gui-wizard.md +16 -4
- package/docs/contracts/iron-law-overrides.txt +1 -0
- package/docs/contracts/rule-classification.md +2 -2
- package/docs/contracts/settings-api.md +58 -2
- package/docs/contracts/surface-matrix.md +5 -0
- package/docs/cookbook.md +7 -7
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
- package/docs/decisions/INDEX.md +2 -0
- package/docs/featured-commands.md +1 -1
- package/docs/featured-skills.md +4 -4
- package/docs/flows.md +2 -2
- package/docs/getting-started-by-role.md +1 -1
- package/docs/getting-started-laravel.md +1 -1
- package/docs/getting-started.md +6 -3
- package/docs/governance-advantage.md +1 -1
- package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
- package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
- package/docs/proof.md +11 -2
- package/package.json +3 -1
- package/src/agent-src/README.md +1 -1
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
- package/src/config/agent-settings.template.yml +1 -1
- package/src/install/selectedTools.ts +38 -10
- package/src/scripts/_cli/cmd_converge.ts +38 -0
- package/src/scripts/_cli/cmd_doctor.ts +113 -2
- package/src/scripts/_cli/cmd_explain.ts +2 -2
- package/src/scripts/_cli/cmd_export.ts +3 -3
- package/src/scripts/_cli/cmd_fleet.ts +13 -1
- package/src/scripts/_cli/cmd_migrate.ts +3 -3
- package/src/scripts/_cli/cmd_prune.ts +2 -2
- package/src/scripts/_cli/cmd_refresh.ts +4 -4
- package/src/scripts/_cli/cmd_settings_check.ts +2 -2
- package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
- package/src/scripts/_cli/cmd_sync.ts +2 -2
- package/src/scripts/_cli/cmd_uninstall.ts +2 -2
- package/src/scripts/_cli/cmd_update.ts +8 -8
- package/src/scripts/_cli/cmd_upgrade.ts +4 -3
- package/src/scripts/_cli/cmd_validate.ts +3 -3
- package/src/scripts/_cli/cmd_versions.ts +2 -2
- package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
- package/src/scripts/_cli/explain_last/council.ts +2 -2
- package/src/scripts/_cli/explain_last/halt.ts +2 -2
- package/src/scripts/_cli/explain_last/index.ts +2 -2
- package/src/scripts/_cli/explain_last/inputs.ts +4 -4
- package/src/scripts/_cli/explain_last/memory.ts +2 -2
- package/src/scripts/_cli/explain_last/provider.ts +2 -2
- package/src/scripts/_cli/explain_last/render.ts +2 -2
- package/src/scripts/_cli/explain_last/route.ts +2 -2
- package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
- package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
- package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
- package/src/scripts/_dispatch.bash +20 -1
- package/src/scripts/_lib/agent_settings.ts +1 -1
- package/src/scripts/_lib/agent_src.ts +7 -7
- package/src/scripts/_lib/agents_overlay.ts +1 -1
- package/src/scripts/_lib/bench_ab_cache.ts +1 -1
- package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
- package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
- package/src/scripts/_lib/bench_cost.ts +1 -1
- package/src/scripts/_lib/bench_quality.ts +3 -3
- package/src/scripts/_lib/bench_report.ts +4 -4
- package/src/scripts/_lib/bench_telegraph.ts +1 -1
- package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
- package/src/scripts/_lib/changelog_eras.ts +1 -1
- package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
- package/src/scripts/_lib/cli_wrapper.ts +1 -1
- package/src/scripts/_lib/fs_atomic.ts +1 -1
- package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
- package/src/scripts/_lib/install_layout.ts +1 -1
- package/src/scripts/_lib/install_regenerator.ts +1 -1
- package/src/scripts/_lib/installed_lock.ts +1 -1
- package/src/scripts/_lib/installed_tools.ts +1 -1
- package/src/scripts/_lib/json_pointers.ts +1 -1
- package/src/scripts/_lib/knowledge_global.ts +1 -1
- package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/link_crypto.ts +4 -4
- package/src/scripts/_lib/linked_projects.ts +4 -4
- package/src/scripts/_lib/model_tier.ts +1 -1
- package/src/scripts/_lib/module_detection.ts +2 -2
- package/src/scripts/_lib/pin_resolver.ts +1 -1
- package/src/scripts/_lib/script_output.ts +1 -1
- package/src/scripts/_lib/security_lint.ts +1 -1
- package/src/scripts/_lib/surface_tiers.ts +1 -1
- package/src/scripts/_lib/text_similarity.ts +1 -1
- package/src/scripts/_lib/update_check.ts +2 -2
- package/src/scripts/_lib/user_global_paths.ts +1 -1
- package/src/scripts/_lib/value_ladder.ts +1 -1
- package/src/scripts/_lib/value_report.ts +1 -1
- package/src/scripts/_lib/zip_min.ts +2 -2
- package/src/scripts/adoption_report.ts +3 -3
- package/src/scripts/adoption_snapshot.ts +3 -3
- package/src/scripts/adoption_status.ts +2 -2
- package/src/scripts/adr/regenerate_index.ts +3 -3
- package/src/scripts/ai_council/_default_prices.ts +2 -3
- package/src/scripts/ai_council/advisors.ts +1 -1
- package/src/scripts/ai_council/airgap.ts +1 -1
- package/src/scripts/ai_council/budget_guard.ts +1 -1
- package/src/scripts/ai_council/bundler.ts +1 -1
- package/src/scripts/ai_council/cli_hints.ts +1 -1
- package/src/scripts/ai_council/clients.ts +5 -5
- package/src/scripts/ai_council/compile_corpus.ts +1 -1
- package/src/scripts/ai_council/confidence_gate.ts +1 -1
- package/src/scripts/ai_council/config.ts +1 -1
- package/src/scripts/ai_council/consensus.ts +1 -1
- package/src/scripts/ai_council/events_log.ts +1 -1
- package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
- package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
- package/src/scripts/ai_council/low_impact_intake.ts +1 -1
- package/src/scripts/ai_council/modes.ts +1 -1
- package/src/scripts/ai_council/orchestrator.ts +3 -3
- package/src/scripts/ai_council/pricing.ts +2 -2
- package/src/scripts/ai_council/probation_gate.ts +2 -2
- package/src/scripts/ai_council/project_context.ts +1 -1
- package/src/scripts/ai_council/prompts.ts +1 -1
- package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
- package/src/scripts/ai_council/session.ts +1 -1
- package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
- package/src/scripts/ai_council/solo_dispatch.ts +1 -1
- package/src/scripts/analysis_freshness.ts +2 -2
- package/src/scripts/annotate_discovery.ts +2 -2
- package/src/scripts/apply_modules_config.ts +2 -2
- package/src/scripts/audit_adr_coverage.ts +3 -3
- package/src/scripts/audit_auto_rules.ts +2 -2
- package/src/scripts/audit_cloud_compatibility.ts +3 -3
- package/src/scripts/audit_command_surface.ts +2 -2
- package/src/scripts/audit_initial_context.ts +7 -6
- package/src/scripts/audit_likelihood.ts +5 -5
- package/src/scripts/audit_mcp_tools.ts +3 -3
- package/src/scripts/audit_overlap.ts +2 -2
- package/src/scripts/audit_skill_descriptions.ts +2 -2
- package/src/scripts/audit_skill_overlap.ts +5 -5
- package/src/scripts/audit_user_type_axis.ts +4 -4
- package/src/scripts/backfill_model_tier.ts +1 -1
- package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
- package/src/scripts/bench_ab_clone.ts +2 -2
- package/src/scripts/bench_ab_diff.ts +3 -3
- package/src/scripts/bench_ab_integrity.ts +2 -2
- package/src/scripts/bench_ab_run.ts +4 -4
- package/src/scripts/bench_ab_task_runner.ts +1 -1
- package/src/scripts/bench_ab_tracka_run.ts +2 -2
- package/src/scripts/bench_ab_v2_run.ts +1 -1
- package/src/scripts/bench_ab_v2_stats.ts +2 -2
- package/src/scripts/bench_baseline_ready.ts +1 -1
- package/src/scripts/bench_condense_memory.ts +4 -4
- package/src/scripts/bench_drift_check.ts +3 -3
- package/src/scripts/bench_per_tool.ts +1 -1
- package/src/scripts/bench_rtk_savings.ts +4 -4
- package/src/scripts/bench_run.ts +4 -4
- package/src/scripts/bench_runner.ts +1 -1
- package/src/scripts/build_cloud_bundle.ts +3 -3
- package/src/scripts/build_discovery_manifest.ts +13 -15
- package/src/scripts/build_linear_digest.ts +2 -2
- package/src/scripts/build_mcp_registry_manifest.ts +3 -3
- package/src/scripts/build_proof.ts +6 -0
- package/src/scripts/build_rule_trigger_matrix.ts +2 -2
- package/src/scripts/capture_showcase_session.ts +3 -3
- package/src/scripts/chat_history.ts +1 -1
- package/src/scripts/check_always_budget.ts +1 -1
- package/src/scripts/check_artefact_checksums.ts +4 -4
- package/src/scripts/check_artefact_count_messaging.ts +197 -0
- package/src/scripts/check_augment_description_cap.ts +3 -3
- package/src/scripts/check_augmentignore.ts +1 -1
- package/src/scripts/check_beta_review_markers.ts +3 -3
- package/src/scripts/check_bite_sized_granularity.ts +1 -1
- package/src/scripts/check_cluster_patterns.ts +47 -3
- package/src/scripts/check_command_count_messaging.ts +2 -2
- package/src/scripts/check_condensation.ts +2 -2
- package/src/scripts/check_condensed_paths.ts +6 -6
- package/src/scripts/check_context_paths.ts +1 -1
- package/src/scripts/check_council_config_location.ts +3 -3
- package/src/scripts/check_council_layout.ts +2 -2
- package/src/scripts/check_council_references.ts +2 -2
- package/src/scripts/check_discovery_determinism.ts +3 -3
- package/src/scripts/check_gate_paths.ts +4 -4
- package/src/scripts/check_iron_law_prominence.ts +2 -2
- package/src/scripts/check_kernel_rule_bundle.ts +3 -3
- package/src/scripts/check_knowledge_cards.ts +4 -4
- package/src/scripts/check_knowledge_pages.ts +1 -1
- package/src/scripts/check_md_language.ts +3 -3
- package/src/scripts/check_memory.ts +3 -3
- package/src/scripts/check_memory_proposal.ts +2 -2
- package/src/scripts/check_module_management_neutral.ts +1 -1
- package/src/scripts/check_no_conflict_markers.ts +1 -1
- package/src/scripts/check_no_external_sources.ts +1 -1
- package/src/scripts/check_no_local_settings_committed.ts +2 -2
- package/src/scripts/check_no_new_legacy_path.ts +3 -3
- package/src/scripts/check_no_roadmap_refs.ts +3 -3
- package/src/scripts/check_one_off_location.ts +3 -3
- package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
- package/src/scripts/check_portability.ts +3 -3
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_public_catalog_links.ts +1 -1
- package/src/scripts/check_public_links.ts +2 -2
- package/src/scripts/check_references.ts +3 -3
- package/src/scripts/check_release_includes_discovery.ts +2 -2
- package/src/scripts/check_release_pr_shape.ts +2 -2
- package/src/scripts/check_release_published.ts +1 -1
- package/src/scripts/check_release_trunk_sync.ts +3 -3
- package/src/scripts/check_reply_consistency.ts +1 -1
- package/src/scripts/check_roadmap_trackable.ts +2 -2
- package/src/scripts/check_role_doc_links.ts +2 -2
- package/src/scripts/check_safety_floor_untouched.ts +3 -3
- package/src/scripts/check_skill_requires.ts +2 -2
- package/src/scripts/check_structural_breaking.ts +2 -2
- package/src/scripts/check_surface_tiers.ts +2 -2
- package/src/scripts/check_template_pin_drift.ts +1 -1
- package/src/scripts/check_test_coverage_diff.ts +2 -2
- package/src/scripts/check_token_optimizer_freshness.ts +3 -3
- package/src/scripts/check_trigger_evals.ts +2 -2
- package/src/scripts/check_update_banner.ts +1 -1
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/ci_summary.ts +3 -3
- package/src/scripts/ci_time_ratio.ts +1 -1
- package/src/scripts/command_suggester/cooldown.ts +1 -1
- package/src/scripts/command_suggester/index.ts +1 -1
- package/src/scripts/command_suggester/loader.ts +1 -1
- package/src/scripts/command_suggester/match.ts +1 -1
- package/src/scripts/command_suggester/rank.ts +1 -1
- package/src/scripts/command_suggester/render.ts +1 -1
- package/src/scripts/command_suggester/sanitize.ts +1 -1
- package/src/scripts/command_suggester/settings.ts +1 -1
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +4 -4
- package/src/scripts/condense.ts +3 -3
- package/src/scripts/condense_memory.ts +1 -1
- package/src/scripts/config/index.ts +1 -1
- package/src/scripts/config/packs.ts +1 -1
- package/src/scripts/config/presets.ts +1 -1
- package/src/scripts/config/profile_explain.ts +1 -1
- package/src/scripts/config/profiles.ts +1 -1
- package/src/scripts/config/session_profiles.ts +1 -1
- package/src/scripts/context_hygiene_hook.ts +2 -2
- package/src/scripts/cost_by_conversation.ts +1 -1
- package/src/scripts/cost_summary.ts +2 -2
- package/src/scripts/council_cli.ts +1 -1
- package/src/scripts/council_prune.ts +1 -1
- package/src/scripts/cross_repo_retrieve.ts +2 -2
- package/src/scripts/discovery_stats.ts +3 -3
- package/src/scripts/evidence_report.ts +4 -4
- package/src/scripts/extract_audit_patterns.ts +2 -2
- package/src/scripts/first_run_gate_hook.ts +1 -1
- package/src/scripts/gen_discovery_baseline.ts +2 -2
- package/src/scripts/generate_capabilities_index.ts +2 -2
- package/src/scripts/generate_capability_matrix.ts +2 -2
- package/src/scripts/generate_catalog.ts +2 -2
- package/src/scripts/generate_command_flows.ts +2 -2
- package/src/scripts/generate_cookbook.ts +1 -1
- package/src/scripts/generate_index.ts +3 -3
- package/src/scripts/generate_ownership_matrix.ts +2 -2
- package/src/scripts/generate_pack_manifests.ts +2 -2
- package/src/scripts/generate_role_experiences_catalog.ts +3 -3
- package/src/scripts/hooks/block_no_verify.ts +2 -2
- package/src/scripts/hooks/dispatch_hook.ts +2 -2
- package/src/scripts/hooks/dispatch_issues.ts +1 -1
- package/src/scripts/hooks/envelope.ts +1 -1
- package/src/scripts/hooks/replay_hook.ts +1 -1
- package/src/scripts/hooks/state_io.ts +1 -1
- package/src/scripts/hooks_doctor.ts +1 -1
- package/src/scripts/hooks_status.ts +1 -1
- package/src/scripts/injection_scan_hook.ts +1 -1
- package/src/scripts/install.ts +145 -3
- package/src/scripts/inventory_abstraction_budget.ts +5 -5
- package/src/scripts/inventory_frontmatter.ts +1 -1
- package/src/scripts/inventory_meta_layers.ts +1 -1
- package/src/scripts/iron_law_sha.ts +1 -1
- package/src/scripts/knowledge_global_cli.ts +3 -3
- package/src/scripts/linked_projects_list.ts +1 -1
- package/src/scripts/lint_agent_security.ts +4 -4
- package/src/scripts/lint_agent_skill_names.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +2 -2
- package/src/scripts/lint_agents_md.ts +3 -3
- package/src/scripts/lint_archived_skills.ts +2 -2
- package/src/scripts/lint_artefact_frontmatter.ts +2 -2
- package/src/scripts/lint_bench_ab.ts +2 -2
- package/src/scripts/lint_bench_corpus.ts +1 -1
- package/src/scripts/lint_command_flow_coverage.ts +1 -1
- package/src/scripts/lint_command_routing.ts +2 -2
- package/src/scripts/lint_command_tiers.ts +1 -1
- package/src/scripts/lint_command_verbs.ts +4 -4
- package/src/scripts/lint_commit_subjects.ts +2 -2
- package/src/scripts/lint_context_spine_usage.ts +3 -3
- package/src/scripts/lint_discovery_manifest.ts +4 -4
- package/src/scripts/lint_discovery_vocabulary.ts +2 -2
- package/src/scripts/lint_empty_roadmaps.ts +3 -3
- package/src/scripts/lint_eval_freshness.ts +2 -2
- package/src/scripts/lint_examples.ts +2 -2
- package/src/scripts/lint_explain_trace.ts +2 -2
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_flows.ts +5 -5
- package/src/scripts/lint_framework_leakage.ts +1 -1
- package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
- package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
- package/src/scripts/lint_ghostwriter_source.ts +3 -3
- package/src/scripts/lint_global_paths.ts +1 -1
- package/src/scripts/lint_handoffs.ts +1 -1
- package/src/scripts/lint_hidden_unicode.ts +1 -1
- package/src/scripts/lint_hook_concern_budget.ts +2 -2
- package/src/scripts/lint_hook_manifest.ts +2 -2
- package/src/scripts/lint_instruction_smuggling.ts +1 -1
- package/src/scripts/lint_load_context.ts +2 -2
- package/src/scripts/lint_marketplace.ts +1 -1
- package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
- package/src/scripts/lint_mcp_config_security.ts +1 -1
- package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
- package/src/scripts/lint_media_policy_linkage.ts +3 -3
- package/src/scripts/lint_missions.ts +3 -3
- package/src/scripts/lint_model_tier_coverage.ts +3 -3
- package/src/scripts/lint_namespace.ts +2 -2
- package/src/scripts/lint_namespace_collisions.ts +2 -2
- package/src/scripts/lint_new_skill_gate.ts +3 -3
- package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
- package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
- package/src/scripts/lint_one_off_age.ts +2 -2
- package/src/scripts/lint_orchestration_dsl.ts +3 -3
- package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
- package/src/scripts/lint_pack_boundaries.ts +2 -2
- package/src/scripts/lint_pack_dependencies.ts +2 -2
- package/src/scripts/lint_pack_first_win.ts +2 -2
- package/src/scripts/lint_persona_governance.ts +3 -3
- package/src/scripts/lint_positioning.ts +1 -1
- package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
- package/src/scripts/lint_readme_jargon.ts +2 -2
- package/src/scripts/lint_readme_size.ts +2 -2
- package/src/scripts/lint_regression.ts +3 -3
- package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
- package/src/scripts/lint_roadmap_complexity.ts +1 -1
- package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
- package/src/scripts/lint_role_experiences.ts +2 -2
- package/src/scripts/lint_rule_interactions.ts +1 -1
- package/src/scripts/lint_rule_tiers.ts +1 -1
- package/src/scripts/lint_showcase_sessions.ts +2 -2
- package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
- package/src/scripts/lint_skill_originality.ts +1 -1
- package/src/scripts/lint_skill_tools.ts +3 -3
- package/src/scripts/lint_ticket_buildable.ts +2 -2
- package/src/scripts/lint_topics_yaml.ts +3 -3
- package/src/scripts/lint_trust_coherence.ts +3 -3
- package/src/scripts/lint_value_dashboard.ts +3 -3
- package/src/scripts/lint_workflow_security.ts +3 -3
- package/src/scripts/lint_workspace_boundary.ts +2 -2
- package/src/scripts/mcp_parity_smoke.ts +1 -1
- package/src/scripts/mcp_render.ts +1 -1
- package/src/scripts/mcp_server/catalog.ts +1 -1
- package/src/scripts/mcp_server/index.ts +1 -1
- package/src/scripts/mcp_server/metadata.ts +1 -1
- package/src/scripts/mcp_server/prompts.ts +1 -1
- package/src/scripts/mcp_server/resources.ts +1 -1
- package/src/scripts/mcp_server/server.ts +1 -1
- package/src/scripts/mcp_server/telemetry.ts +1 -1
- package/src/scripts/mcp_server/tools.ts +1 -1
- package/src/scripts/mcp_telemetry_health.ts +1 -1
- package/src/scripts/mcp_telemetry_query.ts +3 -3
- package/src/scripts/mcp_telemetry_store.ts +3 -3
- package/src/scripts/measure_augment_budget.ts +2 -2
- package/src/scripts/measure_density.ts +2 -2
- package/src/scripts/measure_frugality_savings.ts +3 -3
- package/src/scripts/measure_markitdown_lift.ts +1 -1
- package/src/scripts/measure_patterns.ts +1 -1
- package/src/scripts/measure_projection_bytes.ts +1 -1
- package/src/scripts/measure_rule_budget.ts +1 -1
- package/src/scripts/measure_skill_reduction.ts +1 -1
- package/src/scripts/memory_hash.ts +1 -1
- package/src/scripts/memory_lookup.ts +6 -6
- package/src/scripts/memory_report.ts +1 -1
- package/src/scripts/memory_signal.ts +1 -1
- package/src/scripts/memory_status.ts +2 -2
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
- package/src/scripts/mine_session.ts +3 -3
- package/src/scripts/minimal_safe_diff_hook.ts +2 -2
- package/src/scripts/move_artefact.ts +3 -3
- package/src/scripts/new_skill.ts +3 -3
- package/src/scripts/onboarding_gate_hook.ts +2 -2
- package/src/scripts/pack_mcp_content.ts +1 -1
- package/src/scripts/parity/replay.ts +3 -2
- package/src/scripts/pattern_share.ts +2 -2
- package/src/scripts/plan_physical_move.ts +3 -3
- package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
- package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
- package/src/scripts/prediction-pool/score_ev.ts +2 -2
- package/src/scripts/print_required_checks.ts +2 -2
- package/src/scripts/probe_projection_fidelity.ts +2 -2
- package/src/scripts/probe_skill_registration.ts +2 -2
- package/src/scripts/profile_staleness_hook.ts +2 -2
- package/src/scripts/profile_use.ts +2 -2
- package/src/scripts/project_thin_rules.ts +3 -3
- package/src/scripts/propose_modules_config.ts +2 -2
- package/src/scripts/prototype_lint_contradictions.ts +2 -2
- package/src/scripts/prove_pack_extractable.ts +1 -1
- package/src/scripts/readme_linter.ts +4 -4
- package/src/scripts/redact_hook_capture.ts +2 -2
- package/src/scripts/refine_ticket_detect.ts +1 -1
- package/src/scripts/release.ts +30 -19
- package/src/scripts/render_benchmark_md.ts +2 -2
- package/src/scripts/render_value_md.ts +2 -2
- package/src/scripts/roadmap_progress_hook.ts +1 -1
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/run_skill_evals.ts +2 -2
- package/src/scripts/runtime_dispatcher.ts +1 -1
- package/src/scripts/runtime_handler.ts +1 -1
- package/src/scripts/runtime_registry.ts +3 -3
- package/src/scripts/score_skill_selection.ts +1 -1
- package/src/scripts/security_audit_config.ts +2 -2
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_discovery.ts +1 -1
- package/src/scripts/skill_linter.ts +8 -7
- package/src/scripts/skill_overlap.ts +2 -2
- package/src/scripts/skill_preview.ts +1 -1
- package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
- package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
- package/src/scripts/skill_tools/index.ts +1 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
- package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
- package/src/scripts/skill_trigger_eval.ts +2 -2
- package/src/scripts/skill_usage_collect.ts +2 -2
- package/src/scripts/skill_usage_report.ts +2 -2
- package/src/scripts/smoke_path_resolution.ts +2 -2
- package/src/scripts/smoke_quickstart.ts +4 -4
- package/src/scripts/snapshot_agent_outputs.ts +2 -2
- package/src/scripts/spotcheck_thin_root.ts +2 -2
- package/src/scripts/surface-tiers.yml +1 -0
- package/src/scripts/sync_agent_settings.ts +2 -2
- package/src/scripts/sync_github_metadata.ts +4 -4
- package/src/scripts/sync_gitignore.ts +3 -3
- package/src/scripts/sync_yaml_rt.ts +2 -2
- package/src/scripts/telegraph_stats.ts +1 -1
- package/src/scripts/tool_registry.ts +2 -2
- package/src/scripts/tools/adapter_errors.ts +1 -1
- package/src/scripts/tools/base_adapter.ts +1 -1
- package/src/scripts/tools/github_adapter.ts +1 -1
- package/src/scripts/tools/jira_adapter.ts +1 -1
- package/src/scripts/trigger_coverage.ts +2 -2
- package/src/scripts/update_counts.ts +68 -6
- package/src/scripts/update_prices.ts +3 -3
- package/src/scripts/validate_agent_settings.ts +3 -3
- package/src/scripts/validate_decision_engine.ts +2 -2
- package/src/scripts/validate_discovery_manifest.ts +3 -3
- package/src/scripts/validate_frontmatter.ts +5 -5
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/scripts/validate_safe_paths.ts +2 -2
- package/src/scripts/validate_telegraph_carveouts.ts +3 -3
- package/src/scripts/verify_before_complete_hook.ts +2 -2
- package/src/scripts/verify_physical_move.ts +2 -2
- package/src/scripts/wrapper_freshness_hook.ts +3 -3
- package/src/server/schemas/settings.ts +426 -0
- package/src/shared/settingsSurface.ts +184 -0
- package/src/shared/userMd/formAdapter.ts +86 -0
- package/src/shared/userMd/schema.ts +59 -0
- package/src/shared/userMd/utils.ts +91 -0
- package/dist/agent-src/commands/optimize-project.md +0 -243
- package/dist/ui/assets/index-BbWWuFrF.css +0 -1
- package/dist/ui/assets/index-UjcTG_9O.js +0 -40
- package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* File-first memory retrieval.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* API and CLI contract mirror the Python
|
|
5
|
+
* Ported from the retired Python `src/scripts/memory_lookup.py` (ADR-200). The public
|
|
6
|
+
* API and CLI contract mirror the retired Python implementation EXACTLY — same exported
|
|
7
7
|
* names (snake_case kept deliberately, especially `retrieve(...)` whose
|
|
8
8
|
* signature/return shape is cited by rules), same exit codes, stdout/stderr
|
|
9
9
|
* split, byte-identical messages, same memory-file scan + ranking + JSON
|
|
@@ -40,7 +40,7 @@ import YAML, { parseDocument } from 'yaml';
|
|
|
40
40
|
// timestamp into a `datetime.datetime`. The `yaml` npm parses both to JS Date
|
|
41
41
|
// objects whose String()/JSON form differs, so `json.dumps(..., default=str)`
|
|
42
42
|
// in the CLI would not match. This marker preserves PyYAML's str() form so
|
|
43
|
-
// JSON output and as_dict() are byte-
|
|
43
|
+
// JSON output and as_dict() are byte-stable — downstream consumers and checksum gates pin these bytes.
|
|
44
44
|
const PYYAML_DATE_ONLY_RE = /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;
|
|
45
45
|
const PYYAML_TIMESTAMP_RE =
|
|
46
46
|
/^(?:[0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}(?:[Tt]|[ \t]+)[0-9]{1,2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]*)?(?:[ \t]*(?:Z|[-+][0-9]{1,2}(?::[0-9]{2})?))?)$/;
|
|
@@ -191,7 +191,7 @@ function _load_yaml(p: string): unknown {
|
|
|
191
191
|
const raw = text.slice(node.range[0], node.range[1]);
|
|
192
192
|
// Under YAML 1.1 the `yaml` lib resolves plain timestamp scalars to
|
|
193
193
|
// JS Date objects. Recover PyYAML's str() form from the original
|
|
194
|
-
// source so JSON output / as_dict() match the Python
|
|
194
|
+
// source so JSON output / as_dict() match the retired Python implementation.
|
|
195
195
|
if (node.value instanceof Date) {
|
|
196
196
|
if (PYYAML_DATE_ONLY_RE.test(raw)) {
|
|
197
197
|
(node as { value: unknown }).value = new PyTimestamp(raw);
|
|
@@ -476,10 +476,10 @@ export function _score(entry: Record<string, unknown>, keys: string[]): number {
|
|
|
476
476
|
/**
|
|
477
477
|
* Project cross-repo matches into discounted, tagged Hits.
|
|
478
478
|
*
|
|
479
|
-
* Lazy + guarded: the Python
|
|
479
|
+
* Lazy + guarded: the retired Python implementation imports `cross_repo_retrieve` on
|
|
480
480
|
* demand and swallows any failure (script absent, no opted-in siblings) so
|
|
481
481
|
* the cross-repo type degrades to zero hits rather than breaking retrieval.
|
|
482
|
-
* The
|
|
482
|
+
* The Ported from the retired Python `cross_repo_retrieve` is unported in this phase, so
|
|
483
483
|
* this always degrades to zero hits — flagged as a divergence candidate.
|
|
484
484
|
* Scores sit below curated/knowledge (0.85× floor, then a small per-rank
|
|
485
485
|
* decrement) so cross-repo context never outranks the project's own truth.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* One-shot memory observability report.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/memory_report.py` (ADR-200, Phase 7 /
|
|
6
6
|
* dev-side memory). The public API and CLI contract mirror the Python
|
|
7
7
|
* original EXACTLY — same exported names (snake_case kept deliberately),
|
|
8
8
|
* same exit codes, stdout/stderr split, byte-identical messages, and
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Write-side helper: drop an engineering-memory signal.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/memory_signal.py` (ADR-200, Phase 7 /
|
|
6
6
|
* dev-side memory). The public API and CLI contract mirror the Python
|
|
7
7
|
* original EXACTLY — same exported names (snake_case kept deliberately),
|
|
8
8
|
* same exit codes, stdout/stderr split, byte-identical messages, same
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* File-backed memory status (no external backend).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* API and CLI contract mirror the Python
|
|
5
|
+
* Ported from the retired Python `src/scripts/memory_status.py` (ADR-200). The public
|
|
6
|
+
* API and CLI contract mirror the retired Python implementation EXACTLY — same exported
|
|
7
7
|
* names (snake_case kept deliberately), same exit codes, stdout/stderr
|
|
8
8
|
* split, byte-identical messages and JSON shape. No behaviour changes.
|
|
9
9
|
*
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* One-shot migration: inject the `suggestion:` frontmatter block into every
|
|
4
4
|
* command under `.agent-src.uncondensed/commands/`.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* Ported from the retired Python `src/scripts/migrate_command_suggestions.py` (ADR-200 —
|
|
7
7
|
* Python→TS migration, Phase 8 / Wave 8e). Faithful twin: the legacy
|
|
8
8
|
* `.agent-src.uncondensed/commands/` path is part of the original module's
|
|
9
9
|
* contract and is reproduced verbatim. Public surface mirrors the Python module
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Migrate artefact frontmatter to omit fields equal to their schema default.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/migrate_frontmatter_defaults.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8e). Public surface mirrors the Python
|
|
7
7
|
* module exactly: same CLI flags (`--dry-run`, `--deltas PATH`), same exit code
|
|
8
8
|
* (0), same stdout summary, and byte-identical rewritten files + dry-run delta
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Mine a session for memory signals — the engine behind `/memory mine`.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration, Phase 8 / Wave 8g).
|
|
5
|
+
* Ported from the retired Python `src/scripts/mine_session.py` (ADR-200 — Python→TS
|
|
6
|
+
* migration, Phase 8 / Wave 8g). The CLI contract is pinned —
|
|
7
7
|
* every flag, exit code (0), the stdout/stderr split, byte-identical
|
|
8
8
|
* messages, byte-identical preview Markdown, and byte-identical
|
|
9
9
|
* `json.dumps(..., ensure_ascii=False)` intake JSONL lines.
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*
|
|
27
27
|
* Auto-resolved transcript discovery (`rglob` sorted by mtime) is
|
|
28
28
|
* intrinsically non-deterministic; golden parity supplies a fixed
|
|
29
|
-
* `--transcript`.
|
|
29
|
+
* `--transcript`. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
30
30
|
*/
|
|
31
31
|
import * as crypto from 'node:crypto';
|
|
32
32
|
import * as fs from 'node:fs';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Platform-agnostic hook for the `minimal-safe-diff` rule.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/minimal_safe_diff_hook.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 6 / hooks). Public API mirrors the Python
|
|
7
7
|
* module exactly (snake_case kept deliberately — fidelity over TS idiom).
|
|
8
8
|
*
|
|
@@ -39,7 +39,7 @@ import { atomic_write_json } from "./hooks/state_io.js";
|
|
|
39
39
|
|
|
40
40
|
// NOTE: the Python docstring says `agents/runtime/state/`, but the code
|
|
41
41
|
// constant is `agents/state/`. Replicated verbatim — latent docstring/code
|
|
42
|
-
// divergence in the Python
|
|
42
|
+
// divergence in the retired Python implementation (ADR-200 § replicate latent bugs).
|
|
43
43
|
export const STATE_FILE = path.join("agents", "state", "minimal-safe-diff.json");
|
|
44
44
|
export const SETTINGS_FILE = ".agent-settings.yml";
|
|
45
45
|
export const DEFAULT_THRESHOLD = 5;
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Move a single artefact between packs via `git mv` (history-preserving).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/move_artefact.py` (ADR-200, Phase 8 /
|
|
6
6
|
* Wave 8b). The public surface, CLI contract, exit codes, stdout/stderr
|
|
7
|
-
* split, byte-for-byte messages, and the `git mv` semantics
|
|
8
|
-
*
|
|
7
|
+
* split, byte-for-byte messages, and the `git mv` semantics are pinned by
|
|
8
|
+
* tests. The frontmatter rewrite reproduces PyYAML's
|
|
9
9
|
* `safe_dump(..., sort_keys=False, allow_unicode=True)` output through a
|
|
10
10
|
* faithful port of the PyYAML emitter (scalar-style resolution, plain /
|
|
11
11
|
* single-quoted / double-quoted writers with the same best-width=80
|
package/src/scripts/new_skill.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Interactive scaffolder for new skills under the packages/ layout.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration, Phase 8 / Wave 8b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/new_skill.py` (ADR-200 — Python→TS
|
|
6
|
+
* migration, Phase 8 / Wave 8b). The CLI contract is pinned —
|
|
7
7
|
* the `--pack` / `--type` / `--name` / `--description` / `--workspace`
|
|
8
8
|
* (repeatable) / `--force` flags, exit codes (0 ok · 1 file exists · 2
|
|
9
9
|
* usage / validation), the stdout/stderr split, byte-identical messages,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - rule → rules/<name>.md
|
|
16
16
|
* - command → commands/<name>.md
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
19
19
|
*/
|
|
20
20
|
import * as fs from 'node:fs';
|
|
21
21
|
import * as path from 'node:path';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Platform-agnostic hook for the `onboarding-gate` rule.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/onboarding_gate_hook.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 6 / hooks). Public API mirrors the Python
|
|
7
7
|
* module exactly (snake_case kept deliberately — fidelity over TS idiom).
|
|
8
8
|
*
|
|
@@ -40,7 +40,7 @@ import { atomic_write_json } from "./hooks/state_io.js";
|
|
|
40
40
|
export const SETTINGS_FILE = ".agent-settings.yml";
|
|
41
41
|
// NOTE: the Python docstring says `agents/runtime/state/`, but the code
|
|
42
42
|
// constant is `agents/state/`. Replicated verbatim — this is a latent
|
|
43
|
-
// docstring/code divergence in the Python
|
|
43
|
+
// docstring/code divergence in the retired Python implementation (ADR-200 § replicate
|
|
44
44
|
// latent bugs), and `STATE_FILE` is what the test suite asserts against.
|
|
45
45
|
export const STATE_DIR = path.join("agents", "state");
|
|
46
46
|
export const STATE_FILE = path.join(STATE_DIR, "onboarding-gate.json");
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
//
|
|
24
24
|
// Governed by `docs/contracts/mcp-cloud-scope.md` §A0-cloud invariant 5.
|
|
25
25
|
//
|
|
26
|
-
// TS
|
|
26
|
+
// TS port of the retired Python pack_mcp_content.py (ADR-200). Byte-identical
|
|
27
27
|
// twin: same five scanners, same wire shape, same compact-JSON / indent=2
|
|
28
28
|
// manifest serialization, same gzip archival copy (mtime=0, level 9, with
|
|
29
29
|
// Python's OS=0xFF header byte). The .py stays the deploy entrypoint until
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Golden-replay runner — proves a TypeScript port behaves identically to
|
|
3
|
-
* Python
|
|
2
|
+
* Golden-replay runner — proves a TypeScript port behaves identically to the
|
|
3
|
+
* retired Python implementation it replaced (golden transcripts were captured
|
|
4
|
+
* before the teardown).
|
|
4
5
|
*
|
|
5
6
|
* CLI:
|
|
6
7
|
* tsx src/scripts/parity/replay.ts \
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Maintainer dev script — export / import file-first patterns across projects.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/pattern_share.py` (ADR-200). Mirrors the
|
|
6
6
|
* Python CLI contract EXACTLY — the `export` / `import` subcommands, their
|
|
7
7
|
* positional + flag args (`--out`, `--force`), exit codes (0 / 1 / 2),
|
|
8
8
|
* stdout/stderr split, the byte-identical refusal/success lines (`❌ …` /
|
|
@@ -245,7 +245,7 @@ function _isFlag(a: string): boolean {
|
|
|
245
245
|
return a.startsWith('-') && a !== '-';
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
// argparse precedence (verified against the Python
|
|
248
|
+
// argparse precedence (verified against the retired Python implementation):
|
|
249
249
|
// 1. an optional that needs a value but is missing it → SUB-level error
|
|
250
250
|
// "argument --out: expected one argument" (during consumption).
|
|
251
251
|
// 2. a missing required positional → SUB-level error
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Plan + apply the physical monorepo migration (Phase 4).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/plan_physical_move.py` (ADR-200, Phase 8 /
|
|
6
6
|
* Wave 8b). Mirrors the CLI contract EXACTLY — the `--apply`, `--out` flags,
|
|
7
7
|
* exit codes (0 clean dry-run / 1 dry-run-with-conflicts / 2 refuse-apply /
|
|
8
8
|
* 3 source-missing / 4 git-mv-failed), the stdout/stderr split, byte-identical
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* destination under `packages/core/` or `packages/pack-<id>/`, and emits
|
|
14
14
|
* `dist/migration/move-plan.json`. `--apply` executes the moves via `git mv`.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour. (The dry-run path
|
|
17
17
|
* writes the plan JSON to BOTH the default location and `--out`; when they
|
|
18
|
-
* coincide the file is written twice, exactly as the Python
|
|
18
|
+
* coincide the file is written twice, exactly as the retired Python implementation does.)
|
|
19
19
|
*/
|
|
20
20
|
import { spawnSync } from 'node:child_process';
|
|
21
21
|
import * as fs from 'node:fs';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Poisson tournament simulator for prediction-pool-optimizer.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/prediction-pool/poisson_sim.py` (ADR-200).
|
|
6
|
+
* The CLI contract is pinned — the positional `config` JSON file,
|
|
7
7
|
* `--runs` / `--seed`, exit codes, the stdout/stderr split, and byte-identical
|
|
8
8
|
* output. No behaviour changes.
|
|
9
9
|
*
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Field model + P(finish 1st) simulator for prediction-pool-optimizer.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/prediction-pool/pool_winsim.py` (ADR-200).
|
|
6
|
+
* The CLI contract is pinned — the positional `config` JSON file,
|
|
7
7
|
* `--runs` / `--max-flips` / `--max-opponents` / `--top-flip` / `--seed` /
|
|
8
8
|
* `--json`, exit codes, the stdout/stderr split, and byte-identical text AND
|
|
9
9
|
* `--json` output. No behaviour changes.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Exact-score EV optimiser for prediction-pool-optimizer.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 8). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/prediction-pool/score_ev.py` (ADR-200,
|
|
6
|
+
* Phase 8). The CLI contract is pinned — the positional `matches`
|
|
7
7
|
* JSON file, `--lh` / `--la` / `--exact` / `--diff` / `--tendency` /
|
|
8
8
|
* `--max-tip` / `--top` / `--json`, exit codes, the stdout/stderr split, and
|
|
9
9
|
* byte-identical text AND `--json` output. No behaviour changes.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Print the expected required-check set for the current branch.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 8 / Wave 8g).
|
|
5
|
+
* Ported from the retired Python `src/scripts/print_required_checks.py` (ADR-200,
|
|
6
|
+
* Phase 8 / Wave 8g). The CLI contract is pinned — `--branch`
|
|
7
7
|
* / `--base` flags, PR-shape classification (release / docs-only / feature),
|
|
8
8
|
* exit codes (0 ok, 1 release-shape OUT-OF-SHAPE fallback-to-feature, 2 usage),
|
|
9
9
|
* stdout/stderr split, byte-identical messages. Reuses the release-shape
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Phase 4.2 — Probe per-tool projection fidelity against the fixture.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/probe_projection_fidelity.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8c). Mirrors the CLI contract
|
|
7
7
|
* EXACTLY: flags (`--fixture`, `--report`), exit codes (0 when no fail, 1
|
|
8
8
|
* when any check fails, 2 when the YAML dependency is missing — replicated
|
|
9
9
|
* via a try/catch import), byte-identical stdout, and the byte-identical
|
|
10
10
|
* written report (`json.dumps(report, indent=2) + "\n"`). No behaviour
|
|
11
|
-
* changes —
|
|
11
|
+
* changes — historical quirks preserved (consumers pin the exact behaviour).
|
|
12
12
|
*
|
|
13
13
|
* Reads tests/fixtures/projection_fidelity/fixtures.yml, walks the
|
|
14
14
|
* projected trees (.augment/, .claude/, .cursor/, .clinerules/,
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Tool-agnostic skill-registration probe.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/probe_skill_registration.py` (ADR-090 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8c). Mirrors the CLI contract
|
|
7
7
|
* EXACTLY: flags (`--tool`, `--scope`, `--format`, `--strict`, `--home`,
|
|
8
8
|
* `--project`), exit codes (0 informational / 0 when strict & clean, 2
|
|
9
9
|
* when strict & findings), byte-identical text + JSON stdout, and the same
|
|
10
|
-
* dataclass field order.
|
|
10
|
+
* dataclass field order. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
11
11
|
*
|
|
12
12
|
* Roadmap: road-to-clean-skill-distribution-channels.md § Phase C.
|
|
13
13
|
* Contract: docs/contracts/skill-distribution-channels.md.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Session-profile staleness notice — `session_start` hook.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/profile_staleness_hook.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 6 / hooks). Public API mirrors the Python
|
|
7
7
|
* module exactly (snake_case kept deliberately — fidelity over TS idiom).
|
|
8
8
|
*
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* notice is derived from the overlay file), emits at most one stderr line,
|
|
19
19
|
* returns 0 on every path.
|
|
20
20
|
*
|
|
21
|
-
* NOTE (ADR-200): the Python
|
|
21
|
+
* NOTE (ADR-200): the retired Python implementation imports `scripts.config.session_profiles`,
|
|
22
22
|
* which is UNPORTED. The only entry point this hook touches is
|
|
23
23
|
* `session_profiles.stale_notice(root)`, a fail-open read of the overlay file
|
|
24
24
|
* (`agents/settings/.agent-settings.local.yml` → `runtime.active_packs`) plus a
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* `agent-config use --profile=<id>` — switch the active experience.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration, Phase 8 / Wave 8e). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/profile_use.py` (ADR-200 — Python→TS
|
|
6
|
+
* migration, Phase 8 / Wave 8e). The CLI contract is pinned:
|
|
7
7
|
* same flags (`--profile=<id>` / `--profile <id>`), same exit codes
|
|
8
8
|
* (0 success, 2 on missing/unknown profile), same byte-identical
|
|
9
9
|
* stdout / stderr prose, and byte-identical surgical text edits of the
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Thin-projection of the rule layer (lean-initial-context build-out, Phase 3.1).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/project_thin_rules.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8b). The CLI contract is mirrored
|
|
7
7
|
* EXACTLY — the `--measure` / `--out` / `--json` flags, exit codes, the
|
|
8
8
|
* stdout/stderr split, byte-identical messages, and byte-identical JSON
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
*
|
|
21
21
|
* NOTE (faithful literal): the thin-entry pointer keeps the verbatim
|
|
22
22
|
* `Body: [`{rule_id}`](../../.agent-src.uncondensed/rules/{rule_id}.md)`
|
|
23
|
-
* Markdown link from the Python
|
|
23
|
+
* Markdown link from the retired Python implementation. The same-basename `.py` twin
|
|
24
24
|
* carries that literal, so the ADR-051 legacy-path guard exempts this `.ts`
|
|
25
25
|
* file by twin-parity.
|
|
26
26
|
*
|
|
27
|
-
*
|
|
27
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
28
28
|
*
|
|
29
29
|
* Usage:
|
|
30
30
|
* project_thin_rules --measure # measure delta, no write
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Propose a `modules:` block for `.agent-project-settings.yml`.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 8 / Wave 8g).
|
|
5
|
+
* Ported from the retired Python `src/scripts/propose_modules_config.py` (ADR-200,
|
|
6
|
+
* Phase 8 / Wave 8g). The CLI contract is pinned — `--project`
|
|
7
7
|
* / `--json` flags, the interactive numbered-options TTY block, the
|
|
8
8
|
* machine-readable JSON envelope (byte-identical to `json.dump(indent=2)`),
|
|
9
9
|
* exit codes (0 always on success, 2 unreachable path), stdout/stderr split.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Prototype contradiction linter (P1.1 of road-to-package-optimization).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/prototype_lint_contradictions.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8g). Mirrors the Python CLI contract
|
|
7
7
|
* EXACTLY — no flags, exit codes (0 clean / 1 contradictions found), the
|
|
8
8
|
* stdout JSON shape (`json.dump(report, indent=2)`, insertion order, NO
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* Heuristic family — two deterministic checks (routing + imperative conflict)
|
|
19
19
|
* across rules, skills, commands, and contexts. No behaviour changes —
|
|
20
|
-
*
|
|
20
|
+
* historical quirks preserved (consumers pin the exact behaviour).
|
|
21
21
|
*/
|
|
22
22
|
import * as fs from 'node:fs';
|
|
23
23
|
import * as path from 'node:path';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Prove a pack + its declared dependency closure is self-contained.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `prove_pack_extractable.py` (Phase 8 / Wave 8g).
|
|
6
6
|
*
|
|
7
7
|
* road-to-6.0.0-D Phase 1 Step 6 — the *extraction proof*. It de-risks the
|
|
8
8
|
* monorepo collapse (Phase 3) by proving that a pack moved into the flat
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* README quality linter for agent-config repositories.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration, Phase 8 / Wave 8b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/readme_linter.py` (ADR-200 — Python→TS
|
|
6
|
+
* migration, Phase 8 / Wave 8b). The CLI contract is pinned —
|
|
7
7
|
* the positional `readme` arg, the `--root` / `--format` / `--strict`
|
|
8
8
|
* flags, exit codes (0 pass · 1 warnings · 2 errors / strict-warnings ·
|
|
9
9
|
* 3 README-not-found / internal error), the stdout/stderr split, and
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* Detects weak, misleading, or incomplete READMEs by cross-checking
|
|
15
15
|
* against actual repository files (Taskfile.yml, package.json, etc.).
|
|
16
16
|
*
|
|
17
|
-
*
|
|
17
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
18
18
|
*/
|
|
19
19
|
import * as fs from 'node:fs';
|
|
20
20
|
import * as path from 'node:path';
|
|
@@ -46,7 +46,7 @@ const BUILTIN_COMMANDS = new Set<string>([
|
|
|
46
46
|
'php artisan', 'cargo build', 'cargo test', 'go build', 'go test',
|
|
47
47
|
'git clone', 'git submodule',
|
|
48
48
|
]);
|
|
49
|
-
// Referenced to mirror the module-level constant in the Python
|
|
49
|
+
// Referenced to mirror the module-level constant in the retired Python implementation
|
|
50
50
|
// (it is defined but unused there); keeps the symbol "live" for the linter.
|
|
51
51
|
void BUILTIN_COMMANDS;
|
|
52
52
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Redact captured hook payloads for the verified-platforms roadmap.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `redact_hook_capture.py` (Phase 8 / Wave 8g).
|
|
6
6
|
*
|
|
7
7
|
* Reads JSON capture files written by `dispatch_hook.py` (when
|
|
8
8
|
* `AGENT_HOOK_CAPTURE_DIR` is set) and produces a redacted version
|
|
@@ -299,7 +299,7 @@ export function main(argv: string[] | null = null): number {
|
|
|
299
299
|
return 2;
|
|
300
300
|
}
|
|
301
301
|
// Mirror `sorted(src.glob("*.json"))` — glob matches any entry whose
|
|
302
|
-
// name ends in `.json`; no is_file() filter in the Python
|
|
302
|
+
// name ends in `.json`; no is_file() filter in the retired Python implementation.
|
|
303
303
|
const files = fs
|
|
304
304
|
.readdirSync(src)
|
|
305
305
|
.filter((name) => name.endsWith('.json') && !name.endsWith('.redacted.json'))
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Deterministic detection helper for the refine-ticket skill.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `refine_ticket_detect.py` (Phase 8 / Wave 8g).
|
|
6
6
|
*
|
|
7
7
|
* Reads the detection-map.yml from
|
|
8
8
|
* .agent-src.uncondensed/skills/refine-ticket/ (or the projected copy),
|
package/src/scripts/release.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* End-to-end release automation for `event4u/agent-config` (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/release.py` (ADR-200).
|
|
6
|
+
* The CLI contract pins the historical contract exactly — same flags, same
|
|
7
7
|
* exit codes, same stdout/stderr split, byte-identical emitted output, same
|
|
8
8
|
* subprocess argv/cwd/env. No behaviour changes — latent quirks are
|
|
9
9
|
* replicated and flagged inline, not fixed.
|
|
@@ -145,7 +145,7 @@ class ArgparseExit extends Error {
|
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
147
|
* Mirror of `subprocess.CalledProcessError`. Thrown by `run()` when a command
|
|
148
|
-
* fails with `check=True` and output is NOT captured — the Python
|
|
148
|
+
* fails with `check=True` and output is NOT captured — the retired Python implementation
|
|
149
149
|
* lets `CalledProcessError` propagate in that path. The CLI entry guard does
|
|
150
150
|
* NOT catch this, so it surfaces (non-zero exit + traceback), matching Python.
|
|
151
151
|
*/
|
|
@@ -680,7 +680,7 @@ function latest_tag(): string | null {
|
|
|
680
680
|
*
|
|
681
681
|
* `test_trend_line` — optional pre-computed `Tests: N (+M …)` footer
|
|
682
682
|
* (road-to-feedback-followups P3.2). Computed by the caller so tests don't
|
|
683
|
-
* trigger a recursive
|
|
683
|
+
* trigger a recursive vitest collection.
|
|
684
684
|
*/
|
|
685
685
|
function render_changelog_entry(
|
|
686
686
|
version: string,
|
|
@@ -770,32 +770,40 @@ function _changelog_line(c: Commit): string {
|
|
|
770
770
|
// ─── test-count trend (road-to-feedback-followups P3.2) ───────────────────────
|
|
771
771
|
|
|
772
772
|
const _TEST_COUNT_LINE_RE = /^Tests:\s+(\d+)/m;
|
|
773
|
-
const _PYTEST_COLLECTED_RE = /^(\d+)\s+tests?\s+collected/m;
|
|
774
773
|
|
|
775
774
|
/**
|
|
776
|
-
* Return the
|
|
777
|
-
*
|
|
778
|
-
* line is informational, never a release
|
|
775
|
+
* Return the collected vitest test-case count on the current tree
|
|
776
|
+
* (`npx vitest list`, one line per case; ~14s wall). Returns null when
|
|
777
|
+
* collection fails — the trend line is informational, never a release
|
|
778
|
+
* blocker. (Replaced the dead `pytest --collect-only` probe on 2026-07-08,
|
|
779
|
+
* road-to-truth-and-reference-hygiene Phase 3: the Python suite was retired
|
|
780
|
+
* with ADR-200, so the old probe always degraded to null and the `Tests:`
|
|
781
|
+
* footer silently vanished from release notes.)
|
|
779
782
|
*/
|
|
780
783
|
function _count_tests_current(): number | null {
|
|
781
|
-
//
|
|
782
|
-
//
|
|
783
|
-
//
|
|
784
|
-
|
|
784
|
+
// Recursion/cost guard: `npx vitest list` inside a vitest-driven release
|
|
785
|
+
// test would collect the whole suite from within the suite (the child
|
|
786
|
+
// inherits VITEST=… from the runner) — the exact recursion the caller
|
|
787
|
+
// comment warns about. Degrade to null there, same as any other
|
|
788
|
+
// collection failure.
|
|
789
|
+
if (process.env['VITEST'] !== undefined) {
|
|
790
|
+
return null;
|
|
791
|
+
}
|
|
792
|
+
const res = spawnSync('npx', ['vitest', 'list'], {
|
|
785
793
|
cwd: REPO_ROOT,
|
|
786
794
|
encoding: 'utf-8',
|
|
787
795
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
788
|
-
timeout:
|
|
796
|
+
timeout: 180_000,
|
|
789
797
|
});
|
|
790
798
|
if (res.error) {
|
|
791
|
-
//
|
|
799
|
+
// ENOENT or ETIMEDOUT → null (informational line dropped).
|
|
792
800
|
return null;
|
|
793
801
|
}
|
|
794
802
|
if ((res.status ?? 1) !== 0) {
|
|
795
803
|
return null;
|
|
796
804
|
}
|
|
797
|
-
const
|
|
798
|
-
return
|
|
805
|
+
const lines = (res.stdout ?? '').split('\n').filter((l) => l.trim().length > 0);
|
|
806
|
+
return lines.length > 0 ? lines.length : null;
|
|
799
807
|
}
|
|
800
808
|
|
|
801
809
|
/**
|
|
@@ -1833,7 +1841,10 @@ function main(argv: readonly string[] | null = null): number {
|
|
|
1833
1841
|
}
|
|
1834
1842
|
|
|
1835
1843
|
const today = todayIso();
|
|
1836
|
-
|
|
1844
|
+
// Dry-run stays fast: the trend line costs a full vitest collection
|
|
1845
|
+
// (~15s+), which `--dry-run exits 0 without needing …` contracts (and
|
|
1846
|
+
// the release test) assume never runs. Real releases compute it.
|
|
1847
|
+
const test_trend_line = args.dry_run ? null : _render_test_trend_line(prev);
|
|
1837
1848
|
const [full, body] = render_changelog_entry(target, prev, commits, today, {
|
|
1838
1849
|
test_trend_line,
|
|
1839
1850
|
});
|
|
@@ -1922,8 +1933,8 @@ if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
|
1922
1933
|
try {
|
|
1923
1934
|
// main() can return an int directly OR throw SystemExitError via die();
|
|
1924
1935
|
// both flow into process.exitCode. CalledProcessError is intentionally
|
|
1925
|
-
// NOT caught here, so it propagates (non-zero + traceback)
|
|
1926
|
-
//
|
|
1936
|
+
// NOT caught here, so it propagates (non-zero + traceback) — the historical
|
|
1937
|
+
// contract let subprocess errors raise.
|
|
1927
1938
|
process.exitCode = main(process.argv.slice(2));
|
|
1928
1939
|
} catch (e) {
|
|
1929
1940
|
if (e instanceof SystemExitError || e instanceof ArgparseExit) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Render `docs/benchmark.md` from the latest paired A/B bench reports.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/render_benchmark_md.py` (ADR-200, Phase 8 /
|
|
6
6
|
* Wave 8b). Mirrors the CLI contract EXACTLY — the `--quiet` flag, exit code,
|
|
7
7
|
* the stdout/stderr split, byte-identical stdout AND byte-identical rendered
|
|
8
8
|
* `docs/benchmark.md`. The renderer is deterministic — it does not run any
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* If no reports exist yet, the script writes a placeholder document — never
|
|
16
16
|
* errors out, so the file is always a real description of the bench state.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour. The only volatile
|
|
19
19
|
* value is the embedded `utc_iso()` timestamp; golden parity for this script
|
|
20
20
|
* pins on structure + the deterministic placeholder/report shape, not on the
|
|
21
21
|
* second-precision timestamp.
|