@event4u/agent-config 16.2.0 → 16.3.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +89 -237
- package/README.md +14 -12
- package/dist/agent-src/commands/analyze/inbox.md +1 -1
- package/dist/agent-src/commands/analyze/roadmap-repos.md +1 -1
- package/dist/agent-src/commands/bug/fix.md +17 -2
- package/dist/agent-src/commands/feature/plan.md +1 -1
- package/dist/agent-src/commands/feature/roadmap.md +1 -1
- package/dist/agent-src/commands/fix/ci.md +1 -1
- package/dist/agent-src/commands/implement-ticket.md +1 -1
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +1 -1
- package/dist/agent-src/commands/roadmap/materialize.md +1 -1
- package/dist/agent-src/commands/roadmap/process-full.md +4 -4
- package/dist/agent-src/commands/roadmap/resolve-blockers.md +361 -0
- package/dist/agent-src/commands/roadmap/triage-parked.md +325 -0
- package/dist/agent-src/commands/roadmap.md +18 -4
- package/dist/agent-src/commands/tests/create.md +17 -3
- package/dist/agent-src/commands/tests/execute.md +22 -5
- package/dist/agent-src/contexts/authority/decision-revisit-gate-enforcement.md +43 -0
- package/dist/agent-src/contexts/communication/rules-auto/design-fidelity-enforcement.md +24 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +6 -6
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +32 -2
- package/dist/agent-src/contexts/execution/session-canary-enforcement-history.md +67 -0
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +101 -7
- package/dist/agent-src/rules/active-remediation.md +1 -1
- package/dist/agent-src/rules/autonomous-execution.md +1 -0
- package/dist/agent-src/rules/broken-access-control.md +1 -0
- package/dist/agent-src/rules/command-suggestion-policy.md +1 -0
- package/dist/agent-src/rules/context-hygiene.md +1 -1
- package/dist/agent-src/rules/decision-revisit-gate.md +16 -33
- package/dist/agent-src/rules/design-fidelity.md +13 -16
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -0
- package/dist/agent-src/rules/domain-safety-disclaimer.md +1 -0
- package/dist/agent-src/rules/domain-safety-pii.md +1 -0
- package/dist/agent-src/rules/domain-safety-retention.md +1 -0
- package/dist/agent-src/rules/engineering-safety-floor.md +1 -0
- package/dist/agent-src/rules/evaluator-independence.md +3 -2
- package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -0
- package/dist/agent-src/rules/finance-safety-floor.md +1 -0
- package/dist/agent-src/rules/git-history-discipline.md +1 -0
- package/dist/agent-src/rules/image-likeness-and-rights.md +1 -0
- package/dist/agent-src/rules/legal-safety-floor.md +3 -2
- package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -0
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -0
- package/dist/agent-src/rules/media-governance-routing.md +14 -17
- package/dist/agent-src/rules/persona-governance.md +2 -2
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +1 -1
- package/dist/agent-src/rules/question-not-instruction.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/runtime-safety.md +1 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +3 -2
- package/dist/agent-src/rules/session-canary.md +8 -62
- package/dist/agent-src/rules/settings-ask-protocol.md +1 -0
- package/dist/agent-src/rules/source-confidentiality.md +1 -0
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -0
- package/dist/agent-src/rules/tool-safety.md +1 -0
- package/dist/agent-src/rules/untrusted-input-defense.md +1 -0
- package/dist/agent-src/rules/user-interrupt-priority.md +1 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/dist/agent-src/scripts/deferral_carry.ts +339 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/dist/agent-src/skills/api-design/data/manifest.json +2 -2
- package/dist/agent-src/skills/api-testing/SKILL.md +17 -0
- package/dist/agent-src/skills/code-intelligence/SKILL.md +14 -2
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +2 -2
- package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
- package/dist/agent-src/skills/iconography/SKILL.md +1 -1
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +2 -2
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +11 -1
- package/dist/agent-src/skills/quality-tools/references/go-tools.md +76 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +104 -0
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -1
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +3 -3
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +7 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +17 -0
- package/dist/agent-src/skills/test-performance/SKILL.md +19 -1
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +2 -2
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/dist/cli/registry.js +1 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +92 -12
- package/dist/cli-delegate/check_update_banner.js +12 -1
- package/dist/cli-delegate/chunk-523HCFYO.js +90 -0
- package/dist/cli-delegate/{chunk-M2DPGFZ4.js → chunk-6V6TA25H.js} +22 -152
- package/dist/cli-delegate/chunk-7IQE3D5S.js +191 -0
- package/dist/cli-delegate/{chunk-6KFEC3G7.js → chunk-CQWX336L.js} +1 -1
- package/dist/cli-delegate/chunk-DEIV7XP7.js +108 -0
- package/dist/cli-delegate/chunk-EEHDXSYD.js +2040 -0
- package/dist/cli-delegate/{chunk-P6ZHP5W2.js → chunk-GKE7ZVFA.js} +4 -4
- package/dist/cli-delegate/chunk-JQOM7TTM.js +1201 -0
- package/dist/cli-delegate/{chunk-IGD6ERX6.js → chunk-JQVYKIZA.js} +10 -0
- package/dist/cli-delegate/{chunk-FC75PGJE.js → chunk-JY2I2DXV.js} +12 -1
- package/dist/cli-delegate/chunk-KB5FZ655.js +208 -0
- package/dist/cli-delegate/{chunk-7RQP4UDH.js → chunk-KR6EM23A.js} +235 -1455
- package/dist/cli-delegate/{chunk-LTYVIY76.js → chunk-LIYTLH6O.js} +1 -1
- package/dist/cli-delegate/{chunk-YJ72UIAK.js → chunk-NQ7WT43P.js} +1186 -244
- package/dist/cli-delegate/chunk-NXEILF2K.js +2160 -0
- package/dist/cli-delegate/{chunk-5R7HOLAF.js → chunk-NYX3L2PZ.js} +1 -1
- package/dist/cli-delegate/{chunk-4E2W63DA.js → chunk-OKJUIAPS.js} +62 -1
- package/dist/cli-delegate/{chunk-QAJS5YWY.js → chunk-PHD7OOLE.js} +2 -1
- package/dist/cli-delegate/{chunk-RGNIWTEA.js → chunk-QLDHIPWR.js} +1 -1
- package/dist/cli-delegate/{chunk-7XGBX6ZH.js → chunk-RQNNW7IF.js} +1314 -560
- package/dist/cli-delegate/{chunk-4XFP2Y3E.js → chunk-S4UMZNES.js} +1 -1
- package/dist/cli-delegate/{chunk-6KM6ORRY.js → chunk-S4YWNRKO.js} +24 -8
- package/dist/cli-delegate/{chunk-FP36SWJD.js → chunk-TRI6DQZ6.js} +2781 -340
- package/dist/cli-delegate/chunk-ULQRUR23.js +208 -0
- package/dist/cli-delegate/{chunk-NUHLI2RX.js → chunk-YCU3TIXH.js} +2 -0
- package/dist/cli-delegate/chunk-ZBZV2G5R.js +210 -0
- package/dist/cli-delegate/{chunk-WGXTVKCQ.js → chunk-ZUZKZYCN.js} +5 -3
- package/dist/cli-delegate/cmd_analyze_session.js +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +1 -1
- package/dist/cli-delegate/cmd_conformance.js +1167 -234
- package/dist/cli-delegate/cmd_doctor.js +13 -6
- package/dist/cli-delegate/cmd_doctor_neighbours.js +23 -0
- package/dist/cli-delegate/cmd_explain.js +5 -5
- package/dist/cli-delegate/cmd_export.js +11 -8
- package/dist/cli-delegate/cmd_fleet.js +3 -3
- package/dist/cli-delegate/cmd_handoff.js +10 -7
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +3 -1
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +3 -3
- package/dist/cli-delegate/cmd_preflight.js +6 -6
- package/dist/cli-delegate/cmd_prune.js +11 -8
- package/dist/cli-delegate/cmd_refresh.js +2 -1
- package/dist/cli-delegate/cmd_route_audit.js +8 -6
- package/dist/cli-delegate/cmd_route_explain.js +4 -4
- package/dist/cli-delegate/cmd_session_recycle.js +4 -3
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +11 -8
- package/dist/cli-delegate/cmd_settings_set.js +4 -4
- package/dist/cli-delegate/cmd_sync.js +11 -8
- package/dist/cli-delegate/cmd_uninstall.js +11 -8
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +3 -2
- package/dist/cli-delegate/cmd_validate.js +11 -8
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/deferral_carry.js +16 -0
- package/dist/cli-delegate/gate_execute.js +2 -2
- package/dist/cli-delegate/roadmap_gates.js +5 -5
- package/dist/cli-delegate/update_roadmap_progress.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +127 -75
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +7 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +6 -4
- package/dist/hooks/dispatch.js +5357 -6656
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/install/claudePathsPlan.js +47 -6
- package/dist/install/claudeRuleRewrite.js +7 -0
- package/dist/install/emit_host_rules_cli.js +39 -36
- package/dist/install/globalRuleScope.js +87 -0
- package/dist/install/host_rule_ownership.js +160 -0
- package/dist/install/install.mjs +2080 -1024
- package/dist/install/installThinLayer.js +261 -0
- package/dist/install/installedRuleLinks.js +176 -0
- package/dist/install/wizard-plan.js +24 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +31965 -27154
- package/dist/scripts/_lib/agent_settings.js +11 -0
- package/dist/scripts/_lib/claude_settings_hooks.js +10 -8
- package/dist/scripts/_lib/installed_layer.js +378 -0
- package/dist/scripts/_lib/lean_projection_mode.js +218 -15
- package/dist/scripts/_lib/rule_consequence_class.js +45 -0
- package/dist/scripts/_lib/rule_injection.js +67 -10
- package/dist/scripts/_lib/rule_law_section.js +122 -0
- package/dist/scripts/_lib/thin_rules.js +458 -0
- package/dist/scripts/_lib/windsurf_render.js +60 -0
- package/dist/scripts/condense.js +14 -26
- package/dist/scripts/project_thin_rules.js +14 -294
- package/dist/server/schemas/settings.js +6 -0
- package/dist/shared/skillRanking.js +74 -13
- package/docs/contracts/settings-classes.md +7 -5
- package/package.json +1 -1
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/src/agent-src/scripts/deferral_carry.ts +339 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/src/config/agent-settings.template.yml +62 -22
- package/src/config/continuity-surface.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +96 -3
- package/src/config/gate-violation-baselines.json +17 -9
- package/src/config/hook-bundle-budget.json +25 -0
- package/src/config/hook-token-budget.json +6 -1
- package/src/config/host-instruction-limits.json +33 -0
- package/src/config/routing-coverage-seed.json +24 -3
- package/src/config/rule-activation-census.json +7 -3
- package/src/config/rule-consequence-class.json +161 -0
- package/src/config/rule-law-ceilings.json +99 -0
- package/src/install/claudePathsPlan.ts +46 -4
- package/src/install/claudeRuleRewrite.ts +10 -1
- package/src/install/emit_host_rules_cli.ts +43 -34
- package/src/install/globalRuleScope.ts +109 -0
- package/src/install/host_rule_ownership.ts +170 -0
- package/src/install/installThinLayer.ts +312 -0
- package/src/install/installedRuleLinks.ts +220 -0
- package/src/install/wizard-plan.ts +24 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -71
- package/src/scripts/_cli/cmd_doctor_neighbours.ts +293 -0
- package/src/scripts/_dispatch.bash +16 -2
- package/src/scripts/_lib/agent_settings.ts +11 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +10 -8
- package/src/scripts/_lib/estate_offsets.ts +241 -0
- package/src/scripts/_lib/exemption_shape.ts +143 -0
- package/src/scripts/_lib/fnv.ts +23 -0
- package/src/scripts/_lib/foreign_scan.ts +106 -0
- package/src/scripts/_lib/gitignore_block.ts +314 -0
- package/src/scripts/_lib/global_deploy_inventory.ts +32 -0
- package/src/scripts/_lib/graph_feeder_record.ts +214 -0
- package/src/scripts/_lib/hook_settings.ts +73 -0
- package/src/scripts/_lib/host_capability.ts +40 -19
- package/src/scripts/_lib/host_hook_merge.ts +165 -0
- package/src/scripts/_lib/installed_layer.ts +538 -0
- package/src/scripts/_lib/json_merge.ts +82 -0
- package/src/scripts/_lib/json_pointers.ts +93 -11
- package/src/scripts/_lib/lean_projection_mode.ts +275 -15
- package/src/scripts/_lib/machine_wake.ts +16 -3
- package/src/scripts/_lib/neighbour_census.ts +760 -0
- package/src/scripts/_lib/neighbour_scan.ts +122 -0
- package/src/scripts/_lib/neighbour_tool_use.ts +189 -0
- package/src/scripts/_lib/prompt_shape.ts +46 -0
- package/src/scripts/_lib/release_migration_gate.ts +19 -3
- package/src/scripts/_lib/reserved_name_sweep.ts +73 -0
- package/src/scripts/_lib/review_coverage.ts +134 -0
- package/src/scripts/_lib/rule_consequence_class.ts +71 -0
- package/src/scripts/_lib/rule_injection.ts +130 -10
- package/src/scripts/_lib/rule_law_section.ts +147 -0
- package/src/scripts/_lib/rule_layer_overlap.ts +58 -0
- package/src/scripts/_lib/skill_origin.ts +254 -0
- package/src/scripts/_lib/structured_ask.ts +64 -21
- package/src/scripts/_lib/thin_rules.ts +540 -0
- package/src/scripts/_lib/touched_file_quality.ts +434 -0
- package/src/scripts/_lib/turn_end_refusals.ts +77 -2
- package/src/scripts/_lib/windsurf_render.ts +63 -0
- package/src/scripts/ai_council/cli_call_budget.ts +13 -5
- package/src/scripts/ai_council/clients.ts +26 -57
- package/src/scripts/ai_council/config.ts +1 -1
- package/src/scripts/ai_council/vendor_defaults.ts +45 -0
- package/src/scripts/audit_skill_overlap.ts +261 -0
- package/src/scripts/before_complete_hook.ts +243 -12
- package/src/scripts/bench_touched_file_quality.ts +238 -0
- package/src/scripts/check_enforcement_matrix.ts +377 -20
- package/src/scripts/check_estate_count.ts +130 -153
- package/src/scripts/check_finding_dispositions.ts +116 -4
- package/src/scripts/check_hook_bundle_composition.ts +370 -0
- package/src/scripts/check_kernel_edit_ratified.ts +49 -11
- package/src/scripts/check_memory.ts +7 -1
- package/src/scripts/check_release_highlights.ts +10 -0
- package/src/scripts/check_release_pr_shape.ts +38 -15
- package/src/scripts/check_standing_rule_delivery.ts +33 -13
- package/src/scripts/check_verify_expectation_delta.ts +521 -0
- package/src/scripts/code_graph/detect.ts +127 -7
- package/src/scripts/code_graph/foreign.ts +194 -0
- package/src/scripts/code_graph/query.ts +217 -4
- package/src/scripts/code_graph/types.ts +26 -2
- package/src/scripts/code_graph/validate.ts +3 -1
- package/src/scripts/code_graph/verbs.ts +103 -0
- package/src/scripts/compile_hook_manifest.ts +33 -1
- package/src/scripts/condense.ts +14 -27
- package/src/scripts/estate_exemption_shape.ts +202 -0
- package/src/scripts/generate_host_cost_table.ts +1 -1
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +150 -9
- package/src/scripts/hooks/block_config_weakening.ts +67 -2
- package/src/scripts/hooks/block_plumbing_writes.ts +29 -1
- package/src/scripts/hooks/code_graph_context_hook.ts +252 -23
- package/src/scripts/hooks/concern_failure_policy.ts +280 -0
- package/src/scripts/hooks/dispatch_hook.ts +52 -52
- package/src/scripts/hooks/exit_codes.ts +2 -1
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.ts +19 -1
- package/src/scripts/hooks/one_question_per_ask_hook.ts +41 -25
- package/src/scripts/hooks/payload_stub.ts +10 -1
- package/src/scripts/hooks/rule_inject_hook.ts +757 -63
- package/src/scripts/hooks/table_fingerprint.ts +21 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +64 -8
- package/src/scripts/hooks/turn_end_gate_hook.ts +84 -0
- package/src/scripts/hooks_status.ts +112 -0
- package/src/scripts/injection_scan_hook.ts +7 -0
- package/src/scripts/install.ts +72 -185
- package/src/scripts/installed_layer_report.ts +103 -0
- package/src/scripts/language_mirror_hook.ts +15 -6
- package/src/scripts/learning_sidecar.ts +119 -8
- package/src/scripts/lint_hook_manifest.ts +53 -0
- package/src/scripts/lint_major_migration_sections.ts +156 -26
- package/src/scripts/lint_pack_boundaries.ts +63 -5
- package/src/scripts/lint_rule_law_section.ts +517 -0
- package/src/scripts/lint_workflow_security.ts +161 -5
- package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -0
- package/src/scripts/mcp_server/graph_tools.ts +72 -3
- package/src/scripts/measure_routing_signal.ts +54 -16
- package/src/scripts/measure_skill_ranker_baseline.ts +216 -8
- package/src/scripts/memory_learn_hook.ts +91 -6
- package/src/scripts/model_rule_injection.ts +52 -5
- package/src/scripts/project_thin_rules.ts +34 -327
- package/src/scripts/report_evidence_temperature.ts +657 -0
- package/src/scripts/report_installed_rule_links.ts +157 -0
- package/src/scripts/report_label_agreement.ts +233 -0
- package/src/scripts/report_obligation_mechanism.ts +230 -0
- package/src/scripts/report_single_token_triggers.ts +277 -0
- package/src/scripts/report_skill_ranker_confusion.ts +442 -0
- package/src/scripts/report_standing_payload_by_host.ts +188 -15
- package/src/scripts/report_verification_record_coverage.ts +306 -0
- package/src/scripts/rule_activation_census.ts +5 -2
- package/src/scripts/rule_trigger_eval.ts +9 -9
- package/src/scripts/schemas/review-findings.schema.json +3 -2
- package/src/scripts/schemas/rule.schema.json +5 -0
- package/src/scripts/self_review_gate.ts +62 -7
- package/src/scripts/skill_tools/score_skill_relevance.ts +290 -25
- package/src/scripts/sweep_skill_ranker_signals.ts +129 -0
- package/src/scripts/sync_gitignore.ts +29 -235
- package/src/scripts/trigger_eval_grandfather.json +0 -5
- package/src/server/schemas/settings.ts +10 -0
- package/src/shared/skillRanking.ts +117 -11
- package/dist/cli-delegate/chunk-JNMVLWLR.js +0 -4457
- package/dist/cli-delegate/chunk-YDPILCOL.js +0 -152
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// src/scripts/_lib/gitignore_block.ts
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
var SECTION_HEADER = "# event4u/agent-config";
|
|
8
|
+
var SECTION_FOOTER = "# event4u/agent-config \u2014 END";
|
|
9
|
+
var DEFAULT_GITIGNORE = ".gitignore";
|
|
10
|
+
var _HERE = fileURLToPath(import.meta.url);
|
|
11
|
+
var DEFAULT_TEMPLATE = path.join(
|
|
12
|
+
path.dirname(_HERE),
|
|
13
|
+
"..",
|
|
14
|
+
"..",
|
|
15
|
+
"..",
|
|
16
|
+
"src",
|
|
17
|
+
"config",
|
|
18
|
+
"gitignore-block.txt"
|
|
19
|
+
);
|
|
20
|
+
var LEGACY_PATTERNS = [
|
|
21
|
+
".agent-chat-history",
|
|
22
|
+
".agent-chat-history.bak",
|
|
23
|
+
".agent-chat-history.*.bak",
|
|
24
|
+
".agent-prices.md",
|
|
25
|
+
".council-tmp/",
|
|
26
|
+
// 2.x intermediate: prices cache lived directly under agents/ before
|
|
27
|
+
// consolidating under agents/runtime/.
|
|
28
|
+
"agents/.agent-prices.md",
|
|
29
|
+
// Budget history JSONLs — previously listed explicitly at project
|
|
30
|
+
// root or under agents/; now covered by the /agents/runtime/
|
|
31
|
+
// catch-all in the managed block.
|
|
32
|
+
".augment-budget-history.jsonl",
|
|
33
|
+
".rule-budget-history.jsonl",
|
|
34
|
+
"agents/.augment-budget-history.jsonl",
|
|
35
|
+
"agents/.rule-budget-history.jsonl"
|
|
36
|
+
];
|
|
37
|
+
function _strip(ln) {
|
|
38
|
+
return ln.replace(/\n+$/, "").replace(/\s+$/, "");
|
|
39
|
+
}
|
|
40
|
+
function _is_entry(ln) {
|
|
41
|
+
const s = _strip(ln).replace(/^\s+/, "");
|
|
42
|
+
return Boolean(s) && !s.startsWith("#");
|
|
43
|
+
}
|
|
44
|
+
var TemplateNotFoundError = class extends Error {
|
|
45
|
+
constructor(p) {
|
|
46
|
+
super(`template not found: ${p}`);
|
|
47
|
+
this.name = "TemplateNotFoundError";
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
function _isFile(p) {
|
|
51
|
+
try {
|
|
52
|
+
return fs.statSync(p).isFile();
|
|
53
|
+
} catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function _splitlines(text) {
|
|
58
|
+
if (text === "") return [];
|
|
59
|
+
const parts = text.split(/\r\n|\r|\n/);
|
|
60
|
+
if (parts.length > 0 && parts[parts.length - 1] === "") parts.pop();
|
|
61
|
+
return parts;
|
|
62
|
+
}
|
|
63
|
+
function load_template(p) {
|
|
64
|
+
if (!_isFile(p)) {
|
|
65
|
+
throw new TemplateNotFoundError(p);
|
|
66
|
+
}
|
|
67
|
+
const text = fs.readFileSync(p, "utf-8");
|
|
68
|
+
return _splitlines(text).map(_strip);
|
|
69
|
+
}
|
|
70
|
+
function find_block(lines) {
|
|
71
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
72
|
+
if (_strip(lines[i]) === SECTION_HEADER) {
|
|
73
|
+
const start = i;
|
|
74
|
+
for (let j = i + 1; j < lines.length; j += 1) {
|
|
75
|
+
if (_strip(lines[j]) === SECTION_FOOTER) {
|
|
76
|
+
return [start, j + 1];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
let end = lines.length;
|
|
80
|
+
for (let j = i + 1; j < lines.length; j += 1) {
|
|
81
|
+
const s = _strip(lines[j]).replace(/^\s+/, "");
|
|
82
|
+
if (s.startsWith("#") && !s.startsWith("# Agent config") && s !== SECTION_HEADER) {
|
|
83
|
+
end = j;
|
|
84
|
+
while (end > i + 1 && _strip(lines[end - 1]) === "") {
|
|
85
|
+
end -= 1;
|
|
86
|
+
}
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return [start, end];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
function block_entries(block_lines) {
|
|
96
|
+
return block_lines.filter((ln) => _is_entry(ln)).map((ln) => _strip(ln).replace(/^\s+/, ""));
|
|
97
|
+
}
|
|
98
|
+
function template_entries(template_lines) {
|
|
99
|
+
return template_lines.filter((ln) => _is_entry(ln)).map((ln) => ln.replace(/^\s+/, ""));
|
|
100
|
+
}
|
|
101
|
+
function build_fresh_block(template_lines) {
|
|
102
|
+
return [SECTION_HEADER, ...template_lines, SECTION_FOOTER];
|
|
103
|
+
}
|
|
104
|
+
function sync_block(existing_lines, template_lines, options = {}) {
|
|
105
|
+
const replace = options.replace ?? false;
|
|
106
|
+
const loc = find_block(existing_lines);
|
|
107
|
+
const fresh = build_fresh_block(template_lines);
|
|
108
|
+
if (loc === null) {
|
|
109
|
+
const newLines = [...existing_lines];
|
|
110
|
+
if (newLines.length > 0 && _strip(newLines[newLines.length - 1]) !== "") {
|
|
111
|
+
newLines.push("");
|
|
112
|
+
}
|
|
113
|
+
newLines.push(...fresh);
|
|
114
|
+
return [newLines, template_entries(template_lines)];
|
|
115
|
+
}
|
|
116
|
+
const [start, end] = loc;
|
|
117
|
+
const head = existing_lines.slice(0, start);
|
|
118
|
+
let block = existing_lines.slice(start, end);
|
|
119
|
+
const tail = existing_lines.slice(end);
|
|
120
|
+
if (replace) {
|
|
121
|
+
const existing = new Set(block_entries(block));
|
|
122
|
+
const added = template_entries(template_lines).filter((e) => !existing.has(e));
|
|
123
|
+
return [[...head, ...fresh, ...tail], added];
|
|
124
|
+
}
|
|
125
|
+
const existing_entries = new Set(block_entries(block));
|
|
126
|
+
const missing = template_entries(template_lines).filter((e) => !existing_entries.has(e));
|
|
127
|
+
if (missing.length === 0) {
|
|
128
|
+
return [[...existing_lines], []];
|
|
129
|
+
}
|
|
130
|
+
let insert_at;
|
|
131
|
+
if (block.length > 0 && _strip(block[block.length - 1]) === SECTION_FOOTER) {
|
|
132
|
+
insert_at = block.length - 1;
|
|
133
|
+
} else {
|
|
134
|
+
block = [...block, SECTION_FOOTER];
|
|
135
|
+
insert_at = block.length - 1;
|
|
136
|
+
}
|
|
137
|
+
const new_block = [...block.slice(0, insert_at), ...missing, ...block.slice(insert_at)];
|
|
138
|
+
return [[...head, ...new_block, ...tail], missing];
|
|
139
|
+
}
|
|
140
|
+
function cleanup_legacy(lines) {
|
|
141
|
+
const legacy = new Set(LEGACY_PATTERNS);
|
|
142
|
+
const kept = [];
|
|
143
|
+
const removed = [];
|
|
144
|
+
for (const ln of lines) {
|
|
145
|
+
const s = _strip(ln).replace(/^\s+/, "");
|
|
146
|
+
if (legacy.has(s) || s.startsWith("/") && legacy.has(s.slice(1))) {
|
|
147
|
+
removed.push(s);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
kept.push(ln);
|
|
151
|
+
}
|
|
152
|
+
return [kept, removed];
|
|
153
|
+
}
|
|
154
|
+
function format_file(lines) {
|
|
155
|
+
const text = lines.join("\n");
|
|
156
|
+
return text.replace(/\n+$/, "") + "\n";
|
|
157
|
+
}
|
|
158
|
+
function write_managed_block(project_root, dry_run) {
|
|
159
|
+
const target = path.join(project_root, DEFAULT_GITIGNORE);
|
|
160
|
+
let template;
|
|
161
|
+
try {
|
|
162
|
+
template = load_template(DEFAULT_TEMPLATE);
|
|
163
|
+
} catch {
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
let existing = [];
|
|
167
|
+
if (_isFile(target)) {
|
|
168
|
+
existing = _splitlines(fs.readFileSync(target, "utf-8"));
|
|
169
|
+
} else if (!_isFile(path.join(project_root, ".git")) && !_isDir(path.join(project_root, ".git"))) {
|
|
170
|
+
return 0;
|
|
171
|
+
}
|
|
172
|
+
const [lines, added] = sync_block(existing, template);
|
|
173
|
+
if (added.length === 0 || dry_run) return added.length;
|
|
174
|
+
try {
|
|
175
|
+
fs.writeFileSync(target, format_file(lines), "utf-8");
|
|
176
|
+
} catch {
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
179
|
+
return added.length;
|
|
180
|
+
}
|
|
181
|
+
function _isDir(p) {
|
|
182
|
+
try {
|
|
183
|
+
return fs.statSync(p).isDirectory();
|
|
184
|
+
} catch {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export {
|
|
190
|
+
SECTION_HEADER,
|
|
191
|
+
SECTION_FOOTER,
|
|
192
|
+
DEFAULT_GITIGNORE,
|
|
193
|
+
DEFAULT_TEMPLATE,
|
|
194
|
+
LEGACY_PATTERNS,
|
|
195
|
+
_strip,
|
|
196
|
+
TemplateNotFoundError,
|
|
197
|
+
_isFile,
|
|
198
|
+
_splitlines,
|
|
199
|
+
load_template,
|
|
200
|
+
find_block,
|
|
201
|
+
block_entries,
|
|
202
|
+
template_entries,
|
|
203
|
+
build_fresh_block,
|
|
204
|
+
sync_block,
|
|
205
|
+
cleanup_legacy,
|
|
206
|
+
format_file,
|
|
207
|
+
write_managed_block
|
|
208
|
+
};
|
|
@@ -28,6 +28,7 @@ function _deriveRoots(root) {
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
var _roots = _deriveRoots(_DEFAULT_ROOT);
|
|
31
|
+
var SRC_SKILLS = () => _roots.SRC_SKILLS;
|
|
31
32
|
function _isDir(p) {
|
|
32
33
|
try {
|
|
33
34
|
return fs.statSync(p).isDirectory();
|
|
@@ -76,5 +77,6 @@ function artefact_roots() {
|
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
export {
|
|
80
|
+
SRC_SKILLS,
|
|
79
81
|
artefact_roots
|
|
80
82
|
};
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// src/scripts/_lib/lexical_index.ts
|
|
4
|
+
var BM25_K1 = 1.5;
|
|
5
|
+
var BM25_B = 0.75;
|
|
6
|
+
var MIN_TOKEN_LEN = 2;
|
|
7
|
+
function tokenize(s) {
|
|
8
|
+
const out = [];
|
|
9
|
+
for (const raw of s.toLowerCase().split(/[^a-z0-9]+/)) {
|
|
10
|
+
if (raw.length >= MIN_TOKEN_LEN) out.push(raw);
|
|
11
|
+
}
|
|
12
|
+
return out;
|
|
13
|
+
}
|
|
14
|
+
function trigrams(s) {
|
|
15
|
+
const norm = s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
16
|
+
const out = /* @__PURE__ */ new Set();
|
|
17
|
+
if (norm.length < 3) {
|
|
18
|
+
if (norm.length > 0) out.add(norm);
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
for (let i = 0; i + 3 <= norm.length; i++) {
|
|
22
|
+
out.add(norm.slice(i, i + 3));
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
var LexicalIndex = class {
|
|
27
|
+
docs = /* @__PURE__ */ new Map();
|
|
28
|
+
df = /* @__PURE__ */ new Map();
|
|
29
|
+
n;
|
|
30
|
+
avgdl;
|
|
31
|
+
constructor(documents) {
|
|
32
|
+
let totalLen = 0;
|
|
33
|
+
for (const d of documents) {
|
|
34
|
+
const tokens = tokenize(d.text);
|
|
35
|
+
const tf = /* @__PURE__ */ new Map();
|
|
36
|
+
for (const t of tokens) tf.set(t, (tf.get(t) ?? 0) + 1);
|
|
37
|
+
for (const t of tf.keys()) this.df.set(t, (this.df.get(t) ?? 0) + 1);
|
|
38
|
+
this.docs.set(d.id, { id: d.id, len: tokens.length, tf, trigrams: trigrams(d.text) });
|
|
39
|
+
totalLen += tokens.length;
|
|
40
|
+
}
|
|
41
|
+
this.n = documents.length;
|
|
42
|
+
this.avgdl = this.n > 0 ? totalLen / this.n : 0;
|
|
43
|
+
}
|
|
44
|
+
/** Robertson–Spärck-Jones IDF, floored at 0 so common terms never subtract. */
|
|
45
|
+
idf(term) {
|
|
46
|
+
const df = this.df.get(term) ?? 0;
|
|
47
|
+
if (df === 0) return 0;
|
|
48
|
+
return Math.max(0, Math.log(1 + (this.n - df + 0.5) / (df + 0.5)));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* BM25 score of one document against the tokenised query terms, weighted by
|
|
52
|
+
* **term coverage**: the raw BM25 sum is multiplied by `coverage²`, where
|
|
53
|
+
* `coverage = distinct-query-terms-matched / distinct-query-terms`. This
|
|
54
|
+
* stops a single generic, high-TF term match from outranking a document that
|
|
55
|
+
* matches several rarer query terms once each (Phase 1 refinement). A
|
|
56
|
+
* single-term query has `coverage == 1`, so its score is unchanged — the
|
|
57
|
+
* weighting only re-orders genuinely multi-term queries.
|
|
58
|
+
*/
|
|
59
|
+
score(queryTerms, docId) {
|
|
60
|
+
const doc = this.docs.get(docId);
|
|
61
|
+
if (doc === void 0 || doc.len === 0) return 0;
|
|
62
|
+
let s = 0;
|
|
63
|
+
const matched = /* @__PURE__ */ new Set();
|
|
64
|
+
for (const term of queryTerms) {
|
|
65
|
+
const tf = doc.tf.get(term);
|
|
66
|
+
if (tf === void 0) continue;
|
|
67
|
+
const idf = this.idf(term);
|
|
68
|
+
if (idf === 0) continue;
|
|
69
|
+
const denom = tf + BM25_K1 * (1 - BM25_B + BM25_B * doc.len / (this.avgdl || 1));
|
|
70
|
+
s += idf * (tf * (BM25_K1 + 1)) / denom;
|
|
71
|
+
matched.add(term);
|
|
72
|
+
}
|
|
73
|
+
if (s === 0) return 0;
|
|
74
|
+
const distinctQuery = new Set(queryTerms).size;
|
|
75
|
+
const coverage = distinctQuery > 0 ? matched.size / distinctQuery : 1;
|
|
76
|
+
return s * coverage * coverage;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Rank documents for a set of query keys (phrases are tokenised). A
|
|
80
|
+
* character-trigram prefilter selects candidates cheaply; the guard keeps
|
|
81
|
+
* any doc sharing a query TOKEN even when no trigram overlaps, so the
|
|
82
|
+
* prefilter never drops a genuine lexical match. Ties break by id for a
|
|
83
|
+
* stable, deterministic order.
|
|
84
|
+
*/
|
|
85
|
+
rank(queryKeys) {
|
|
86
|
+
const queryText = queryKeys.join(" ");
|
|
87
|
+
const qTerms = tokenize(queryText);
|
|
88
|
+
const qTermSet = new Set(qTerms);
|
|
89
|
+
const qTrigrams = trigrams(queryText);
|
|
90
|
+
const candidates = [];
|
|
91
|
+
for (const [id, doc] of this.docs) {
|
|
92
|
+
let hit = false;
|
|
93
|
+
for (const t of qTrigrams) {
|
|
94
|
+
if (doc.trigrams.has(t)) {
|
|
95
|
+
hit = true;
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (!hit) {
|
|
100
|
+
for (const t of qTermSet) {
|
|
101
|
+
if (doc.tf.has(t)) {
|
|
102
|
+
hit = true;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (hit) candidates.push(id);
|
|
108
|
+
}
|
|
109
|
+
const scored = candidates.map((id) => ({ id, score: this.score(qTerms, id) })).filter((r) => r.score > 0);
|
|
110
|
+
scored.sort((a, b) => b.score - a.score || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
111
|
+
return scored;
|
|
112
|
+
}
|
|
113
|
+
/** Document count — for the caller's tripwire / diagnostics. */
|
|
114
|
+
get size() {
|
|
115
|
+
return this.n;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// src/scripts/_lib/sqlite_guard.ts
|
|
120
|
+
import { createRequire } from "node:module";
|
|
121
|
+
var SqliteUnavailableError = class extends Error {
|
|
122
|
+
constructor(callerName, cause) {
|
|
123
|
+
super(
|
|
124
|
+
`node:sqlite is unavailable in this runtime (${cause}). ${callerName} requires Node with the built-in SQLite module.`
|
|
125
|
+
);
|
|
126
|
+
this.name = "SqliteUnavailableError";
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
var _sqliteWarningSilenced = false;
|
|
130
|
+
function _silenceSqliteExperimentalWarning() {
|
|
131
|
+
if (_sqliteWarningSilenced) return;
|
|
132
|
+
_sqliteWarningSilenced = true;
|
|
133
|
+
const orig = process.emitWarning.bind(process);
|
|
134
|
+
process.emitWarning = ((warning, ...rest) => {
|
|
135
|
+
const text = typeof warning === "string" ? warning : warning?.message ?? "";
|
|
136
|
+
if (/SQLite is an experimental/i.test(text)) return;
|
|
137
|
+
orig(warning, ...rest);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
var _require;
|
|
141
|
+
function _syncRequire() {
|
|
142
|
+
if (_require === void 0) {
|
|
143
|
+
_require = createRequire(import.meta.url);
|
|
144
|
+
}
|
|
145
|
+
return _require;
|
|
146
|
+
}
|
|
147
|
+
function loadSqliteSync(callerName) {
|
|
148
|
+
_silenceSqliteExperimentalWarning();
|
|
149
|
+
try {
|
|
150
|
+
return _syncRequire()("node:sqlite");
|
|
151
|
+
} catch (exc) {
|
|
152
|
+
const message = exc instanceof Error ? exc.message : String(exc);
|
|
153
|
+
throw new SqliteUnavailableError(callerName, message);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function isSqliteAvailableSync() {
|
|
157
|
+
_silenceSqliteExperimentalWarning();
|
|
158
|
+
try {
|
|
159
|
+
_syncRequire()("node:sqlite");
|
|
160
|
+
return true;
|
|
161
|
+
} catch {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function probeFts5Sync() {
|
|
166
|
+
let sqlite;
|
|
167
|
+
try {
|
|
168
|
+
sqlite = loadSqliteSync("sqlite_guard.probeFts5Sync");
|
|
169
|
+
} catch {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
let conn = null;
|
|
173
|
+
try {
|
|
174
|
+
conn = new sqlite.DatabaseSync(":memory:");
|
|
175
|
+
conn.exec("CREATE VIRTUAL TABLE _fts5_probe USING fts5(body)");
|
|
176
|
+
conn.exec("INSERT INTO _fts5_probe(body) VALUES ('probe')");
|
|
177
|
+
const row = conn.prepare("SELECT body FROM _fts5_probe WHERE _fts5_probe MATCH 'probe'").get();
|
|
178
|
+
return row !== void 0;
|
|
179
|
+
} catch {
|
|
180
|
+
return false;
|
|
181
|
+
} finally {
|
|
182
|
+
try {
|
|
183
|
+
conn?.close();
|
|
184
|
+
} catch {
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function readUserVersion(conn) {
|
|
189
|
+
const row = conn.prepare("PRAGMA user_version").get();
|
|
190
|
+
const v = row?.["user_version"];
|
|
191
|
+
if (typeof v === "bigint") return Number(v);
|
|
192
|
+
if (typeof v === "number") return v;
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
195
|
+
function stampUserVersion(conn, version) {
|
|
196
|
+
if (!Number.isInteger(version) || version < 0 || version > 2 ** 31 - 1) {
|
|
197
|
+
throw new RangeError(`stampUserVersion: version out of range: ${version}`);
|
|
198
|
+
}
|
|
199
|
+
conn.exec(`PRAGMA user_version = ${version}`);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export {
|
|
203
|
+
tokenize,
|
|
204
|
+
LexicalIndex,
|
|
205
|
+
loadSqliteSync,
|
|
206
|
+
isSqliteAvailableSync,
|
|
207
|
+
probeFts5Sync,
|
|
208
|
+
readUserVersion,
|
|
209
|
+
stampUserVersion
|
|
210
|
+
};
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
buildInstallPlan,
|
|
4
|
-
classifyOwnership,
|
|
5
|
-
recordedHashesForRoot,
|
|
6
4
|
sha256File
|
|
7
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-523HCFYO.js";
|
|
8
6
|
import {
|
|
9
7
|
detectToolPresence
|
|
10
8
|
} from "./chunk-A4QJ6ENT.js";
|
|
9
|
+
import {
|
|
10
|
+
classifyOwnership,
|
|
11
|
+
recordedHashesForRoot
|
|
12
|
+
} from "./chunk-OKJUIAPS.js";
|
|
11
13
|
|
|
12
14
|
// src/install/preflight.ts
|
|
13
15
|
import { accessSync, constants, existsSync as existsSync2, statSync } from "node:fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
resolve_project_root
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JY2I2DXV.js";
|
|
5
5
|
import "./chunk-NDJLNC6Q.js";
|
|
6
6
|
import "./chunk-J55WI3RR.js";
|
|
7
7
|
|