@event4u/agent-config 8.4.1 → 8.6.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 +92 -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} +38 -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/auto-dispatch-classification.md +30 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +15 -1
- package/dist/agent-src/contexts/execution/subagent-steering.md +54 -1
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/model-recommendations.md +19 -0
- package/dist/agent-src/contexts/skills-and-commands.md +2 -2
- package/dist/agent-src/contexts/subagent-configuration.md +8 -0
- 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 +27 -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/ADR-116-memory-tripwire-activation-path.md +125 -0
- package/docs/decisions/INDEX.md +3 -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 +12 -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/auto_dispatch.ts +63 -0
- 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/subagent_routing.ts +24 -0
- package/src/scripts/_lib/subagent_steering.ts +213 -3
- 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
|
@@ -117,6 +117,12 @@ export interface OrchEntry {
|
|
|
117
117
|
token_delta: number;
|
|
118
118
|
outcome: string;
|
|
119
119
|
verify_mode: string;
|
|
120
|
+
/** Routing extension (road-to-cost-aware-model-routing) — null on pre-extension lines. */
|
|
121
|
+
task_class: string | null;
|
|
122
|
+
tier_chosen: string | null;
|
|
123
|
+
tier_source: string | null;
|
|
124
|
+
escalated_from: string | null;
|
|
125
|
+
verify_result_by_tier: Record<string, string> | null;
|
|
120
126
|
}
|
|
121
127
|
|
|
122
128
|
/**
|
|
@@ -129,9 +135,8 @@ export interface OrchEntry {
|
|
|
129
135
|
*
|
|
130
136
|
* user_override_rate cannot be measured from telemetry alone — returns 0.
|
|
131
137
|
*/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
): GuardrailMetrics {
|
|
138
|
+
/** Parse orchestration entries from audit-log-v1 JSONL lines (shared by all aggregators). */
|
|
139
|
+
export function parseOrchEntries(lines: string[]): OrchEntry[] {
|
|
135
140
|
const entries: OrchEntry[] = [];
|
|
136
141
|
for (const line of lines) {
|
|
137
142
|
const trimmed = line.trim();
|
|
@@ -141,17 +146,33 @@ export function readOrchestrationMetrics(
|
|
|
141
146
|
if (parsed['input_kind'] !== 'orchestration') continue;
|
|
142
147
|
const orch = parsed['orchestration'] as Record<string, unknown> | undefined;
|
|
143
148
|
if (!orch) continue;
|
|
149
|
+
const vbt = orch['verify_result_by_tier'];
|
|
144
150
|
entries.push({
|
|
145
151
|
task_size_estimate: Number(orch['task_size_estimate'] ?? 0),
|
|
146
152
|
spawn_count: Number(orch['spawn_count'] ?? 0),
|
|
147
153
|
token_delta: Number(orch['token_delta'] ?? 0),
|
|
148
154
|
outcome: String(orch['outcome'] ?? ''),
|
|
149
155
|
verify_mode: String(orch['verify_mode'] ?? ''),
|
|
156
|
+
task_class: orch['task_class'] == null ? null : String(orch['task_class']),
|
|
157
|
+
tier_chosen: orch['tier_chosen'] == null ? null : String(orch['tier_chosen']),
|
|
158
|
+
tier_source: orch['tier_source'] == null ? null : String(orch['tier_source']),
|
|
159
|
+
escalated_from: orch['escalated_from'] == null ? null : String(orch['escalated_from']),
|
|
160
|
+
verify_result_by_tier:
|
|
161
|
+
vbt != null && typeof vbt === 'object' && !Array.isArray(vbt)
|
|
162
|
+
? Object.fromEntries(Object.entries(vbt as Record<string, unknown>).map(([k, v]) => [k, String(v)]))
|
|
163
|
+
: null,
|
|
150
164
|
});
|
|
151
165
|
} catch {
|
|
152
166
|
// skip malformed lines
|
|
153
167
|
}
|
|
154
168
|
}
|
|
169
|
+
return entries;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export function readOrchestrationMetrics(
|
|
173
|
+
lines: string[],
|
|
174
|
+
): GuardrailMetrics {
|
|
175
|
+
const entries = parseOrchEntries(lines);
|
|
155
176
|
|
|
156
177
|
if (entries.length === 0) {
|
|
157
178
|
return { token_ratio: 1, spawn_failure_rate: 0, verify_skip_rate: 0, user_override_rate: 0 };
|
|
@@ -174,3 +195,192 @@ export function readOrchestrationMetrics(
|
|
|
174
195
|
user_override_rate: 0, // cannot measure from telemetry alone
|
|
175
196
|
};
|
|
176
197
|
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Per-tier / per-class routing aggregates (road-to-cost-aware-model-routing
|
|
201
|
+
* Phase 0). Pure aggregation over the routing telemetry fields — feeds the
|
|
202
|
+
* `/cost:report` per-tier view and the Phase-2 tripwires. Pre-extension lines
|
|
203
|
+
* (null routing fields) are ignored per aggregate.
|
|
204
|
+
*/
|
|
205
|
+
export interface TierRoutingMetrics {
|
|
206
|
+
/** Dispatch count per tier_chosen. */
|
|
207
|
+
dispatches_by_tier: Record<string, number>;
|
|
208
|
+
/** Dispatch count per task_class. */
|
|
209
|
+
dispatches_by_class: Record<string, number>;
|
|
210
|
+
/** Escalation count per task_class (entries with escalated_from set). */
|
|
211
|
+
escalations_by_class: Record<string, number>;
|
|
212
|
+
/** escalations_by_class / dispatches_by_class, per class present in both. */
|
|
213
|
+
escalation_rate_by_class: Record<string, number>;
|
|
214
|
+
/** Per tier: pass / (pass + fail) over verify_result_by_tier attempts. */
|
|
215
|
+
verify_pass_rate_by_tier: Record<string, number>;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export function readTierRoutingMetrics(lines: string[]): TierRoutingMetrics {
|
|
219
|
+
const entries = parseOrchEntries(lines);
|
|
220
|
+
|
|
221
|
+
const dispatches_by_tier: Record<string, number> = {};
|
|
222
|
+
const dispatches_by_class: Record<string, number> = {};
|
|
223
|
+
const escalations_by_class: Record<string, number> = {};
|
|
224
|
+
const verifyCounts: Record<string, { pass: number; fail: number }> = {};
|
|
225
|
+
|
|
226
|
+
for (const e of entries) {
|
|
227
|
+
if (e.tier_chosen !== null) {
|
|
228
|
+
dispatches_by_tier[e.tier_chosen] = (dispatches_by_tier[e.tier_chosen] ?? 0) + 1;
|
|
229
|
+
}
|
|
230
|
+
if (e.task_class !== null) {
|
|
231
|
+
dispatches_by_class[e.task_class] = (dispatches_by_class[e.task_class] ?? 0) + 1;
|
|
232
|
+
if (e.escalated_from !== null) {
|
|
233
|
+
escalations_by_class[e.task_class] = (escalations_by_class[e.task_class] ?? 0) + 1;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (e.verify_result_by_tier !== null) {
|
|
237
|
+
for (const [tier, result] of Object.entries(e.verify_result_by_tier)) {
|
|
238
|
+
const c = (verifyCounts[tier] ??= { pass: 0, fail: 0 });
|
|
239
|
+
if (result === 'pass') c.pass += 1;
|
|
240
|
+
else if (result === 'fail') c.fail += 1;
|
|
241
|
+
// 'skipped' counts toward neither pass nor fail.
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
const escalation_rate_by_class: Record<string, number> = {};
|
|
247
|
+
for (const [cls, n] of Object.entries(dispatches_by_class)) {
|
|
248
|
+
escalation_rate_by_class[cls] = (escalations_by_class[cls] ?? 0) / n;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
const verify_pass_rate_by_tier: Record<string, number> = {};
|
|
252
|
+
for (const [tier, c] of Object.entries(verifyCounts)) {
|
|
253
|
+
const attempts = c.pass + c.fail;
|
|
254
|
+
if (attempts > 0) verify_pass_rate_by_tier[tier] = c.pass / attempts;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return {
|
|
258
|
+
dispatches_by_tier,
|
|
259
|
+
dispatches_by_class,
|
|
260
|
+
escalations_by_class,
|
|
261
|
+
escalation_rate_by_class,
|
|
262
|
+
verify_pass_rate_by_tier,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Cost-routing tripwires (road-to-cost-aware-model-routing Phase 2) —
|
|
268
|
+
* steering policy over the routing telemetry, surfaced never auto-flipped.
|
|
269
|
+
*/
|
|
270
|
+
export const ROUTING_TRIPWIRES = {
|
|
271
|
+
/**
|
|
272
|
+
* Per-class escalation rate above which the class's static default tier
|
|
273
|
+
* should be promoted: cascading a class that escalates this often costs
|
|
274
|
+
* more than starting on the higher tier.
|
|
275
|
+
*/
|
|
276
|
+
escalation_promotion_rate: 0.4,
|
|
277
|
+
/** Verify-pass rate drop (absolute) below the trailing baseline that counts as drift. */
|
|
278
|
+
verify_pass_drift_tolerance: 0.1,
|
|
279
|
+
/** Minimum dispatches per class before the escalation tripwire may fire (noise floor). */
|
|
280
|
+
min_class_dispatches: 5,
|
|
281
|
+
} as const;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Tripwire (i): classes whose escalation rate exceeds the promotion
|
|
285
|
+
* threshold — their static default tier is wrong; promote it, stop cascading.
|
|
286
|
+
* Classes below the dispatch noise floor never fire.
|
|
287
|
+
*/
|
|
288
|
+
export function escalationPromotionCandidates(m: TierRoutingMetrics): string[] {
|
|
289
|
+
const candidates: string[] = [];
|
|
290
|
+
for (const [cls, rate] of Object.entries(m.escalation_rate_by_class)) {
|
|
291
|
+
const dispatches = m.dispatches_by_class[cls] ?? 0;
|
|
292
|
+
if (dispatches < ROUTING_TRIPWIRES.min_class_dispatches) continue;
|
|
293
|
+
if (rate > ROUTING_TRIPWIRES.escalation_promotion_rate) candidates.push(cls);
|
|
294
|
+
}
|
|
295
|
+
return candidates.sort();
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Tripwire (ii): tiers whose current verify-pass rate dropped below the
|
|
300
|
+
* trailing baseline by more than the tolerance — verifier or model drift.
|
|
301
|
+
* Tiers absent from either side are skipped (no baseline → no drift claim).
|
|
302
|
+
*/
|
|
303
|
+
export function verifyPassDrift(
|
|
304
|
+
current: Record<string, number>,
|
|
305
|
+
trailingBaseline: Record<string, number>,
|
|
306
|
+
): string[] {
|
|
307
|
+
const drifting: string[] = [];
|
|
308
|
+
for (const [tier, baseline] of Object.entries(trailingBaseline)) {
|
|
309
|
+
const now = current[tier];
|
|
310
|
+
if (now === undefined) continue;
|
|
311
|
+
if (now < baseline - ROUTING_TRIPWIRES.verify_pass_drift_tolerance) drifting.push(tier);
|
|
312
|
+
}
|
|
313
|
+
return drifting.sort();
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Verify-fail escalation (road-to-cost-aware-model-routing Phase 4 / M3).
|
|
318
|
+
*
|
|
319
|
+
* A verification FAILURE on a downshifted return re-dispatches the slice one
|
|
320
|
+
* tier up, consuming the existing N=3 budget — never a new budget. Confined
|
|
321
|
+
* to tier_source static|inferred; inherit slices keep same-tier retry.
|
|
322
|
+
* The trigger is the judge verdict / deterministic verify result — never the
|
|
323
|
+
* subagent's self-reported confidence.
|
|
324
|
+
*/
|
|
325
|
+
export type EscalationTier = 'lite' | 'medium' | 'high';
|
|
326
|
+
|
|
327
|
+
export interface VerifyFailInputs {
|
|
328
|
+
/** Tier of the attempt that just failed verification. */
|
|
329
|
+
failed_tier: EscalationTier;
|
|
330
|
+
/** Provenance of the slice's tier (telemetry `tier_source`). */
|
|
331
|
+
tier_source: 'static' | 'inferred' | 'inherit';
|
|
332
|
+
/** Consecutive failed attempts on this slice INCLUDING the one that just failed. */
|
|
333
|
+
consecutive_failures: number;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export interface VerifyFailDecision {
|
|
337
|
+
action: 'escalate' | 'retry-same-tier' | 'slice-failed';
|
|
338
|
+
/** Tier for the next attempt; null when the slice is failed. */
|
|
339
|
+
next_tier: EscalationTier | null;
|
|
340
|
+
reason: string;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const TIER_ABOVE: Record<EscalationTier, EscalationTier | null> = {
|
|
344
|
+
lite: 'medium',
|
|
345
|
+
medium: 'high',
|
|
346
|
+
high: null,
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
export function escalateOnVerifyFail(inp: VerifyFailInputs): VerifyFailDecision {
|
|
350
|
+
// Outside the downshift path → existing same-tier retry semantics, budget unchanged.
|
|
351
|
+
if (inp.tier_source === 'inherit') {
|
|
352
|
+
if (budgetHalt(inp.consecutive_failures)) {
|
|
353
|
+
return { action: 'slice-failed', next_tier: null, reason: 'N=3 budget exhausted on session tier' };
|
|
354
|
+
}
|
|
355
|
+
return {
|
|
356
|
+
action: 'retry-same-tier',
|
|
357
|
+
next_tier: inp.failed_tier,
|
|
358
|
+
reason: 'inherit slice — no downshift decision, same-tier retry semantics unchanged',
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Downshifted slice: two failed attempts mark the slice failed — the third
|
|
363
|
+
// "attempt" of the N=3 budget is the orchestrator's replan at session tier.
|
|
364
|
+
if (inp.consecutive_failures >= 2) {
|
|
365
|
+
return {
|
|
366
|
+
action: 'slice-failed',
|
|
367
|
+
next_tier: null,
|
|
368
|
+
reason: 'two failed attempts on a downshifted slice — mark failed, orchestrator replans at session tier',
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
const above = TIER_ABOVE[inp.failed_tier];
|
|
373
|
+
if (above === null) {
|
|
374
|
+
return {
|
|
375
|
+
action: 'slice-failed',
|
|
376
|
+
next_tier: null,
|
|
377
|
+
reason: 'verify-fail on the highest tier — no tier above, mark failed and replan',
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return {
|
|
382
|
+
action: 'escalate',
|
|
383
|
+
next_tier: above,
|
|
384
|
+
reason: `verify-fail on ${inp.failed_tier} → re-dispatch one tier up (${above}); consumes the N=3 budget`,
|
|
385
|
+
};
|
|
386
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Surface-tier (core vs lab) resolution for the install split.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/_lib/surface_tiers.py` (ADR-200 — Python→TS
|
|
5
5
|
* migration). Public API mirrors the Python module exactly (snake_case kept
|
|
6
6
|
* deliberately — fidelity over TS idiom).
|
|
7
7
|
*
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* below WARN_THRESHOLD → no conflict, proceed to create
|
|
10
10
|
*
|
|
11
11
|
* Deliberately does NOT touch `memory_signal.ts` — that script is a
|
|
12
|
-
* byte-faithful parity
|
|
12
|
+
* byte-faithful parity port of the retired Python implementation ("no
|
|
13
13
|
* behaviour changes" is a load-bearing contract of that file). This
|
|
14
14
|
* module is consumed as an ADDITIONAL, advisory check layered on top,
|
|
15
15
|
* from `check_memory_similarity.ts` and later the knowledge-page
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Daily update-check banner for the `agent-config` dispatcher.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/_lib/update_check.py` (ADR-200,
|
|
5
5
|
* Phase 2 / Wave 1 batch B). Pure functions: `check_for_update()`
|
|
6
6
|
* decides whether a banner should be emitted and returns the banner
|
|
7
7
|
* string (or `null`). The dispatcher prints the returned string to
|
|
8
8
|
* `stderr` after the subcommand finishes — never delaying the work,
|
|
9
9
|
* never prompting.
|
|
10
10
|
*
|
|
11
|
-
* Design constraints (mirrored from the Python
|
|
11
|
+
* Design constraints (mirrored from the retired Python implementation):
|
|
12
12
|
*
|
|
13
13
|
* - Node builtins only (global `fetch` on Node >= 20).
|
|
14
14
|
* - 1 s hard timeout on the registry call; network failure is silent.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Vendor-namespaced user-global path resolution.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/_lib/user_global_paths.py` (ADR-200,
|
|
5
5
|
* Phase 2 / Wave 1 batch B). Mirrors the Python module's public API
|
|
6
6
|
* exactly — same exported snake_case names, same semantics, same
|
|
7
7
|
* path-resolution behavior. Single source of truth for "where does this
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pure normaliser: raw bench reports → `value-v1` rung dicts.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/_lib/value_ladder.py` (ADR-200 py2ts
|
|
5
5
|
* Phase 2 / Wave 2a). Phase 1 Step 2 of the readable-value-dashboard roadmap.
|
|
6
6
|
*
|
|
7
7
|
* This module is **pure** — no I/O, no file reads, no clock. Inputs are
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Assemble `value-v1` JSON from on-disk raw bench reports.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/_lib/value_report.py` (ADR-200 py2ts
|
|
5
5
|
* Phase 2 / Wave 2a). Phase 1 Step 3 of the readable-value-dashboard roadmap.
|
|
6
6
|
*
|
|
7
7
|
* Reads:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Minimal ZIP writer/reader on Node builtins only (`node:zlib`).
|
|
3
3
|
*
|
|
4
|
-
* Internal helper for the
|
|
5
|
-
* `src/scripts/_lib/claude_desktop_bundler.py` (ADR-200
|
|
4
|
+
* Internal helper for the port of the retired Python
|
|
5
|
+
* `src/scripts/_lib/claude_desktop_bundler.py` (ADR-200):
|
|
6
6
|
* the repo ships no ZIP dependency, and the ADR contract forbids adding
|
|
7
7
|
* one — so the bundler twin writes the (well-specified) ZIP container
|
|
8
8
|
* itself and compresses entries with `zlib.deflateRawSync`
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Roll up `adoption-snapshots.jsonl` into a Markdown trend report.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Wave 8a). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/adoption_report.py` (ADR-200, Phase 8 /
|
|
6
|
+
* Wave 8a). The CLI contract is pinned — the flags `--in` /
|
|
7
7
|
* `--out` / `--weeks`, exit codes (0 written · 1 IO failure on read/write),
|
|
8
8
|
* the stdout/stderr split, byte-identical messages, AND byte-identical
|
|
9
9
|
* generated Markdown (the report is a write target). Mirrors the shape of
|
|
10
10
|
* `skill_usage_report.py`: a single file, no external deps. The report is
|
|
11
11
|
* regenerated on every invocation (idempotent for a given JSONL state).
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
14
14
|
*/
|
|
15
15
|
import * as fs from 'node:fs';
|
|
16
16
|
import * as path from 'node:path';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Pull the four public adoption signals into a single dated JSONL row.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Wave 8a).
|
|
5
|
+
* Ported from the retired Python `src/scripts/adoption_snapshot.py` (ADR-200, Phase 8
|
|
6
|
+
* Wave 8a). The CLI contract is pinned — flags (`--out`,
|
|
7
7
|
* `--no-network`), exit codes (0 / 1 / 2), stdout/stderr split, and the
|
|
8
8
|
* byte-identical JSONL row (`json.dumps(row)` default separators,
|
|
9
9
|
* ensure_ascii=True, no trailing space differences).
|
|
@@ -59,7 +59,7 @@ const GH_SEARCH_URL_TEMPLATE =
|
|
|
59
59
|
|
|
60
60
|
const TIMEOUT_S = 10;
|
|
61
61
|
|
|
62
|
-
// Free-form JSON-ish value type for signal payloads.
|
|
62
|
+
// Free-form JSON-ish value type for signal payloads. the retired Python implementation uses
|
|
63
63
|
// `dict[str, Any]`; the only documented `any`-shaped surface (HTTP JSON).
|
|
64
64
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
65
|
type Json = any;
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* One-screen adoption dashboard for the maintainer's weekly review.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/adoption_status.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8a). The CLI contract is mirrored
|
|
7
7
|
* EXACTLY: same flags (`--json`, `--branch`), same exit codes (0 normal,
|
|
8
8
|
* 1 on registry-read IO error), same byte-identical text + JSON output,
|
|
9
9
|
* same `ci_status` shell-out (now the `.ts` twin run via `tsx` — no
|
|
10
10
|
* python3), same `unknown` best-effort fallbacks. No behaviour
|
|
11
|
-
* changes —
|
|
11
|
+
* changes — historical quirks preserved (consumers pin the exact behaviour).
|
|
12
12
|
*
|
|
13
13
|
* Prints three things in one short block:
|
|
14
14
|
*
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* non-numbered ADRs into an Unnumbered table, hard-fails on duplicate
|
|
6
6
|
* numbers, filename/frontmatter mismatch, or broken supersedes links.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* The CLI contract is
|
|
8
|
+
* Ported from the retired Python `src/scripts/adr/regenerate_index.py` (ADR-200).
|
|
9
|
+
* The CLI contract is pinned — `--dir` (default `docs/adr/`),
|
|
10
10
|
* `--check`, exit codes (0 / 1 / 2), the stdout/stderr split, byte-identical
|
|
11
11
|
* messages, AND byte-identical generated `INDEX.md`. No behaviour changes —
|
|
12
|
-
*
|
|
12
|
+
* historical quirks preserved (consumers pin the exact behaviour).
|
|
13
13
|
*/
|
|
14
14
|
import * as fs from 'node:fs';
|
|
15
15
|
import * as path from 'node:path';
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shipped baseline prices for the AI Council.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/_default_prices.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 8 / Wave 8g; ported as a prerequisite of
|
|
6
|
-
* `update_prices.ts`). Values + ordering + `as_rows()` semantics
|
|
7
|
-
* Python original EXACTLY.
|
|
6
|
+
* `update_prices.ts`). Values + ordering + `as_rows()` semantics are pinned by tests.
|
|
8
7
|
*
|
|
9
8
|
* This module is the bootstrap source for `agents/runtime/.agent-prices.md`
|
|
10
9
|
* when the runtime file is missing, and the network-fallback source for
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Thinking-style advisors — replace-mode call planning (Phase 6).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/advisors.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 1). When the user-global
|
|
6
6
|
* `~/.event4u/agent-config/settings/.ai-council.yml` (always global —
|
|
7
7
|
* ADR-104) enables an advisor (e.g. `contrarian` bound to
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Airgap detection for the AI Council installer / first-run (step-9 P11 · U1).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/airgap.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 1; ai_council FOUNDATION wave). Public surface
|
|
6
6
|
* mirrors the Python module exactly (snake_case kept deliberately):
|
|
7
7
|
* `COUNCIL_PROBE_HOSTS`, `DEFAULT_TIMEOUT_S`, `AIRGAP_BANNER`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-day rolling cost-budget guard for the council (D3).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/budget_guard.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 1; ai_council FOUNDATION wave). Mirrors the
|
|
6
6
|
* Python public surface exactly (snake_case kept deliberately):
|
|
7
7
|
* `LEDGER_FILENAME`, `LEDGER_PATH`, `ROLLING_WINDOW_HOURS`, `SpendEntry`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Context bundling for council consultations.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/bundler.py` (ADR-094 —
|
|
5
5
|
* Python→TS migration, Phase 1).
|
|
6
6
|
*
|
|
7
7
|
* Takes a raw artefact (free-form prompt, roadmap path, diff range, or
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-provider CLI install hints for `mode: cli` members (step-9 P2).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/cli_hints.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 1; ai_council FOUNDATION wave). Public surface
|
|
6
6
|
* mirrors the Python module exactly (snake_case kept deliberately):
|
|
7
7
|
* `INSTALL_HINTS`, `hint_for`, `format_install_hints`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// External-AI clients for the council —
|
|
2
|
-
// `src/scripts/ai_council/clients.py` (
|
|
1
|
+
// External-AI clients for the council — ported from the retired Python
|
|
2
|
+
// `src/scripts/ai_council/clients.py` (ADR-200).
|
|
3
3
|
//
|
|
4
4
|
// Mirrors the contract from `scripts/skill_trigger_eval.py`:
|
|
5
5
|
// - Tokens come exclusively from `~/.event4u/agent-config/<provider>.key`
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
// `cli_call_budget.max_calls_per_day.<provider>` quota with state persisted at
|
|
32
32
|
// `~/.event4u/agent-config/cli-calls.json` (daily UTC reset).
|
|
33
33
|
//
|
|
34
|
-
// TRANSPORT SEAM (TS-only, for tests): the Python
|
|
34
|
+
// TRANSPORT SEAM (TS-only, for tests): the retired Python implementation calls
|
|
35
35
|
// `subprocess.run` directly inside `CliClient.ask`. The twin routes that one
|
|
36
36
|
// call through the protected `_runSubprocess(cmd, stdinPayload)` instance
|
|
37
37
|
// method so a test subclass can stub the transport without live processes —
|
|
@@ -154,7 +154,7 @@ export class CouncilResponse {
|
|
|
154
154
|
// Python uses `time.monotonic()`. latency_ms is non-deterministic; tests
|
|
155
155
|
// normalise it. Exposed so tests can pin it if they choose.
|
|
156
156
|
let _monotonicSource: () => number = () => {
|
|
157
|
-
// performance.now() is monotonic milliseconds; the Python
|
|
157
|
+
// performance.now() is monotonic milliseconds; the retired Python implementation is
|
|
158
158
|
// seconds, but we only ever compute `int((now - t0) * 1000)`, so feeding
|
|
159
159
|
// milliseconds here and dropping the *1000 keeps the same arithmetic.
|
|
160
160
|
return performance.now();
|
|
@@ -967,7 +967,7 @@ export abstract class CliClient extends ExternalAIClient {
|
|
|
967
967
|
* `subprocess.run(cmd, input=..., capture_output=True, text=True,
|
|
968
968
|
* timeout=..., check=False)`. Throws `SubprocessError` for the timeout /
|
|
969
969
|
* ENOENT / OSError branches so `ask()` can classify them exactly as the
|
|
970
|
-
*
|
|
970
|
+
* historical contract requires. Tests override this to inject canned output without
|
|
971
971
|
* spawning a process.
|
|
972
972
|
*/
|
|
973
973
|
protected _runSubprocess(cmd: string[], stdinPayload: string | null): SubprocessResult {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Compile the human-edited low-impact corpus Markdown to a YAML lockfile.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/compile_corpus.py`
|
|
5
5
|
* (ADR-200 — Python→TS migration, Phase 1).
|
|
6
6
|
*
|
|
7
7
|
* Step-10 — see `agents/roadmaps/step-10-corpus-yaml-lockfile.md`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Confidence gate for solo-member dispatch (step-9 P13).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/confidence_gate.py`
|
|
5
5
|
* (ADR-200 — Python→TS migration, Phase 1). Defense-in-depth on top of
|
|
6
6
|
* shadow-mode SLO: when a single member's response signals uncertainty,
|
|
7
7
|
* presents unresolved alternatives, or refuses, the dispatcher escalates
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Council configuration loader — single source of truth.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/config.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 12). Mirrors the Python module's public
|
|
6
6
|
* surface and validation behaviour byte-for-byte: same exported
|
|
7
7
|
* snake_case names, same defaults, same error messages, same precedence.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Consensus scoring for the analysis lens (Phase 4 / F3).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/consensus.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 1). After the final deliberation round, members
|
|
6
6
|
* score each other's findings. The renderer ranks findings by consensus and
|
|
7
7
|
* surfaces a "Minority Views" section for sub-threshold items so they remain
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Persistent council events log (step-8 phase 3).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/events_log.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 1). Appends one JSON line per council event to
|
|
6
6
|
* `<project_root>/agents/runtime/council/events.log`. Schema v1 carries the
|
|
7
7
|
* minimum needed to answer the "why did the council skip / block this?"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Preview builder for `/memory learn-low-impact` (step-9 Phase 7).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/learn_low_impact_preview.py`
|
|
5
5
|
* (ADR-200 — Python→TS migration, Phase 1).
|
|
6
6
|
*
|
|
7
7
|
* Default invocation is `--preview`: build a structured plan describing
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hardened parser for `agents/decisions/low-impact-decisions.md` (step-9 P4).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/low_impact_corpus.py`
|
|
5
5
|
* (ADR-200 — Python→TS migration, Phase 1).
|
|
6
6
|
*
|
|
7
7
|
* Replaces the silent-skip behaviour of the inline regex in
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Intake trigger + dedup for `agents/decisions/low-impact-decisions.md` (Phase 12).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/low_impact_intake.py`
|
|
5
5
|
* (ADR-200 — Python→TS migration, Phase 1). Pure-text, deterministic.
|
|
6
6
|
*
|
|
7
7
|
* User signals "leichte Frage" / "low-impact question" / equivalents
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mode resolution for council members (Phase 2b).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/modes.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 1). Pure resolver — never touches the
|
|
6
6
|
* filesystem or environment. Callers pass in already-loaded values from
|
|
7
7
|
* `.agent-settings.yml`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Council orchestrator — fan out one question to multiple members.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
3
|
+
// Port of the retired Python orchestrator.py (ADR-200). The historical contract
|
|
4
|
+
// is pinned byte-for-byte by tests: member dispatch order, sequential cost gating, the overrun
|
|
5
5
|
// callback contract, multi-round debate / peer-review / consensus passes, and
|
|
6
6
|
// the Markdown render assembly are all mirrored exactly.
|
|
7
7
|
//
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
// The orchestrator formats USD / scores / strengths via Python f-string
|
|
70
70
|
// specs (`:.4f`, `:.2f`, `:.1f`) which round half-to-even on the decimal
|
|
71
71
|
// representation. JS `toFixed` rounds half away from zero, so the spec
|
|
72
|
-
// formatting is reimplemented to stay byte-exact with the Python
|
|
72
|
+
// formatting is reimplemented to stay byte-exact with the retired Python implementation.
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
75
|
* Format `x` to `ndigits` decimals using round-half-to-even, matching
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Runtime pricing layer for the AI Council.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/ai_council/pricing.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 8 / Wave 8g; ported as a prerequisite of
|
|
6
6
|
* `update_prices.ts`). Mirrors the Python public surface used by the
|
|
7
7
|
* caller: `PRICES_FILE`, `load_prices`, `is_stale`, `_render_markdown`,
|
|
8
8
|
* plus `bootstrap_from_defaults` / `last_monday_utc` for completeness.
|
|
9
9
|
*
|
|
10
10
|
* Reads `agents/runtime/.agent-prices.md`, parses YAML frontmatter + the
|
|
11
|
-
* Markdown table.
|
|
11
|
+
* Markdown table. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.,
|
|
12
12
|
* including the byte-identical `{x:>6.2f}` row formatting.
|
|
13
13
|
*/
|
|
14
14
|
import * as fs from 'node:fs';
|