@event4u/agent-config 8.1.0 → 8.2.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 +50 -297
- package/dist/agent-src/commands/agents/init.md +3 -3
- package/dist/agent-src/commands/chat-history/import.md +5 -5
- package/dist/agent-src/commands/chat-history.md +1 -1
- package/dist/agent-src/commands/condense.md +1 -1
- package/dist/agent-src/commands/context/create.md +1 -1
- package/dist/agent-src/commands/council/analysis.md +2 -2
- package/dist/agent-src/commands/council/default.md +3 -3
- package/dist/agent-src/commands/council/design.md +2 -2
- package/dist/agent-src/commands/council/optimize.md +1 -1
- package/dist/agent-src/commands/council/pr.md +2 -2
- package/dist/agent-src/commands/council.md +1 -1
- package/dist/agent-src/commands/feature/plan.md +1 -1
- package/dist/agent-src/commands/ghostwriter/list.md +1 -1
- package/dist/agent-src/commands/ghostwriter/write.md +1 -1
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/implement-ticket.md +2 -2
- package/dist/agent-src/commands/judge/on-diff.md +1 -1
- package/dist/agent-src/commands/judge/steps.md +3 -1
- package/dist/agent-src/commands/memory/add.md +2 -2
- package/dist/agent-src/commands/memory/learn-low-impact.md +1 -1
- package/dist/agent-src/commands/memory/load.md +1 -1
- package/dist/agent-src/commands/memory/mine-session.md +1 -1
- package/dist/agent-src/commands/memory/promote.md +1 -1
- package/dist/agent-src/commands/memory/propose.md +1 -1
- package/dist/agent-src/commands/mission/upgrade.md +1 -1
- package/dist/agent-src/commands/module/explore.md +3 -3
- package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +1 -1
- package/dist/agent-src/commands/optimize-project.md +1 -1
- package/dist/agent-src/commands/orchestrate.md +2 -2
- package/dist/agent-src/commands/project-analyze.md +1 -1
- package/dist/agent-src/commands/project-health.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +2 -2
- package/dist/agent-src/commands/roadmap/process-full.md +3 -1
- package/dist/agent-src/commands/roadmap/process-phase.md +4 -2
- package/dist/agent-src/commands/roadmap/process-step.md +3 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/sync-agent-settings.md +7 -7
- package/dist/agent-src/commands/sync-gitignore/fix.md +3 -3
- package/dist/agent-src/commands/sync-gitignore.md +4 -4
- package/dist/agent-src/commands/work.md +3 -3
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +1 -1
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -7
- package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +9 -4
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +10 -9
- package/dist/agent-src/contexts/execution/verification-mechanics.md +13 -1
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/presets/README.md +1 -1
- package/dist/agent-src/profiles/README.md +1 -1
- package/dist/agent-src/rules/architecture.md +2 -2
- package/dist/agent-src/rules/context-hygiene.md +2 -2
- package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
- package/dist/agent-src/rules/media-governance-routing.md +1 -1
- package/dist/agent-src/rules/no-roadmap-references.md +3 -3
- package/dist/agent-src/rules/preservation-guard.md +2 -2
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
- package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
- package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
- package/dist/agent-src/rules/source-confidentiality.md +1 -1
- package/dist/agent-src/rules/telegraph-speak.md +1 -1
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/ui-audit-gate.md +1 -1
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
- package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
- package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
- package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
- package/dist/agent-src/skills/api-design/SKILL.md +1 -1
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
- package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
- package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
- package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
- package/dist/agent-src/skills/code-review/SKILL.md +3 -4
- package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
- package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
- package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
- package/dist/agent-src/skills/database/SKILL.md +2 -1
- package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
- package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
- package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
- package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
- package/dist/agent-src/skills/flux/SKILL.md +10 -9
- package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
- package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
- package/dist/agent-src/skills/livewire/SKILL.md +10 -9
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
- package/dist/agent-src/skills/module-management/SKILL.md +2 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
- package/dist/agent-src/skills/premortem/SKILL.md +1 -1
- package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
- package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
- package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
- package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
- package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
- package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
- package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
- package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
- package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
- package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
- package/dist/agent-src/templates/agent-settings.md +34 -25
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
- package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +4 -4
- package/dist/agent-src/templates/copilot-instructions.md +1 -1
- package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
- package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
- package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
- package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
- package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
- package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
- package/dist/agent-src/templates/roadmaps.md +9 -4
- package/dist/agent-src/templates/rule.md +3 -3
- package/dist/agent-src/templates/scripts/README.md +6 -6
- package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
- package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
- package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
- package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
- package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
- package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
- package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
- package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
- package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
- package/dist/agent-src/templates/skill.md +2 -2
- package/dist/cli/python/knowledge_ingest.js +24 -3
- package/dist/cli/python/knowledge_ingest.js.map +1 -1
- package/dist/cli/python/workspace_analytics.js +23 -3
- package/dist/cli/python/workspace_analytics.js.map +1 -1
- package/dist/cli/python/workspace_crypto.js +23 -3
- package/dist/cli/python/workspace_crypto.js.map +1 -1
- package/dist/cli/python/workspace_documents.js +23 -3
- package/dist/cli/python/workspace_documents.js.map +1 -1
- package/dist/cli/python/workspace_drive.js +24 -3
- package/dist/cli/python/workspace_drive.js.map +1 -1
- package/dist/cli/python/workspace_drive_health.js +23 -3
- package/dist/cli/python/workspace_drive_health.js.map +1 -1
- package/dist/cli/python/workspace_explain.js +23 -3
- package/dist/cli/python/workspace_explain.js.map +1 -1
- package/dist/cli/python/workspace_hosts.js +23 -3
- package/dist/cli/python/workspace_hosts.js.map +1 -1
- package/dist/cli/python/workspace_inbox.js +23 -3
- package/dist/cli/python/workspace_inbox.js.map +1 -1
- package/dist/cli/python/workspace_render.js +23 -3
- package/dist/cli/python/workspace_render.js.map +1 -1
- package/dist/cli/python/workspace_roles.js +23 -3
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/cli/python/workspace_sessions.js +23 -3
- package/dist/cli/python/workspace_sessions.js.map +1 -1
- package/dist/cli/python/workspace_skills.js +23 -3
- package/dist/cli/python/workspace_skills.js.map +1 -1
- package/dist/cli/registry.js +2 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +118 -118
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +2 -2
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +3 -3
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +3 -3
- package/dist/install/install.mjs +67 -28
- package/dist/mcp/registry-manifest.json +2 -2
- package/dist/server/routes/settings.js +4 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/schemas/settings.js +1 -1
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/CLAIMS.md +2 -2
- package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
- package/docs/benchmark.md +40 -0
- package/docs/contracts/skill-bundled-assets.md +2 -2
- package/docs/customization.md +1 -1
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
- package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
- package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
- package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
- package/docs/guidelines/agent-infra/layered-settings.md +4 -4
- package/docs/guidelines/agent-infra/memory-access.md +19 -18
- package/docs/guidelines/agent-infra/naming.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
- package/docs/guidelines/agent-infra/role-contracts.md +1 -1
- package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
- package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
- package/docs/guidelines/augment-portability-patterns.md +1 -1
- package/docs/proof.md +1 -1
- package/docs/setup/per-ide/claude-code.md +10 -4
- package/package.json +3 -2
- package/src/config/agent-settings.template.yml +31 -17
- package/src/config/host-capabilities.yml +25 -16
- package/src/config/profiles/balanced.ini +5 -3
- package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
- package/src/scripts/_cli/cmd_conformance.ts +23 -4
- package/src/scripts/_cli/cmd_doctor.ts +96 -8
- package/src/scripts/_cli/cmd_explain.ts +23 -4
- package/src/scripts/_cli/cmd_export.ts +23 -4
- package/src/scripts/_cli/cmd_fleet.ts +23 -4
- package/src/scripts/_cli/cmd_migrate.ts +23 -4
- package/src/scripts/_cli/cmd_preflight.ts +24 -4
- package/src/scripts/_cli/cmd_prune.ts +23 -4
- package/src/scripts/_cli/cmd_refresh.ts +23 -4
- package/src/scripts/_cli/cmd_settings_check.ts +23 -4
- package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
- package/src/scripts/_cli/cmd_sync.ts +23 -4
- package/src/scripts/_cli/cmd_uninstall.ts +23 -4
- package/src/scripts/_cli/cmd_update.ts +23 -4
- package/src/scripts/_cli/cmd_upgrade.ts +238 -9
- package/src/scripts/_cli/cmd_validate.ts +23 -4
- package/src/scripts/_cli/cmd_versions.ts +23 -4
- package/src/scripts/_dispatch.bash +62 -19
- package/src/scripts/_lib/claude_plugin.ts +83 -0
- package/src/scripts/_lib/knowledge_global.ts +24 -2
- package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
- package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
- package/src/scripts/_lib/link_crypto.ts +24 -5
- package/src/scripts/_lib/pin_resolver.ts +24 -3
- package/src/scripts/adoption_report.ts +23 -4
- package/src/scripts/adoption_snapshot.ts +23 -1
- package/src/scripts/adoption_status.ts +23 -4
- package/src/scripts/adr/regenerate_index.ts +24 -3
- package/src/scripts/ai_council/airgap.ts +25 -2
- package/src/scripts/ai_council/compile_corpus.ts +24 -2
- package/src/scripts/ai_council/pricing.ts +11 -1
- package/src/scripts/analysis_freshness.ts +23 -4
- package/src/scripts/annotate_discovery.ts +23 -1
- package/src/scripts/apply_modules_config.ts +23 -4
- package/src/scripts/audit_adr_coverage.ts +23 -4
- package/src/scripts/audit_auto_rules.ts +23 -1
- package/src/scripts/audit_cloud_compatibility.ts +23 -4
- package/src/scripts/audit_command_surface.ts +23 -4
- package/src/scripts/audit_initial_context.ts +23 -3
- package/src/scripts/audit_likelihood.ts +23 -1
- package/src/scripts/audit_mcp_tools.ts +23 -3
- package/src/scripts/audit_overlap.ts +23 -1
- package/src/scripts/audit_skill_descriptions.ts +24 -2
- package/src/scripts/audit_skill_overlap.ts +23 -1
- package/src/scripts/audit_user_type_axis.ts +23 -4
- package/src/scripts/backfill_model_tier.ts +23 -4
- package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
- package/src/scripts/bench_ab_clone.ts +23 -1
- package/src/scripts/bench_ab_diff.ts +23 -1
- package/src/scripts/bench_ab_integrity.ts +23 -1
- package/src/scripts/bench_ab_run.ts +23 -2
- package/src/scripts/bench_ab_task_runner.ts +23 -1
- package/src/scripts/bench_ab_tracka_run.ts +23 -2
- package/src/scripts/bench_ab_v2_run.ts +23 -1
- package/src/scripts/bench_ab_v2_stats.ts +23 -1
- package/src/scripts/bench_baseline_ready.ts +23 -1
- package/src/scripts/bench_condense_memory.ts +23 -1
- package/src/scripts/bench_drift_check.ts +23 -2
- package/src/scripts/bench_matrix.ts +23 -4
- package/src/scripts/bench_per_tool.ts +23 -1
- package/src/scripts/bench_quality_run.ts +23 -2
- package/src/scripts/bench_rtk_savings.ts +23 -1
- package/src/scripts/bench_rule_load_latency.ts +23 -2
- package/src/scripts/bench_run.ts +23 -2
- package/src/scripts/bench_runner.ts +23 -1
- package/src/scripts/build_cloud_bundle.ts +23 -3
- package/src/scripts/build_discovery_manifest.ts +23 -4
- package/src/scripts/build_linear_digest.ts +23 -3
- package/src/scripts/build_mcp_registry_manifest.ts +23 -4
- package/src/scripts/build_rule_trigger_matrix.ts +23 -4
- package/src/scripts/capture_showcase_session.ts +23 -1
- package/src/scripts/chat_history.ts +24 -3
- package/src/scripts/check_always_budget.ts +23 -2
- package/src/scripts/check_artefact_checksums.ts +23 -4
- package/src/scripts/check_augment_description_cap.ts +23 -4
- package/src/scripts/check_augmentignore.ts +23 -4
- package/src/scripts/check_beta_review_markers.ts +23 -4
- package/src/scripts/check_cluster_patterns.ts +23 -4
- package/src/scripts/check_command_count_messaging.ts +23 -4
- package/src/scripts/check_comparison.ts +23 -1
- package/src/scripts/check_condensation.ts +24 -3
- package/src/scripts/check_condensed_paths.ts +23 -2
- package/src/scripts/check_context_paths.ts +23 -4
- package/src/scripts/check_council_config_location.ts +23 -4
- package/src/scripts/check_council_layout.ts +23 -4
- package/src/scripts/check_council_references.ts +23 -4
- package/src/scripts/check_discovery_determinism.ts +24 -4
- package/src/scripts/check_gate_paths.ts +23 -4
- package/src/scripts/check_generated_artefact_headers.ts +23 -4
- package/src/scripts/check_generator_output_coverage.ts +23 -4
- package/src/scripts/check_gitignore_freshness.ts +23 -4
- package/src/scripts/check_iron_law_prominence.ts +23 -4
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_kernel_rule_bundle.ts +23 -4
- package/src/scripts/check_knowledge_cards.ts +23 -1
- package/src/scripts/check_md_language.ts +23 -4
- package/src/scripts/check_media_deps.ts +24 -1
- package/src/scripts/check_memory.ts +24 -2
- package/src/scripts/check_memory_proposal.ts +23 -4
- package/src/scripts/check_module_management_neutral.ts +23 -4
- package/src/scripts/check_no_conflict_markers.ts +23 -4
- package/src/scripts/check_no_external_sources.ts +23 -4
- package/src/scripts/check_no_local_settings_committed.ts +24 -4
- package/src/scripts/check_no_new_legacy_path.ts +23 -4
- package/src/scripts/check_no_roadmap_refs.ts +23 -4
- package/src/scripts/check_one_off_location.ts +23 -4
- package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
- package/src/scripts/check_portability.ts +24 -3
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_public_catalog_links.ts +23 -4
- package/src/scripts/check_public_links.ts +23 -4
- package/src/scripts/check_quality_regression.ts +23 -2
- package/src/scripts/check_references.ts +23 -4
- package/src/scripts/check_release_includes_discovery.ts +23 -4
- package/src/scripts/check_release_pr_shape.ts +23 -4
- package/src/scripts/check_release_published.ts +23 -4
- package/src/scripts/check_release_trunk_sync.ts +23 -4
- package/src/scripts/check_reply_consistency.ts +23 -4
- package/src/scripts/check_roadmap_trackable.ts +23 -4
- package/src/scripts/check_role_doc_links.ts +23 -4
- package/src/scripts/check_safety_floor_untouched.ts +24 -4
- package/src/scripts/check_site_links.ts +23 -1
- package/src/scripts/check_skill_gaps.ts +23 -1
- package/src/scripts/check_skill_requires.ts +23 -4
- package/src/scripts/check_structural_breaking.ts +24 -4
- package/src/scripts/check_surface_tiers.ts +23 -4
- package/src/scripts/check_template_pin_drift.ts +23 -4
- package/src/scripts/check_test_coverage_diff.ts +23 -4
- package/src/scripts/check_token_optimizer_freshness.ts +23 -4
- package/src/scripts/check_token_quality_golden.ts +23 -2
- package/src/scripts/check_token_regression.ts +23 -2
- package/src/scripts/check_tracked_but_ignored.ts +24 -4
- package/src/scripts/check_trigger_evals.ts +23 -4
- package/src/scripts/check_trunk_drift.ts +24 -1
- package/src/scripts/check_update_banner.ts +23 -4
- package/src/scripts/ci_summary.ts +23 -4
- package/src/scripts/ci_time_ratio.ts +23 -4
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/compile_router.ts +23 -4
- package/src/scripts/condense.ts +23 -2
- package/src/scripts/condense_memory.ts +24 -2
- package/src/scripts/config/packs.ts +24 -4
- package/src/scripts/config/session_profiles.ts +23 -4
- package/src/scripts/context_hygiene_hook.ts +24 -3
- package/src/scripts/cost_by_conversation.ts +23 -4
- package/src/scripts/cost_summary.ts +23 -4
- package/src/scripts/council_cli.ts +35 -7
- package/src/scripts/council_prune.ts +25 -2
- package/src/scripts/cross_repo_retrieve.ts +23 -4
- package/src/scripts/discovery_stats.ts +23 -4
- package/src/scripts/evidence_report.ts +23 -1
- package/src/scripts/export_replay_corpus.ts +23 -2
- package/src/scripts/extract_audit_patterns.ts +23 -1
- package/src/scripts/first_run_gate_hook.ts +24 -3
- package/src/scripts/gen_discovery_baseline.ts +23 -4
- package/src/scripts/generate_capabilities_index.ts +24 -5
- package/src/scripts/generate_capability_matrix.ts +23 -4
- package/src/scripts/generate_catalog.ts +23 -1
- package/src/scripts/generate_command_flows.ts +23 -4
- package/src/scripts/generate_cookbook.ts +23 -4
- package/src/scripts/generate_index.ts +23 -4
- package/src/scripts/generate_ownership_matrix.ts +23 -1
- package/src/scripts/generate_pack_manifests.ts +24 -5
- package/src/scripts/generate_role_experiences_catalog.ts +23 -4
- package/src/scripts/hooks/block_no_verify.ts +23 -4
- package/src/scripts/hooks/design_slop_hook.ts +24 -3
- package/src/scripts/hooks/dispatch_hook.ts +47 -14
- package/src/scripts/hooks/replay_hook.ts +23 -2
- package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
- package/src/scripts/hooks_doctor.ts +23 -2
- package/src/scripts/hooks_status.ts +23 -2
- package/src/scripts/injection_scan_hook.ts +24 -5
- package/src/scripts/install.ts +72 -44
- package/src/scripts/inventory_abstraction_budget.ts +23 -1
- package/src/scripts/inventory_frontmatter.ts +23 -1
- package/src/scripts/inventory_meta_layers.ts +23 -1
- package/src/scripts/iron_law_sha.ts +23 -4
- package/src/scripts/janitor.ts +23 -4
- package/src/scripts/knowledge_global_cli.ts +24 -2
- package/src/scripts/linked_projects_list.ts +23 -4
- package/src/scripts/lint_agent_security.ts +23 -4
- package/src/scripts/lint_agent_skill_names.ts +23 -4
- package/src/scripts/lint_agents_layout.ts +23 -4
- package/src/scripts/lint_agents_md.ts +23 -4
- package/src/scripts/lint_archived_skills.ts +23 -4
- package/src/scripts/lint_artefact_frontmatter.ts +23 -4
- package/src/scripts/lint_bench_ab.ts +23 -4
- package/src/scripts/lint_bench_corpus.ts +23 -2
- package/src/scripts/lint_command_flow_coverage.ts +23 -4
- package/src/scripts/lint_command_routing.ts +23 -4
- package/src/scripts/lint_command_tiers.ts +23 -2
- package/src/scripts/lint_command_verbs.ts +23 -4
- package/src/scripts/lint_commit_subjects.ts +24 -4
- package/src/scripts/lint_confusables.ts +25 -5
- package/src/scripts/lint_context_spine_usage.ts +23 -4
- package/src/scripts/lint_discovery_manifest.ts +23 -4
- package/src/scripts/lint_discovery_vocabulary.ts +23 -4
- package/src/scripts/lint_empty_roadmaps.ts +23 -4
- package/src/scripts/lint_eval_freshness.ts +23 -4
- package/src/scripts/lint_examples.ts +23 -4
- package/src/scripts/lint_explain_trace.ts +23 -4
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_flows.ts +23 -4
- package/src/scripts/lint_framework_leakage.ts +23 -4
- package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
- package/src/scripts/lint_ghostwriter_source.ts +23 -4
- package/src/scripts/lint_global_paths.ts +23 -2
- package/src/scripts/lint_handoffs.ts +23 -4
- package/src/scripts/lint_hidden_unicode.ts +24 -5
- package/src/scripts/lint_hook_concern_budget.ts +23 -4
- package/src/scripts/lint_hook_manifest.ts +23 -2
- package/src/scripts/lint_instruction_smuggling.ts +25 -5
- package/src/scripts/lint_legal_pack.ts +23 -1
- package/src/scripts/lint_load_context.ts +23 -4
- package/src/scripts/lint_marketplace.ts +24 -3
- package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
- package/src/scripts/lint_mcp_config_security.ts +25 -5
- package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
- package/src/scripts/lint_media_policy_linkage.ts +23 -4
- package/src/scripts/lint_missions.ts +23 -4
- package/src/scripts/lint_model_tier_coverage.ts +23 -4
- package/src/scripts/lint_namespace.ts +23 -4
- package/src/scripts/lint_namespace_collisions.ts +23 -4
- package/src/scripts/lint_new_skill_gate.ts +23 -4
- package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
- package/src/scripts/lint_one_off_age.ts +23 -4
- package/src/scripts/lint_orchestration_dsl.ts +23 -4
- package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
- package/src/scripts/lint_pack_boundaries.ts +23 -4
- package/src/scripts/lint_pack_dependencies.ts +23 -2
- package/src/scripts/lint_pack_first_win.ts +23 -4
- package/src/scripts/lint_pack_risk_class.ts +23 -1
- package/src/scripts/lint_persona_governance.ts +23 -4
- package/src/scripts/lint_positioning.ts +23 -4
- package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
- package/src/scripts/lint_readme_jargon.ts +23 -4
- package/src/scripts/lint_readme_size.ts +23 -4
- package/src/scripts/lint_regression.ts +23 -4
- package/src/scripts/lint_roadmap_blockers.ts +23 -4
- package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
- package/src/scripts/lint_roadmap_complexity.ts +23 -4
- package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
- package/src/scripts/lint_role_experiences.ts +23 -4
- package/src/scripts/lint_rule_interactions.ts +23 -4
- package/src/scripts/lint_rule_tiers.ts +24 -3
- package/src/scripts/lint_showcase_sessions.ts +23 -4
- package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
- package/src/scripts/lint_skill_originality.ts +23 -4
- package/src/scripts/lint_skill_tools.ts +23 -4
- package/src/scripts/lint_subagent_determinism.ts +23 -4
- package/src/scripts/lint_ticket_buildable.ts +23 -4
- package/src/scripts/lint_topics_yaml.ts +23 -4
- package/src/scripts/lint_trust_coherence.ts +23 -4
- package/src/scripts/lint_value_dashboard.ts +23 -4
- package/src/scripts/lint_workflow_security.ts +23 -4
- package/src/scripts/lint_workspace_boundary.ts +23 -4
- package/src/scripts/mcp_parity_smoke.ts +23 -2
- package/src/scripts/mcp_render.ts +23 -4
- package/src/scripts/mcp_telemetry_health.ts +23 -4
- package/src/scripts/mcp_telemetry_query.ts +23 -4
- package/src/scripts/mcp_telemetry_store.ts +23 -4
- package/src/scripts/measure_augment_budget.ts +23 -1
- package/src/scripts/measure_density.ts +23 -1
- package/src/scripts/measure_frugality_savings.ts +23 -1
- package/src/scripts/measure_markitdown_lift.ts +23 -1
- package/src/scripts/measure_patterns.ts +23 -1
- package/src/scripts/measure_projection_bytes.ts +23 -1
- package/src/scripts/measure_rule_budget.ts +23 -4
- package/src/scripts/measure_skill_reduction.ts +23 -1
- package/src/scripts/memory_hash.ts +24 -2
- package/src/scripts/memory_lookup.ts +24 -2
- package/src/scripts/memory_report.ts +24 -2
- package/src/scripts/memory_signal.ts +24 -2
- package/src/scripts/memory_status.ts +26 -2
- package/src/scripts/migrate_command_suggestions.ts +23 -4
- package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
- package/src/scripts/migration_status.ts +25 -4
- package/src/scripts/mine_missing_guardrails.ts +23 -1
- package/src/scripts/mine_session.ts +23 -1
- package/src/scripts/minimal_safe_diff_hook.ts +24 -3
- package/src/scripts/new_skill.ts +23 -3
- package/src/scripts/onboarding_gate_hook.ts +24 -3
- package/src/scripts/parity/coverage_diff.ts +25 -3
- package/src/scripts/parity/phase_gate.ts +25 -4
- package/src/scripts/parity/replay.ts +25 -3
- package/src/scripts/pattern_share.ts +23 -4
- package/src/scripts/plan_physical_move.ts +23 -4
- package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
- package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
- package/src/scripts/prediction-pool/score_ev.ts +24 -3
- package/src/scripts/print_required_checks.ts +24 -4
- package/src/scripts/probe_host_compliance.ts +23 -2
- package/src/scripts/probe_projection_fidelity.ts +23 -1
- package/src/scripts/probe_skill_registration.ts +24 -2
- package/src/scripts/profile_staleness_hook.ts +24 -3
- package/src/scripts/profile_use.ts +23 -4
- package/src/scripts/project_thin_rules.ts +23 -3
- package/src/scripts/propose_modules_config.ts +23 -4
- package/src/scripts/prototype_lint_contradictions.ts +23 -1
- package/src/scripts/prove_pack_extractable.ts +23 -4
- package/src/scripts/readme_linter.ts +23 -3
- package/src/scripts/redact_hook_capture.ts +23 -4
- package/src/scripts/refine_ticket_detect.ts +23 -4
- package/src/scripts/release.ts +23 -4
- package/src/scripts/render_benchmark_composite.ts +23 -4
- package/src/scripts/render_benchmark_md.ts +23 -4
- package/src/scripts/roadmap_progress_hook.ts +46 -16
- package/src/scripts/run_skill_evals.ts +23 -4
- package/src/scripts/runtime_dispatcher.ts +23 -4
- package/src/scripts/runtime_registry.ts +23 -4
- package/src/scripts/score_skill_selection.ts +23 -1
- package/src/scripts/security_audit_config.ts +24 -5
- package/src/scripts/skill_collision_clusters.ts +23 -4
- package/src/scripts/skill_discovery.ts +23 -4
- package/src/scripts/skill_linter.ts +23 -2
- package/src/scripts/skill_preview.ts +23 -4
- package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
- package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
- package/src/scripts/skill_usage_collect.ts +23 -4
- package/src/scripts/smoke_path_resolution.ts +23 -4
- package/src/scripts/smoke_quickstart.ts +23 -4
- package/src/scripts/snapshot_agent_outputs.ts +23 -4
- package/src/scripts/spotcheck_thin_root.ts +23 -4
- package/src/scripts/sync_agent_settings.ts +23 -4
- package/src/scripts/sync_github_metadata.ts +23 -4
- package/src/scripts/sync_gitignore.ts +23 -4
- package/src/scripts/telegraph_stats.ts +23 -4
- package/src/scripts/tool_registry.ts +24 -4
- package/src/scripts/trigger_coverage.ts +23 -4
- package/src/scripts/update_counts.ts +23 -4
- package/src/scripts/update_prices.ts +23 -1
- package/src/scripts/validate_agent_settings.ts +23 -4
- package/src/scripts/validate_decision_engine.ts +23 -4
- package/src/scripts/validate_discovery_manifest.ts +23 -4
- package/src/scripts/validate_frontmatter.ts +23 -2
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/scripts/validate_safe_paths.ts +24 -4
- package/src/scripts/validate_telegraph_carveouts.ts +23 -4
- package/src/scripts/verify_before_complete_hook.ts +24 -3
- package/src/scripts/verify_physical_move.ts +23 -4
- package/src/scripts/wrapper_freshness_hook.ts +107 -8
- package/tests/fixtures/hooks/README.md +92 -0
- package/tests/fixtures/hooks/agent_error.json +7 -0
- package/tests/fixtures/hooks/post_tool_use.json +13 -0
- package/tests/fixtures/hooks/pre_compact.json +7 -0
- package/tests/fixtures/hooks/pre_tool_use.json +9 -0
- package/tests/fixtures/hooks/session_end.json +6 -0
- package/tests/fixtures/hooks/session_start.json +6 -0
- package/tests/fixtures/hooks/stop.json +6 -0
- package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
|
@@ -5,11 +5,14 @@
|
|
|
5
5
|
# Two opt-in checks run on relevant staged paths and short-circuit
|
|
6
6
|
# otherwise:
|
|
7
7
|
# 1. agents/roadmaps-progress.md sync (against agents/roadmaps/*.md)
|
|
8
|
-
# 2. ADR-013 per-artefact frontmatter contract (
|
|
8
|
+
# 2. ADR-013 per-artefact frontmatter contract (source repo only)
|
|
9
|
+
#
|
|
10
|
+
# The runtime is Node/tsx (py2ts migration) — both checks run through the
|
|
11
|
+
# `agent-config` CLI / the package tsx runner, never python3.
|
|
9
12
|
#
|
|
10
13
|
# To run manually:
|
|
11
14
|
# ./agent-config roadmap:progress-check
|
|
12
|
-
#
|
|
15
|
+
# ./scripts-run src/scripts/lint_artefact_frontmatter
|
|
13
16
|
#
|
|
14
17
|
# To uninstall:
|
|
15
18
|
# rm .git/hooks/pre-commit
|
|
@@ -20,11 +23,11 @@ staged="$(git diff --cached --name-only --diff-filter=ACMR 2>/dev/null || true)"
|
|
|
20
23
|
roadmap_relevant=false
|
|
21
24
|
frontmatter_relevant=false
|
|
22
25
|
case "$staged" in
|
|
23
|
-
*agents/roadmaps/*.md*|*agents/roadmaps-progress.md*|*.augment/scripts/update_roadmap_progress.
|
|
26
|
+
*agents/roadmaps/*.md*|*agents/roadmaps-progress.md*|*.augment/scripts/update_roadmap_progress.ts*)
|
|
24
27
|
roadmap_relevant=true ;;
|
|
25
28
|
esac
|
|
26
29
|
case "$staged" in
|
|
27
|
-
*.agent-src.uncondensed/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.
|
|
30
|
+
*.agent-src.uncondensed/*.md*|*src/agent-src/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.ts*)
|
|
28
31
|
frontmatter_relevant=true ;;
|
|
29
32
|
esac
|
|
30
33
|
|
|
@@ -32,33 +35,32 @@ if ! $roadmap_relevant && ! $frontmatter_relevant; then
|
|
|
32
35
|
exit 0
|
|
33
36
|
fi
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
# Resolve the agent-config CLI: project wrapper first (customization wins),
|
|
39
|
+
# then the global binary (ADR-020 global-only consumers).
|
|
40
|
+
agent_config_bin() {
|
|
41
|
+
if [ -x "./agent-config" ]; then
|
|
42
|
+
printf '%s\n' "./agent-config"
|
|
43
|
+
return 0
|
|
44
|
+
fi
|
|
45
|
+
if command -v agent-config >/dev/null 2>&1; then
|
|
46
|
+
printf '%s\n' "agent-config"
|
|
47
|
+
return 0
|
|
48
|
+
fi
|
|
43
49
|
return 1
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
# --- Check 1: roadmap progress dashboard sync --------------------------
|
|
47
53
|
if $roadmap_relevant; then
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
|
|
53
|
-
if [ -z "$rp_script" ]; then
|
|
54
|
-
echo "⚠️ pre-commit: update_roadmap_progress.py not found — skipping roadmap check." >&2
|
|
55
|
-
elif ! python3 "$rp_script" --check >/dev/null 2>&1; then
|
|
54
|
+
ac_bin="$(agent_config_bin || true)"
|
|
55
|
+
if [ -z "$ac_bin" ]; then
|
|
56
|
+
echo "⚠️ pre-commit: agent-config CLI not found — skipping roadmap check." >&2
|
|
57
|
+
echo " Install it: npm install -g @event4u/agent-config" >&2
|
|
58
|
+
elif ! "$ac_bin" roadmap:progress-check >/dev/null 2>&1; then
|
|
56
59
|
echo "❌ agents/roadmaps-progress.md is stale relative to your staged changes." >&2
|
|
57
60
|
echo "" >&2
|
|
58
61
|
echo " Regenerate the dashboard with one of:" >&2
|
|
59
|
-
echo "
|
|
62
|
+
echo " $ac_bin roadmap:progress" >&2
|
|
60
63
|
echo " task roadmap-progress" >&2
|
|
61
|
-
echo " python3 $rp_script" >&2
|
|
62
64
|
echo "" >&2
|
|
63
65
|
echo " Then \`git add agents/roadmaps-progress.md\` and retry the commit." >&2
|
|
64
66
|
echo "" >&2
|
|
@@ -69,19 +71,31 @@ if $roadmap_relevant; then
|
|
|
69
71
|
fi
|
|
70
72
|
|
|
71
73
|
# --- Check 2: ADR-013 artefact frontmatter contract --------------------
|
|
74
|
+
# Source-repo concern: the linter and the artefact tree only exist in the
|
|
75
|
+
# agent-config source repo; consumer repos skip silently.
|
|
72
76
|
if $frontmatter_relevant; then
|
|
73
|
-
fm_script="
|
|
74
|
-
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
+
fm_script=""
|
|
78
|
+
if [ -f "src/scripts/lint_artefact_frontmatter.ts" ]; then
|
|
79
|
+
fm_script="src/scripts/lint_artefact_frontmatter.ts"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
run_fm() {
|
|
83
|
+
if [ -x "./scripts-run" ]; then
|
|
84
|
+
./scripts-run src/scripts/lint_artefact_frontmatter --quiet
|
|
85
|
+
elif [ -x "node_modules/.bin/tsx" ]; then
|
|
86
|
+
node_modules/.bin/tsx "$fm_script" --quiet
|
|
87
|
+
else
|
|
88
|
+
npx tsx "$fm_script" --quiet
|
|
89
|
+
fi
|
|
90
|
+
}
|
|
77
91
|
|
|
78
92
|
if [ -z "$fm_script" ]; then
|
|
79
|
-
|
|
80
|
-
elif !
|
|
93
|
+
: # not the source repo — frontmatter contract does not apply
|
|
94
|
+
elif ! run_fm >/dev/null 2>&1; then
|
|
81
95
|
echo "❌ Artefact frontmatter lint failed (ADR-013 contract violation)." >&2
|
|
82
96
|
echo "" >&2
|
|
83
97
|
echo " Re-run for details:" >&2
|
|
84
|
-
echo "
|
|
98
|
+
echo " ./scripts-run src/scripts/lint_artefact_frontmatter" >&2
|
|
85
99
|
echo " task lint-artefact-frontmatter" >&2
|
|
86
100
|
echo "" >&2
|
|
87
101
|
echo " Common fixes:" >&2
|
|
@@ -158,15 +158,20 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
|
|
|
158
158
|
|
|
159
159
|
---
|
|
160
160
|
|
|
161
|
-
## Quality Gates (
|
|
161
|
+
## Quality Gates (remote CI by default)
|
|
162
162
|
|
|
163
163
|
Every roadmap must pass the project's quality pipeline before it is
|
|
164
|
-
considered done. **
|
|
164
|
+
considered done. **Where** that gate runs depends on
|
|
165
|
+
`quality.local_auto_run`: `false` or missing (default) → agent does NOT
|
|
166
|
+
run the pipeline locally — user runs it manually, remote CI on the PR
|
|
167
|
+
is the authoritative gate; run-end report says *"quality gates
|
|
168
|
+
delegated to remote CI"*, never that the tools passed. When
|
|
169
|
+
`local_auto_run: true`, **when** the local pipeline runs during
|
|
165
170
|
`/roadmap:process-step|phase|full` is governed by
|
|
166
171
|
`roadmap.quality_cadence` in `.agent-settings.yml`
|
|
167
172
|
(`end_of_roadmap` default → once before archival; `per_phase` → after
|
|
168
|
-
every phase; `per_step` → after every step)
|
|
169
|
-
|
|
173
|
+
every phase; `per_step` → after every step), with a final fresh run
|
|
174
|
+
before "complete" per `verify-before-complete`.
|
|
170
175
|
|
|
171
176
|
Common commands:
|
|
172
177
|
|
|
@@ -22,9 +22,9 @@ consumer's `.augment/`.
|
|
|
22
22
|
|
|
23
23
|
Use **logical names** rooted at the source — never the
|
|
24
24
|
`.agent-src.uncondensed/` prefix. The condense-time rewriter
|
|
25
|
-
(`scripts/condense.
|
|
25
|
+
(`scripts/condense.ts::_rewrite_paths`) resolves logical names to
|
|
26
26
|
deployment-correct relative paths; the schema regex
|
|
27
|
-
(`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.
|
|
27
|
+
(`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.ts`
|
|
28
28
|
both reject the legacy prefix.
|
|
29
29
|
|
|
30
30
|
| Write this (logical) | Forbidden (legacy) |
|
|
@@ -121,7 +121,7 @@ for full detail; rules are pointers, not playbooks.}
|
|
|
121
121
|
| `tier` | yes | `kernel` (Iron Law floor), `tier-1` (default), `tier-2` (full profile only). Legacy values still accepted. |
|
|
122
122
|
| `description` | yes | One sentence, ≤ 500 chars. Trigger-clarity wins over poetry. |
|
|
123
123
|
| `source` | yes | `package` (this repo) or `project` (consumer override). |
|
|
124
|
-
| `load_context` | no | Lazy context list — logical names only. Budget enforced by `lint_load_context.
|
|
124
|
+
| `load_context` | no | Lazy context list — logical names only. Budget enforced by `lint_load_context.ts`. |
|
|
125
125
|
| `load_context_eager` | no | Eager context list — counts against per-rule char budget. |
|
|
126
126
|
| `triggers` | no | Required on non-kernel rules per `rule-router.md`. |
|
|
127
127
|
| `routes_to` | no | `skill:`, `guideline:`, `command:`, `contract:` targets. Forbidden on kernel rules. |
|
|
@@ -18,8 +18,8 @@ high-risk PRs.
|
|
|
18
18
|
| File in package | Copy to | Purpose |
|
|
19
19
|
|---|---|---|
|
|
20
20
|
| `templates/github-workflows/pr-risk-review.yml` | `.github/workflows/pr-risk-review.yml` | GitHub Actions workflow |
|
|
21
|
-
| `templates/scripts/pr_risk_review.ts` | `scripts/pr_risk_review.
|
|
22
|
-
| `templates/scripts/pr_review_routing.ts` | `scripts/pr_review_routing.
|
|
21
|
+
| `templates/scripts/pr_risk_review.ts` | `scripts/pr_risk_review.ts` | Risk classifier (TypeScript, run via tsx) |
|
|
22
|
+
| `templates/scripts/pr_review_routing.ts` | `scripts/pr_review_routing.ts` | Routing classifier |
|
|
23
23
|
| `templates/scripts/pr-risk-config.example.yml` | `.github/pr-risk-config.yml` | Risk patterns (optional) |
|
|
24
24
|
| `templates/scripts/ownership-map.example.yml` | `.github/ownership-map.yml` | Ownership entries (optional) |
|
|
25
25
|
| `templates/scripts/historical-bug-patterns.example.yml` | `.github/historical-bug-patterns.yml` | Registered failure modes (optional) |
|
|
@@ -37,7 +37,7 @@ cp .augment/templates/scripts/historical-bug-patterns.example.yml .github/histor
|
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
The routing step in the workflow is **conditional** — it only runs if
|
|
40
|
-
`scripts/pr_review_routing.
|
|
40
|
+
`scripts/pr_review_routing.ts` exists, so risk classification alone works
|
|
41
41
|
without routing being installed.
|
|
42
42
|
|
|
43
43
|
Create the three labels once (or let them be auto-created on first run):
|
|
@@ -118,8 +118,8 @@ the full schema.
|
|
|
118
118
|
|
|
119
119
|
```bash
|
|
120
120
|
rm .github/workflows/pr-risk-review.yml
|
|
121
|
-
rm scripts/pr_risk_review.
|
|
122
|
-
rm scripts/pr_review_routing.
|
|
121
|
+
rm scripts/pr_risk_review.ts
|
|
122
|
+
rm scripts/pr_review_routing.ts
|
|
123
123
|
rm .github/pr-risk-config.yml .github/ownership-map.yml .github/historical-bug-patterns.yml
|
|
124
124
|
gh label delete risk:low risk:medium risk:high
|
|
125
125
|
```
|
|
@@ -168,7 +168,7 @@ PRs.
|
|
|
168
168
|
| File in package | Copy to | Purpose |
|
|
169
169
|
|---|---|---|
|
|
170
170
|
| `templates/github-workflows/memory-hygiene.yml` | `.github/workflows/memory-hygiene.yml` | Weekly staleness workflow |
|
|
171
|
-
| `templates/scripts/check_memory.ts` | `scripts/check_memory.
|
|
171
|
+
| `templates/scripts/check_memory.ts` | `scripts/check_memory.ts` | YAML schema + staleness validator |
|
|
172
172
|
|
|
173
173
|
## Install
|
|
174
174
|
|
|
@@ -53,7 +53,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
53
53
|
import * as fs from 'node:fs';
|
|
54
54
|
import * as path from 'node:path';
|
|
55
55
|
import process from 'node:process';
|
|
56
|
-
import { pathToFileURL } from 'node:url';
|
|
56
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
57
57
|
import YAML, { parseDocument } from 'yaml';
|
|
58
58
|
|
|
59
59
|
type Severity = 'error' | 'warning' | 'info';
|
|
@@ -631,8 +631,30 @@ function _emit(findings: Finding[], fmt: string): number {
|
|
|
631
631
|
return errors.length > 0 ? 1 : 0;
|
|
632
632
|
}
|
|
633
633
|
|
|
634
|
+
function _isCliEntry(): boolean {
|
|
635
|
+
if (process.argv[1] === undefined) {
|
|
636
|
+
return false;
|
|
637
|
+
}
|
|
638
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
639
|
+
if (import.meta.url === argvUrl) {
|
|
640
|
+
return true;
|
|
641
|
+
}
|
|
642
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
643
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
644
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
645
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
646
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
647
|
+
try {
|
|
648
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
649
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
650
|
+
return here === argv;
|
|
651
|
+
} catch {
|
|
652
|
+
return false;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
|
|
634
656
|
const _isMain =
|
|
635
|
-
|
|
657
|
+
_isCliEntry();
|
|
636
658
|
if (_isMain) {
|
|
637
659
|
process.exit(main());
|
|
638
660
|
}
|
|
@@ -332,10 +332,29 @@ function _set_intake_root_for_test(root: string): void {
|
|
|
332
332
|
INTAKE_ROOT = root;
|
|
333
333
|
}
|
|
334
334
|
|
|
335
|
-
|
|
336
|
-
process.argv[1]
|
|
337
|
-
|
|
338
|
-
|
|
335
|
+
function _isCliEntry(): boolean {
|
|
336
|
+
if (process.argv[1] === undefined) {
|
|
337
|
+
return false;
|
|
338
|
+
}
|
|
339
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
340
|
+
if (import.meta.url === argvUrl) {
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
344
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
345
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
346
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
347
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
348
|
+
try {
|
|
349
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
350
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
351
|
+
return here === argv;
|
|
352
|
+
} catch {
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
339
358
|
process.exit(main());
|
|
340
359
|
}
|
|
341
360
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Historical bug patterns — consumed by scripts/pr_review_routing.
|
|
1
|
+
# Historical bug patterns — consumed by scripts/pr_review_routing.ts
|
|
2
2
|
#
|
|
3
3
|
# Copy this file to `.github/historical-bug-patterns.yml` (preferred) or
|
|
4
4
|
# `agents/historical-bug-patterns.yml` and curate the patterns from your
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
import { createHash } from 'node:crypto';
|
|
29
29
|
import * as fs from 'node:fs';
|
|
30
30
|
import process from 'node:process';
|
|
31
|
-
import { pathToFileURL } from 'node:url';
|
|
31
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
32
32
|
import * as path from 'node:path';
|
|
33
33
|
import YAML, { parseDocument } from 'yaml';
|
|
34
34
|
|
|
@@ -326,8 +326,30 @@ function _parseArgs(argv: string[]): ParsedArgs {
|
|
|
326
326
|
return args;
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
+
function _isCliEntry(): boolean {
|
|
330
|
+
if (process.argv[1] === undefined) {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
334
|
+
if (import.meta.url === argvUrl) {
|
|
335
|
+
return true;
|
|
336
|
+
}
|
|
337
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
338
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
339
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
340
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
341
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
342
|
+
try {
|
|
343
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
344
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
345
|
+
return here === argv;
|
|
346
|
+
} catch {
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
329
351
|
const _isMain =
|
|
330
|
-
|
|
352
|
+
_isCliEntry();
|
|
331
353
|
if (_isMain) {
|
|
332
354
|
process.exit(main());
|
|
333
355
|
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
import * as fs from 'node:fs';
|
|
34
34
|
import * as path from 'node:path';
|
|
35
35
|
import process from 'node:process';
|
|
36
|
-
import { pathToFileURL } from 'node:url';
|
|
36
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
37
37
|
import YAML, { parseDocument } from 'yaml';
|
|
38
38
|
|
|
39
39
|
|
|
@@ -1060,8 +1060,30 @@ function _escapeNonAscii(s: string): string {
|
|
|
1060
1060
|
return out;
|
|
1061
1061
|
}
|
|
1062
1062
|
|
|
1063
|
+
function _isCliEntry(): boolean {
|
|
1064
|
+
if (process.argv[1] === undefined) {
|
|
1065
|
+
return false;
|
|
1066
|
+
}
|
|
1067
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
1068
|
+
if (import.meta.url === argvUrl) {
|
|
1069
|
+
return true;
|
|
1070
|
+
}
|
|
1071
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
1072
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
1073
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
1074
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
1075
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
1076
|
+
try {
|
|
1077
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
1078
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
1079
|
+
return here === argv;
|
|
1080
|
+
} catch {
|
|
1081
|
+
return false;
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1063
1085
|
const _isMain =
|
|
1064
|
-
|
|
1086
|
+
_isCliEntry();
|
|
1065
1087
|
if (_isMain) {
|
|
1066
1088
|
process.exit(main());
|
|
1067
1089
|
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
import * as fs from 'node:fs';
|
|
31
31
|
import * as path from 'node:path';
|
|
32
32
|
import process from 'node:process';
|
|
33
|
-
import { pathToFileURL } from 'node:url';
|
|
33
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
34
34
|
import YAML, { parseDocument } from 'yaml';
|
|
35
35
|
|
|
36
36
|
import * as memory_status from './memory_status.js';
|
|
@@ -839,8 +839,30 @@ export function main(): number {
|
|
|
839
839
|
return 0;
|
|
840
840
|
}
|
|
841
841
|
|
|
842
|
+
function _isCliEntry(): boolean {
|
|
843
|
+
if (process.argv[1] === undefined) {
|
|
844
|
+
return false;
|
|
845
|
+
}
|
|
846
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
847
|
+
if (import.meta.url === argvUrl) {
|
|
848
|
+
return true;
|
|
849
|
+
}
|
|
850
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
851
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
852
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
853
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
854
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
855
|
+
try {
|
|
856
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
857
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
858
|
+
return here === argv;
|
|
859
|
+
} catch {
|
|
860
|
+
return false;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
842
864
|
const _isMain =
|
|
843
|
-
|
|
865
|
+
_isCliEntry();
|
|
844
866
|
if (_isMain) {
|
|
845
867
|
process.exit(main());
|
|
846
868
|
}
|
|
@@ -31,7 +31,7 @@ import * as crypto from 'node:crypto';
|
|
|
31
31
|
import * as fs from 'node:fs';
|
|
32
32
|
import * as path from 'node:path';
|
|
33
33
|
import process from 'node:process';
|
|
34
|
-
import { pathToFileURL } from 'node:url';
|
|
34
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
35
35
|
|
|
36
36
|
// Mutable so tests can repoint at a tmp tree (monkeypatch parity).
|
|
37
37
|
export let INTAKE_ROOT = path.join('agents', 'memory', 'intake');
|
|
@@ -415,8 +415,30 @@ export function main(): number {
|
|
|
415
415
|
return 0;
|
|
416
416
|
}
|
|
417
417
|
|
|
418
|
+
function _isCliEntry(): boolean {
|
|
419
|
+
if (process.argv[1] === undefined) {
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
423
|
+
if (import.meta.url === argvUrl) {
|
|
424
|
+
return true;
|
|
425
|
+
}
|
|
426
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
427
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
428
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
429
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
430
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
431
|
+
try {
|
|
432
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
433
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
434
|
+
return here === argv;
|
|
435
|
+
} catch {
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
418
440
|
const _isMain =
|
|
419
|
-
|
|
441
|
+
_isCliEntry();
|
|
420
442
|
if (_isMain) {
|
|
421
443
|
process.exit(main());
|
|
422
444
|
}
|
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import process from 'node:process';
|
|
25
|
-
import
|
|
25
|
+
import * as fs from 'node:fs';
|
|
26
|
+
import * as path from 'node:path';
|
|
27
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
26
28
|
|
|
27
29
|
// Retrieval contract version served by the file-backed backend.
|
|
28
30
|
// Source of truth: internal/schemas/retrieval-v1.schema.json.
|
|
@@ -176,8 +178,30 @@ export function main(): number {
|
|
|
176
178
|
return 0;
|
|
177
179
|
}
|
|
178
180
|
|
|
181
|
+
function _isCliEntry(): boolean {
|
|
182
|
+
if (process.argv[1] === undefined) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
186
|
+
if (import.meta.url === argvUrl) {
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
190
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
191
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
192
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
193
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
194
|
+
try {
|
|
195
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
196
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
197
|
+
return here === argv;
|
|
198
|
+
} catch {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
179
203
|
const _isMain =
|
|
180
|
-
|
|
204
|
+
_isCliEntry();
|
|
181
205
|
if (_isMain) {
|
|
182
206
|
try {
|
|
183
207
|
process.exitCode = main();
|
|
@@ -27,7 +27,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
27
27
|
import { createRequire } from 'node:module';
|
|
28
28
|
import * as fs from 'node:fs';
|
|
29
29
|
import process from 'node:process';
|
|
30
|
-
import { pathToFileURL } from 'node:url';
|
|
30
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
31
31
|
import * as path from 'node:path';
|
|
32
32
|
import type * as YamlModule from 'yaml';
|
|
33
33
|
|
|
@@ -515,9 +515,30 @@ export function main(argv: string[] = process.argv.slice(2)): number {
|
|
|
515
515
|
return 0;
|
|
516
516
|
}
|
|
517
517
|
|
|
518
|
+
function _isCliEntry(): boolean {
|
|
519
|
+
if (process.argv[1] === undefined) {
|
|
520
|
+
return false;
|
|
521
|
+
}
|
|
522
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
523
|
+
if (import.meta.url === argvUrl) {
|
|
524
|
+
return true;
|
|
525
|
+
}
|
|
526
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
527
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
528
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
529
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
530
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
531
|
+
try {
|
|
532
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
533
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
534
|
+
return here === argv;
|
|
535
|
+
} catch {
|
|
536
|
+
return false;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
518
540
|
const _invokedDirectly =
|
|
519
|
-
|
|
520
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
541
|
+
_isCliEntry();
|
|
521
542
|
if (_invokedDirectly) {
|
|
522
543
|
process.exitCode = main();
|
|
523
544
|
}
|
|
Binary file
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import * as fs from 'node:fs';
|
|
17
17
|
import process from 'node:process';
|
|
18
|
-
import { pathToFileURL } from 'node:url';
|
|
18
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
19
19
|
import * as path from 'node:path';
|
|
20
20
|
|
|
21
21
|
import { record_event } from './telemetry/boundary.js';
|
|
@@ -247,9 +247,30 @@ function _osErr(exc: unknown): string {
|
|
|
247
247
|
return exc instanceof Error ? exc.message : String(exc);
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
function _isCliEntry(): boolean {
|
|
251
|
+
if (process.argv[1] === undefined) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
255
|
+
if (import.meta.url === argvUrl) {
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
259
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
260
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
261
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
262
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
263
|
+
try {
|
|
264
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
265
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
266
|
+
return here === argv;
|
|
267
|
+
} catch {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
250
272
|
const _invokedDirectly =
|
|
251
|
-
|
|
252
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
273
|
+
_isCliEntry();
|
|
253
274
|
if (_invokedDirectly) {
|
|
254
275
|
process.exitCode = main();
|
|
255
276
|
}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* failure on a row sourced from the log
|
|
12
12
|
*/
|
|
13
13
|
import process from 'node:process';
|
|
14
|
-
import
|
|
14
|
+
import * as fs from 'node:fs';
|
|
15
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
15
16
|
import * as path from 'node:path';
|
|
16
17
|
|
|
17
18
|
import { aggregate } from './telemetry/aggregator.js';
|
|
@@ -181,9 +182,30 @@ function _osErr(exc: unknown): string {
|
|
|
181
182
|
return exc instanceof Error ? exc.message : String(exc);
|
|
182
183
|
}
|
|
183
184
|
|
|
185
|
+
function _isCliEntry(): boolean {
|
|
186
|
+
if (process.argv[1] === undefined) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
190
|
+
if (import.meta.url === argvUrl) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
194
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
195
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
196
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
197
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
198
|
+
try {
|
|
199
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
200
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
201
|
+
return here === argv;
|
|
202
|
+
} catch {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
184
207
|
const _invokedDirectly =
|
|
185
|
-
|
|
186
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
208
|
+
_isCliEntry();
|
|
187
209
|
if (_invokedDirectly) {
|
|
188
210
|
process.exitCode = main();
|
|
189
211
|
}
|