@event4u/agent-config 9.13.0 → 9.15.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 +113 -67
- package/README.md +9 -1
- package/dist/agent-src/commands/agents/audit.md +7 -7
- package/dist/agent-src/commands/agents/optimize.md +1 -1
- package/dist/agent-src/commands/analyze/reference-repo.md +1 -1
- package/dist/agent-src/commands/chat-history.md +1 -0
- package/dist/agent-src/commands/context.md +1 -0
- package/dist/agent-src/commands/council.md +1 -1
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/memory.md +2 -1
- package/dist/agent-src/commands/module.md +1 -0
- package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
- package/dist/agent-src/commands/optimize/deep.md +150 -0
- package/dist/agent-src/commands/optimize/skills.md +5 -5
- package/dist/agent-src/commands/optimize.md +12 -6
- package/dist/agent-src/commands/override.md +1 -0
- package/dist/agent-src/commands/prediction-pool.md +4 -4
- package/dist/agent-src/commands/research/deep.md +1 -1
- package/dist/agent-src/commands/roadmap.md +2 -1
- package/dist/agent-src/commands/rule-compliance-audit.md +1 -1
- package/dist/agent-src/commands/tdd.md +1 -0
- package/dist/agent-src/commands/tests.md +1 -0
- package/dist/agent-src/commands/upstream-contribute.md +5 -5
- package/dist/agent-src/commands/video/from-script.md +1 -1
- package/dist/agent-src/commands/video/from-song.md +1 -1
- package/dist/agent-src/commands/video/scene.md +1 -1
- package/dist/agent-src/commands/video/stitch.md +1 -1
- package/dist/agent-src/commands/video/storyboard.md +1 -1
- package/dist/agent-src/commands/worktree/create.md +2 -1
- package/dist/agent-src/contexts/augment-infrastructure.md +1 -1
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +5 -5
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -3
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +4 -3
- package/dist/agent-src/contexts/execution/subagent-routing.md +19 -0
- package/dist/agent-src/contexts/override-system.md +1 -1
- package/dist/agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
- package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
- package/dist/agent-src/rules/autonomous-execution.md +2 -1
- package/dist/agent-src/rules/brand-consistency.md +1 -0
- package/dist/agent-src/rules/brand-source-of-truth.md +1 -0
- package/dist/agent-src/rules/code-comment-discipline.md +2 -0
- package/dist/agent-src/rules/communication-through-line.md +1 -0
- package/dist/agent-src/rules/content-quoting-floor.md +1 -0
- package/dist/agent-src/rules/cross-source-consistency.md +0 -1
- package/dist/agent-src/rules/downstream-changes.md +1 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +1 -0
- package/dist/agent-src/rules/external-reference-deep-dive.md +1 -0
- package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -0
- package/dist/agent-src/rules/finance-safety-floor.md +0 -1
- package/dist/agent-src/rules/icon-consistency.md +1 -0
- package/dist/agent-src/rules/image-likeness-and-rights.md +1 -0
- package/dist/agent-src/rules/improve-before-implement.md +1 -1
- package/dist/agent-src/rules/invite-challenge.md +1 -0
- 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/markdown-safe-codeblocks.md +1 -0
- package/dist/agent-src/rules/media-governance-routing.md +4 -3
- package/dist/agent-src/rules/media-sync-ground-truth.md +1 -0
- package/dist/agent-src/rules/no-attribution-footers.md +1 -0
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +1 -0
- package/dist/agent-src/rules/no-pr-progress-comments.md +1 -0
- package/dist/agent-src/rules/onboarding-gate.md +1 -0
- package/dist/agent-src/rules/output-discipline.md +1 -0
- package/dist/agent-src/rules/prefer-enums-over-literals.md +1 -0
- package/dist/agent-src/rules/preservation-guard.md +1 -0
- package/dist/agent-src/rules/question-not-instruction.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/role-mode-adherence.md +1 -0
- package/dist/agent-src/rules/runtime-safety.md +1 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +1 -0
- package/dist/agent-src/rules/session-canary.md +9 -2
- package/dist/agent-src/rules/source-confidentiality.md +1 -0
- package/dist/agent-src/rules/source-of-truth.md +1 -0
- package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -0
- package/dist/agent-src/rules/think-before-action.md +1 -0
- package/dist/agent-src/rules/token-budget-discipline.md +1 -0
- package/dist/agent-src/rules/token-efficiency.md +1 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +5 -5
- package/dist/agent-src/rules/tool-safety.md +1 -0
- package/dist/agent-src/rules/untrusted-input-defense.md +2 -0
- package/dist/agent-src/rules/user-interaction.md +1 -0
- package/dist/agent-src/rules/user-interrupt-priority.md +1 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +1 -1
- package/dist/agent-src/skills/check-refs/SKILL.md +1 -1
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +1 -1
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/github-ci/SKILL.md +1 -0
- package/dist/agent-src/skills/guideline-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/lint-skills/SKILL.md +1 -1
- package/dist/agent-src/skills/readme-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/roadmap-management/SKILL.md +8 -1
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +4 -4
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +6 -6
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +25 -0
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +1 -1
- package/dist/agent-src/templates/copilot-instructions.md +3 -3
- package/dist/agent-src/templates/rule.md +2 -2
- package/dist/agent-src/templates/scripts/work_engine/orchestration.ts +1 -1
- package/dist/agent-src/templates/skill-archive-note.md +5 -5
- package/dist/agent-src/templates/skill.md +1 -1
- package/dist/cli/agent-config.js +66 -19
- package/dist/cli/agent-config.js.map +1 -1
- package/dist/cli/main.js +9 -4
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/python/workspace_drive.js +2 -0
- package/dist/cli/python/workspace_drive.js.map +1 -1
- package/dist/cli/python/workspace_drive_health.js +2 -0
- package/dist/cli/python/workspace_drive_health.js.map +1 -1
- package/dist/cli/python/workspace_hosts.js +2 -0
- package/dist/cli/python/workspace_hosts.js.map +1 -1
- package/dist/cli/python/workspace_sessions.js +2 -0
- package/dist/cli/python/workspace_sessions.js.map +1 -1
- package/dist/cli/registry.js +1 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-A3HJ6NTI.js → chunk-63WSP6YZ.js} +2 -1
- package/dist/cli-delegate/{chunk-EJYIGZ3T.js → chunk-BKO2AZ7Z.js} +1 -1
- package/dist/cli-delegate/{chunk-QFKQLQ7X.js → chunk-H574KOUH.js} +340 -462
- package/dist/cli-delegate/chunk-NXFWFAYV.js +339 -0
- package/dist/cli-delegate/{chunk-TEGJU2JX.js → chunk-ZXXJLL5K.js} +2 -2
- package/dist/cli-delegate/cmd_conformance.js +29 -23
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +163 -103
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +6 -5
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +5 -4
- package/dist/hooks/dispatch.js +729 -430
- package/dist/install/install.mjs +700 -625
- package/dist/install/rule_scope.js +18 -2
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +564 -424
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/claude_settings_hooks.js +30 -5
- package/dist/scripts/_lib/claude_settings_hooks.js.map +1 -1
- package/dist/scripts/_lib/scoped_projection.js +223 -0
- package/dist/scripts/_lib/scoped_projection.js.map +1 -0
- package/dist/scripts/_lib/surface_tiers.js +125 -0
- package/dist/scripts/_lib/surface_tiers.js.map +1 -0
- package/dist/scripts/_lib/token_count.js +166 -0
- package/dist/scripts/_lib/token_count.js.map +1 -0
- package/dist/scripts/_lib/trigger_eval_floors.js +8 -0
- package/dist/scripts/_lib/trigger_eval_floors.js.map +1 -1
- package/dist/scripts/condense.js +139 -9
- package/dist/scripts/condense.js.map +1 -1
- package/dist/scripts/project_thin_rules.js +450 -0
- package/dist/scripts/project_thin_rules.js.map +1 -0
- package/dist/server/routes/workspace.js +2 -0
- package/dist/server/routes/workspace.js.map +1 -1
- package/dist/server/schemas/settings.js +9 -3
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-DJY_vQVn.js +40 -0
- package/dist/ui/assets/index-DJY_vQVn.js.map +1 -0
- package/dist/ui/index.html +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/package.json +11 -11
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/work_engine/orchestration.ts +1 -1
- package/src/config/agent-settings.template.yml +59 -11
- package/src/config/ci-local-parity.yml +8 -0
- package/src/config/discovery/unassigned-artefacts.yml +23 -25
- package/src/config/evaluator-budgets.json +35 -5
- package/src/config/gate-coverage.yml +147 -0
- package/src/config/gate-violation-baselines.json +25 -0
- package/src/install/rule_scope.ts +27 -2
- package/src/scripts/_cli/cmd_conformance.ts +13 -24
- package/src/scripts/_dispatch.bash +10 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +30 -4
- package/src/scripts/_lib/exec_evidence.ts +5 -0
- package/src/scripts/_lib/gate_baseline.ts +213 -0
- package/src/scripts/_lib/scoped_projection.ts +262 -0
- package/src/scripts/_lib/tier_budget_routing.ts +234 -0
- package/src/scripts/_lib/tool_adapter_registry.ts +8 -1
- package/src/scripts/_lib/trigger_eval_floors.ts +9 -0
- package/src/scripts/_lib/trigger_routers.ts +17 -5
- package/src/scripts/adr/regenerate_index.ts +4 -3
- package/src/scripts/ai-video/lib/parse-blueprint.sh +1 -1
- package/src/scripts/ai_council/compile_corpus.ts +1 -1
- package/src/scripts/audit_cloud_compatibility.ts +37 -2
- package/src/scripts/audit_initial_context.ts +53 -19
- package/src/scripts/audit_likelihood.ts +31 -2
- package/src/scripts/audit_user_type_axis.ts +58 -11
- package/src/scripts/bench_hook_latency.ts +172 -41
- package/src/scripts/build_mcp_catalog.ts +12 -1
- package/src/scripts/check_always_budget.ts +122 -11
- package/src/scripts/check_artefact_count_messaging.ts +128 -15
- package/src/scripts/check_augment_description_cap.ts +24 -3
- package/src/scripts/check_ci_strict_superset.ts +150 -0
- package/src/scripts/check_cluster_patterns.ts +100 -0
- package/src/scripts/check_consumer_scope_flip.ts +26 -4
- package/src/scripts/check_evaluator_budgets.ts +198 -19
- package/src/scripts/check_gate_coverage.ts +337 -1
- package/src/scripts/check_generator_output_coverage.ts +2 -1
- package/src/scripts/check_iron_law_prominence.ts +1 -1
- package/src/scripts/check_kernel_rule_bundle.ts +1 -1
- package/src/scripts/check_no_new_legacy_path.ts +167 -3
- package/src/scripts/check_pack_size.ts +18 -4
- package/src/scripts/check_portability.ts +37 -7
- package/src/scripts/check_references.ts +19 -3
- package/src/scripts/check_release_pr_shape.ts +13 -0
- package/src/scripts/check_token_regression.ts +9 -2
- package/src/scripts/condense.ts +155 -12
- package/src/scripts/cost/budget.mjs +63 -2
- package/src/scripts/count_scoped_projection.ts +104 -0
- package/src/scripts/evaluator_umbrella.sh +34 -1
- package/src/scripts/generate_capability_matrix.ts +8 -0
- package/src/scripts/generate_router_coverage_from_matrix.ts +155 -0
- package/src/scripts/hook_manifest.yaml +17 -3
- package/src/scripts/hooks/block_config_weakening.ts +337 -0
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/probe_throttle.ts +75 -0
- package/src/scripts/install-hooks.sh +24 -2
- package/src/scripts/install.ts +15 -92
- package/src/scripts/lint_agents_md.ts +9 -3
- package/src/scripts/lint_archived_skills.ts +1 -1
- package/src/scripts/lint_artefact_frontmatter.ts +185 -37
- package/src/scripts/lint_command_routing.ts +21 -52
- package/src/scripts/lint_command_verbs.ts +47 -28
- package/src/scripts/lint_context_spine_usage.ts +38 -12
- package/src/scripts/lint_framework_leakage.ts +25 -6
- package/src/scripts/lint_handoffs.ts +49 -2
- package/src/scripts/lint_media_policy_linkage.ts +62 -30
- package/src/scripts/lint_namespace.ts +92 -7
- package/src/scripts/lint_new_skill_gate.ts +39 -31
- package/src/scripts/lint_originality_shingles.ts +7 -1
- package/src/scripts/lint_override_kernel_guard.ts +21 -3
- package/src/scripts/lint_pack_boundaries.ts +461 -91
- package/src/scripts/lint_pack_dependencies.ts +24 -57
- package/src/scripts/lint_persona_governance.ts +1 -1
- package/src/scripts/lint_role_experiences.ts +34 -5
- package/src/scripts/lint_trigger_precision.ts +142 -0
- package/src/scripts/mcp_server/consumer_tool_catalog.json +12 -201
- package/src/scripts/mcp_server/tools.ts +1 -1
- package/src/scripts/prepack-check.mjs +40 -1
- package/src/scripts/prepack_router_targets.d.mts +7 -0
- package/src/scripts/prepack_router_targets.mjs +93 -0
- package/src/scripts/print_required_checks.ts +72 -18
- package/src/scripts/profile_staleness_hook.ts +12 -0
- package/src/scripts/record_evaluator_measurements.mjs +105 -0
- package/src/scripts/recruit_preflight.sh +1 -1
- package/src/scripts/release.ts +105 -1
- package/src/scripts/router_target_paths.d.mts +4 -0
- package/src/scripts/router_target_paths.mjs +69 -0
- package/src/scripts/router_telemetry.ts +52 -1
- package/src/scripts/routing_doctor.ts +485 -0
- package/src/scripts/rule_trigger_eval.ts +403 -0
- package/src/scripts/schemas/rule.schema.json +5 -1
- package/src/scripts/session_canary_hook.ts +96 -5
- package/src/scripts/skill_linter.ts +90 -42
- package/src/scripts/smoke/skills.sh +1 -1
- package/src/scripts/sweep_dead_scan_roots.ts +356 -10
- package/src/scripts/trigger_coverage.ts +13 -2
- package/src/scripts/update_counts.ts +91 -12
- package/src/scripts/validate_telegraph_carveouts.ts +1 -1
- package/src/scripts/wrapper_freshness_hook.ts +14 -0
- package/src/server/schemas/settings.ts +19 -5
- package/dist/cli-delegate/chunk-TJIAM5FW.js +0 -133
- package/dist/ui/assets/index-BpSQt5vm.js +0 -40
- package/dist/ui/assets/index-BpSQt5vm.js.map +0 -1
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Thin-projection of the rule layer (lean-initial-context build-out, Phase 3.1).
|
|
4
|
+
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/project_thin_rules.py` (ADR-200 —
|
|
6
|
+
* Python→TS migration, Phase 8 / Wave 8b). The CLI contract is mirrored
|
|
7
|
+
* EXACTLY — the `--measure` / `--out` / `--json` flags, exit codes, the
|
|
8
|
+
* stdout/stderr split, byte-identical messages, and byte-identical JSON
|
|
9
|
+
* output (`json.dumps(indent=2, sort_keys=True)`).
|
|
10
|
+
*
|
|
11
|
+
* The dominant always-on cost is rule BODIES. A **thin** rule entry keeps
|
|
12
|
+
* the matching signal (frontmatter `description` + `triggers`) so the
|
|
13
|
+
* router still selects it, and replaces the body with a one-line pointer
|
|
14
|
+
* to the full text. The agent loads the body on match. The kernel stays
|
|
15
|
+
* full-bodied.
|
|
16
|
+
*
|
|
17
|
+
* This module is the mechanism + a measurement harness. It writes to a
|
|
18
|
+
* target dir of your choosing — it never overwrites the live `.claude/` /
|
|
19
|
+
* `.augment/` projections.
|
|
20
|
+
*
|
|
21
|
+
* NOTE (faithful literal): the thin-entry pointer keeps the verbatim
|
|
22
|
+
* `Body: [`{rule_id}`](../../.agent-src.uncondensed/rules/{rule_id}.md)`
|
|
23
|
+
* Markdown link from the retired Python implementation. The same-basename `.py` twin
|
|
24
|
+
* carries that literal, so the ADR-051 legacy-path guard exempts this `.ts`
|
|
25
|
+
* file by twin-parity.
|
|
26
|
+
*
|
|
27
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
28
|
+
*
|
|
29
|
+
* Usage:
|
|
30
|
+
* project_thin_rules --measure # measure delta, no write
|
|
31
|
+
* project_thin_rules --out <dir> # write thin rules to <dir>
|
|
32
|
+
*/
|
|
33
|
+
import * as fs from 'node:fs';
|
|
34
|
+
import * as path from 'node:path';
|
|
35
|
+
import process from 'node:process';
|
|
36
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
37
|
+
import * as token_count from './_lib/token_count.js';
|
|
38
|
+
const _HERE = fileURLToPath(import.meta.url);
|
|
39
|
+
// REPO_ROOT = Path(__file__).resolve().parent.parent.parent — three dirs up
|
|
40
|
+
// from src/scripts/<file>.
|
|
41
|
+
export const REPO_ROOT = path.resolve(path.dirname(_HERE), '..', '..');
|
|
42
|
+
export const RULES_SOURCE = path.join(REPO_ROOT, 'dist/agent-src', 'rules');
|
|
43
|
+
export const ROUTER = path.join(REPO_ROOT, 'dist', 'router.json');
|
|
44
|
+
/** `sorted(dir.glob("*.md"))` — non-recursive, lexically sorted abs paths. */
|
|
45
|
+
function _globSortedMd(dir) {
|
|
46
|
+
let names;
|
|
47
|
+
try {
|
|
48
|
+
names = fs.readdirSync(dir);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
const out = names.filter((n) => n.endsWith('.md')).map((n) => path.join(dir, n));
|
|
54
|
+
out.sort();
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
/** The always-full-bodied set — authoritative kernel list from the router. */
|
|
58
|
+
export function kernel_ids() {
|
|
59
|
+
const data = JSON.parse(fs.readFileSync(ROUTER, 'utf-8'));
|
|
60
|
+
const kernel = data.kernel;
|
|
61
|
+
if (Array.isArray(kernel)) {
|
|
62
|
+
return new Set(kernel.map((x) => String(x)));
|
|
63
|
+
}
|
|
64
|
+
return new Set();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* id → workspaces for every non-kernel router entry (router.json schema v2,
|
|
68
|
+
* road-to-request-scoped-rule-load Phase 1). Rules absent from the map (or
|
|
69
|
+
* with an empty list) fail safe: they stay in scope.
|
|
70
|
+
*/
|
|
71
|
+
export function rule_workspaces_map() {
|
|
72
|
+
const data = JSON.parse(fs.readFileSync(ROUTER, 'utf-8'));
|
|
73
|
+
const map = new Map();
|
|
74
|
+
for (const tier of ['tier_1', 'tier_2']) {
|
|
75
|
+
const entries = data[tier];
|
|
76
|
+
if (!Array.isArray(entries))
|
|
77
|
+
continue;
|
|
78
|
+
for (const e of entries) {
|
|
79
|
+
const obj = e;
|
|
80
|
+
const ws = Array.isArray(obj.workspaces) ? obj.workspaces.map((w) => String(w)) : [];
|
|
81
|
+
map.set(String(obj.id), ws);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return map;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Whether a rule id survives a workspace scope. Kernel always survives;
|
|
88
|
+
* `scope === null` = legacy-all. An out-of-scope non-kernel rule is dropped
|
|
89
|
+
* entirely — neither body nor pointer line (the pointer floor shrinks with
|
|
90
|
+
* consumer scoping).
|
|
91
|
+
*/
|
|
92
|
+
export function id_in_scope(rule_id, scope, kernel, wsMap, fallback_ws = []) {
|
|
93
|
+
if (scope === null || kernel.has(rule_id)) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
// Router map first (schema v2); `type: manual` rules are reference-only
|
|
97
|
+
// and never emitted to the router — their frontmatter is the fallback.
|
|
98
|
+
const ws = wsMap.get(rule_id) ?? fallback_ws;
|
|
99
|
+
if (ws.length === 0) {
|
|
100
|
+
return true; // untagged / unknown → fail safe
|
|
101
|
+
}
|
|
102
|
+
return ws.some((w) => scope.includes(w));
|
|
103
|
+
}
|
|
104
|
+
/** `workspaces:` list parsed straight from a rule file's frontmatter. */
|
|
105
|
+
export function fm_workspaces(text) {
|
|
106
|
+
const [fm] = split_frontmatter(text);
|
|
107
|
+
// Flow style: `workspaces: [a, b, c]`
|
|
108
|
+
const flow = /^workspaces:[ \t]*\[([^\]]*)\]/m.exec(fm);
|
|
109
|
+
if (flow) {
|
|
110
|
+
return flow[1]
|
|
111
|
+
.split(',')
|
|
112
|
+
.map((s) => s.trim().replace(/^["']|["']$/g, ''))
|
|
113
|
+
.filter((s) => s.length > 0);
|
|
114
|
+
}
|
|
115
|
+
// Block style; tolerate the list being the LAST frontmatter key.
|
|
116
|
+
const m = /^workspaces:[ \t]*\n((?:[ \t]+-[ \t]+.*(?:\n|$))+)/m.exec(fm);
|
|
117
|
+
if (!m) {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
return [...m[1].matchAll(/-[ \t]+(\S+)/g)].map((x) => x[1]);
|
|
121
|
+
}
|
|
122
|
+
/** Return [frontmatter_including_fences, body]. Empty fm if none. */
|
|
123
|
+
export function split_frontmatter(text) {
|
|
124
|
+
if (text.startsWith('---\n')) {
|
|
125
|
+
const end = text.indexOf('\n---\n', 4);
|
|
126
|
+
if (end !== -1) {
|
|
127
|
+
return [text.slice(0, end + 5), text.slice(end + 5)];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return ['', text];
|
|
131
|
+
}
|
|
132
|
+
function _description(fm) {
|
|
133
|
+
// re.search(r'^description:\s*"?(.+?)"?\s*$', fm, re.MULTILINE)
|
|
134
|
+
const m = /^description:\s*"?(.+?)"?\s*$/m.exec(fm);
|
|
135
|
+
return m ? m[1].trim() : '';
|
|
136
|
+
}
|
|
137
|
+
// How many trigger keywords/phrases to surface as the always-on match hint.
|
|
138
|
+
const _TRIGGER_HINT_LIMIT = 6;
|
|
139
|
+
/** A short, comma-joined sample of the rule's trigger keywords/phrases. */
|
|
140
|
+
function _trigger_hint(fm) {
|
|
141
|
+
const hits = [];
|
|
142
|
+
// re.finditer(r'^\s*-\s*(?:keyword|phrase):\s*"?(.+?)"?\s*$', fm, re.MULTILINE)
|
|
143
|
+
const re = /^\s*-\s*(?:keyword|phrase):\s*"?(.+?)"?\s*$/gm;
|
|
144
|
+
let m;
|
|
145
|
+
while ((m = re.exec(fm)) !== null) {
|
|
146
|
+
hits.push(m[1].trim());
|
|
147
|
+
if (hits.length >= _TRIGGER_HINT_LIMIT) {
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return hits.join(', ');
|
|
152
|
+
}
|
|
153
|
+
/** Python `str.title()` — uppercase first alpha of each run, rest lowercase. */
|
|
154
|
+
function _title(s) {
|
|
155
|
+
return s.replace(/[A-Za-z]+/g, (w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase());
|
|
156
|
+
}
|
|
157
|
+
/** Build the minimal progressive-disclosure pointer for a non-kernel rule. */
|
|
158
|
+
export function thin_entry(rule_id, text) {
|
|
159
|
+
const [fm] = split_frontmatter(text);
|
|
160
|
+
const desc = _description(fm);
|
|
161
|
+
const hint = _trigger_hint(fm);
|
|
162
|
+
const title = _title(rule_id.replace(/-/g, ' '));
|
|
163
|
+
const fires = hint ? ` Fires on: ${hint}.` : '';
|
|
164
|
+
return (`## ${title}\n` +
|
|
165
|
+
`> Routed rule — load the body on trigger-match.${fires} ${desc} ` +
|
|
166
|
+
`Body: [\`${rule_id}\`](../../.agent-src.uncondensed/rules/${rule_id}.md)\n`);
|
|
167
|
+
}
|
|
168
|
+
/** Map {filename: thin_or_full_text} for every rule. Kernel stays full. */
|
|
169
|
+
export function build_thin(rules_dir = RULES_SOURCE, scope = null) {
|
|
170
|
+
const kernel = kernel_ids();
|
|
171
|
+
const wsMap = scope !== null ? rule_workspaces_map() : new Map();
|
|
172
|
+
const out = new Map();
|
|
173
|
+
for (const p of _globSortedMd(rules_dir)) {
|
|
174
|
+
const text = fs.readFileSync(p, 'utf-8');
|
|
175
|
+
const stem = path.basename(p).replace(/\.md$/, '');
|
|
176
|
+
if (!id_in_scope(stem, scope, kernel, wsMap, fm_workspaces(text))) {
|
|
177
|
+
continue; // out of workspace scope — no body, no pointer line
|
|
178
|
+
}
|
|
179
|
+
out.set(path.basename(p), kernel.has(stem) ? text : thin_entry(stem, text));
|
|
180
|
+
}
|
|
181
|
+
return out;
|
|
182
|
+
}
|
|
183
|
+
/** Python `round(x, 1)` — round-half-to-even at one decimal. */
|
|
184
|
+
function _python_round1(x) {
|
|
185
|
+
const scaled = x * 10;
|
|
186
|
+
const floor = Math.floor(scaled);
|
|
187
|
+
const diff = scaled - floor;
|
|
188
|
+
let r;
|
|
189
|
+
if (diff > 0.5) {
|
|
190
|
+
r = floor + 1;
|
|
191
|
+
}
|
|
192
|
+
else if (diff < 0.5) {
|
|
193
|
+
r = floor;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
r = floor % 2 === 0 ? floor : floor + 1;
|
|
197
|
+
}
|
|
198
|
+
return r / 10;
|
|
199
|
+
}
|
|
200
|
+
/** Eager vs thin token footprint for the rule layer (scope applies to both arms). */
|
|
201
|
+
export function measure(rules_dir = RULES_SOURCE, scope = null) {
|
|
202
|
+
const kernel = kernel_ids();
|
|
203
|
+
const wsMap = scope !== null ? rule_workspaces_map() : new Map();
|
|
204
|
+
const mdPaths = _globSortedMd(rules_dir).filter((p) => id_in_scope(path.basename(p).replace(/\.md$/, ''), scope, kernel, wsMap, fm_workspaces(fs.readFileSync(p, 'utf-8'))));
|
|
205
|
+
const eager_blob = mdPaths.map((p) => fs.readFileSync(p, 'utf-8')).join('');
|
|
206
|
+
const thin_blob = [...build_thin(rules_dir, scope).values()].join('');
|
|
207
|
+
const eager = token_count.measure(eager_blob);
|
|
208
|
+
const thin = token_count.measure(thin_blob);
|
|
209
|
+
const n = mdPaths.length;
|
|
210
|
+
// len(kernel & {p.stem for p in rules_dir.glob("*.md")})
|
|
211
|
+
const stemSet = new Set(mdPaths.map((p) => path.basename(p).replace(/\.md$/, '')));
|
|
212
|
+
let kernelInDir = 0;
|
|
213
|
+
for (const k of kernel) {
|
|
214
|
+
if (stemSet.has(k)) {
|
|
215
|
+
kernelInDir += 1;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const saved_pct = eager.tokens_gpt
|
|
219
|
+
? _python_round1((100 * (eager.tokens_gpt - thin.tokens_gpt)) / eager.tokens_gpt)
|
|
220
|
+
: 0.0;
|
|
221
|
+
return {
|
|
222
|
+
rules_total: n,
|
|
223
|
+
kernel_full: kernelInDir,
|
|
224
|
+
non_kernel_thinned: n - kernelInDir,
|
|
225
|
+
eager_gpt: eager.tokens_gpt,
|
|
226
|
+
thin_gpt: thin.tokens_gpt,
|
|
227
|
+
saved_gpt: eager.tokens_gpt - thin.tokens_gpt,
|
|
228
|
+
saved_pct,
|
|
229
|
+
eager_chars: eager.chars,
|
|
230
|
+
thin_chars: thin.chars,
|
|
231
|
+
token_method: token_count.method_note(),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/** Write thin rule files to `out_dir`; return the count written. */
|
|
235
|
+
export function write_thin(out_dir, rules_dir = RULES_SOURCE, scope = null) {
|
|
236
|
+
fs.mkdirSync(out_dir, { recursive: true });
|
|
237
|
+
const files = build_thin(rules_dir, scope);
|
|
238
|
+
for (const [name, text] of files) {
|
|
239
|
+
fs.writeFileSync(path.join(out_dir, name), text, 'utf-8');
|
|
240
|
+
}
|
|
241
|
+
return files.size;
|
|
242
|
+
}
|
|
243
|
+
// --- json.dumps(indent=2, sort_keys=True) replica ----------------------------
|
|
244
|
+
/**
|
|
245
|
+
* Sentinel for a Python `float` value, so the dumper renders an
|
|
246
|
+
* integer-valued float as `N.0` (json.dumps parity). Python `round(x, 1)`
|
|
247
|
+
* always yields a float; `saved_pct` is the only such field here.
|
|
248
|
+
*/
|
|
249
|
+
class PyFloat {
|
|
250
|
+
value;
|
|
251
|
+
constructor(value) {
|
|
252
|
+
this.value = value;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/** Render a float like Python `repr()` inside json.dumps (e.g. 90 → "90.0"). */
|
|
256
|
+
function _pyFloatRepr(n) {
|
|
257
|
+
return Number.isInteger(n) ? `${n}.0` : String(n);
|
|
258
|
+
}
|
|
259
|
+
function _jsonDumpsSorted(obj) {
|
|
260
|
+
const pad = ' ';
|
|
261
|
+
function encStr(s) {
|
|
262
|
+
let out = '"';
|
|
263
|
+
for (const ch of s) {
|
|
264
|
+
const cp = ch.codePointAt(0);
|
|
265
|
+
if (ch === '"')
|
|
266
|
+
out += '\\"';
|
|
267
|
+
else if (ch === '\\')
|
|
268
|
+
out += '\\\\';
|
|
269
|
+
else if (ch === '\n')
|
|
270
|
+
out += '\\n';
|
|
271
|
+
else if (ch === '\r')
|
|
272
|
+
out += '\\r';
|
|
273
|
+
else if (ch === '\t')
|
|
274
|
+
out += '\\t';
|
|
275
|
+
else if (ch === '\b')
|
|
276
|
+
out += '\\b';
|
|
277
|
+
else if (ch === '\f')
|
|
278
|
+
out += '\\f';
|
|
279
|
+
else if (cp < 0x20)
|
|
280
|
+
out += '\\u' + cp.toString(16).padStart(4, '0');
|
|
281
|
+
else if (cp < 0x7f)
|
|
282
|
+
out += ch;
|
|
283
|
+
else if (cp > 0xffff) {
|
|
284
|
+
const v = cp - 0x10000;
|
|
285
|
+
const hi = 0xd800 + (v >> 10);
|
|
286
|
+
const lo = 0xdc00 + (v & 0x3ff);
|
|
287
|
+
out += '\\u' + hi.toString(16).padStart(4, '0');
|
|
288
|
+
out += '\\u' + lo.toString(16).padStart(4, '0');
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
out += '\\u' + cp.toString(16).padStart(4, '0');
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return out + '"';
|
|
295
|
+
}
|
|
296
|
+
function enc(value, depth) {
|
|
297
|
+
if (value === null || value === undefined) {
|
|
298
|
+
return 'null';
|
|
299
|
+
}
|
|
300
|
+
if (value instanceof PyFloat) {
|
|
301
|
+
return _pyFloatRepr(value.value);
|
|
302
|
+
}
|
|
303
|
+
if (typeof value === 'boolean') {
|
|
304
|
+
return value ? 'true' : 'false';
|
|
305
|
+
}
|
|
306
|
+
if (typeof value === 'number') {
|
|
307
|
+
return String(value);
|
|
308
|
+
}
|
|
309
|
+
if (typeof value === 'string') {
|
|
310
|
+
return encStr(value);
|
|
311
|
+
}
|
|
312
|
+
if (Array.isArray(value)) {
|
|
313
|
+
if (value.length === 0) {
|
|
314
|
+
return '[]';
|
|
315
|
+
}
|
|
316
|
+
const inner = value.map((v) => pad.repeat(depth + 1) + enc(v, depth + 1));
|
|
317
|
+
return '[\n' + inner.join(',\n') + '\n' + pad.repeat(depth) + ']';
|
|
318
|
+
}
|
|
319
|
+
const o = value;
|
|
320
|
+
const keys = Object.keys(o).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
|
|
321
|
+
if (keys.length === 0) {
|
|
322
|
+
return '{}';
|
|
323
|
+
}
|
|
324
|
+
const inner = keys.map((k) => pad.repeat(depth + 1) + encStr(k) + ': ' + enc(o[k], depth + 1));
|
|
325
|
+
return '{\n' + inner.join(',\n') + '\n' + pad.repeat(depth) + '}';
|
|
326
|
+
}
|
|
327
|
+
return enc(obj, 0);
|
|
328
|
+
}
|
|
329
|
+
// argparse `prog` defaults to basename(sys.argv[0]) → `project_thin_rules.py`.
|
|
330
|
+
const _USAGE = 'usage: project_thin_rules.py [-h] [--measure] [--out OUT] [--json] [--workspaces WS]\n';
|
|
331
|
+
// Full `-h` help block.
|
|
332
|
+
const _HELP = _USAGE +
|
|
333
|
+
'\n' +
|
|
334
|
+
'Thin-projection of the rule layer (lean-initial-context build-out, Phase 3.1).\n' +
|
|
335
|
+
'\n' +
|
|
336
|
+
'optional arguments:\n' +
|
|
337
|
+
' -h, --help show this help message and exit\n' +
|
|
338
|
+
' --measure print the eager-vs-thin token delta\n' +
|
|
339
|
+
' --out OUT write thin rule files to this dir\n' +
|
|
340
|
+
' --json\n' +
|
|
341
|
+
' --workspaces WS comma-separated workspace scope (router.json v2 fields);\n' +
|
|
342
|
+
' kernel always survives, out-of-scope rules drop entirely\n';
|
|
343
|
+
function _argError(msg) {
|
|
344
|
+
process.stderr.write(_USAGE);
|
|
345
|
+
process.stderr.write(`project_thin_rules.py: error: ${msg}\n`);
|
|
346
|
+
process.exit(2);
|
|
347
|
+
}
|
|
348
|
+
function parse_args(argv) {
|
|
349
|
+
const out = { measure: false, out: null, json: false, workspaces: null };
|
|
350
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
351
|
+
const a = argv[i];
|
|
352
|
+
if (a === '-h' || a === '--help') {
|
|
353
|
+
process.stdout.write(_HELP);
|
|
354
|
+
process.exit(0);
|
|
355
|
+
}
|
|
356
|
+
else if (a === '--measure') {
|
|
357
|
+
out.measure = true;
|
|
358
|
+
}
|
|
359
|
+
else if (a === '--json') {
|
|
360
|
+
out.json = true;
|
|
361
|
+
}
|
|
362
|
+
else if (a === '--out') {
|
|
363
|
+
const next = argv[i + 1];
|
|
364
|
+
if (next === undefined) {
|
|
365
|
+
_argError('argument --out: expected one argument');
|
|
366
|
+
}
|
|
367
|
+
out.out = next;
|
|
368
|
+
i += 1;
|
|
369
|
+
}
|
|
370
|
+
else if (a.startsWith('--out=')) {
|
|
371
|
+
out.out = a.slice('--out='.length);
|
|
372
|
+
}
|
|
373
|
+
else if (a === '--workspaces') {
|
|
374
|
+
const next = argv[i + 1];
|
|
375
|
+
if (next === undefined) {
|
|
376
|
+
_argError('argument --workspaces: expected one argument');
|
|
377
|
+
}
|
|
378
|
+
out.workspaces = next.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
|
|
379
|
+
i += 1;
|
|
380
|
+
}
|
|
381
|
+
else if (a.startsWith('--workspaces=')) {
|
|
382
|
+
out.workspaces = a
|
|
383
|
+
.slice('--workspaces='.length)
|
|
384
|
+
.split(',')
|
|
385
|
+
.map((s) => s.trim())
|
|
386
|
+
.filter((s) => s.length > 0);
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
_argError(`unrecognized arguments: ${a}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
return out;
|
|
393
|
+
}
|
|
394
|
+
/** Python f-string `{x:,}` — thousands separators with comma. */
|
|
395
|
+
function _comma(n) {
|
|
396
|
+
return n.toLocaleString('en-US');
|
|
397
|
+
}
|
|
398
|
+
/** Python f-string `{x:>6}` — right-justify in a field of width 6. */
|
|
399
|
+
function _rjust6(n) {
|
|
400
|
+
return String(n).padStart(6, ' ');
|
|
401
|
+
}
|
|
402
|
+
export function main(argv = null) {
|
|
403
|
+
const args = parse_args(argv ?? process.argv.slice(2));
|
|
404
|
+
if (args.out !== null) {
|
|
405
|
+
const n = write_thin(args.out, RULES_SOURCE, args.workspaces);
|
|
406
|
+
process.stdout.write(`wrote ${n} thin rule files → ${args.out}\n`);
|
|
407
|
+
return 0;
|
|
408
|
+
}
|
|
409
|
+
const m = measure(RULES_SOURCE, args.workspaces);
|
|
410
|
+
if (args.json) {
|
|
411
|
+
// `saved_pct` is a Python float (round(..., 1)); wrap it so an
|
|
412
|
+
// integer-valued result still renders as `N.0` (json.dumps parity).
|
|
413
|
+
const jsonShape = { ...m, saved_pct: new PyFloat(m.saved_pct) };
|
|
414
|
+
process.stdout.write(_jsonDumpsSorted(jsonShape) + '\n');
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
process.stdout.write(`Rule-layer thin projection (kernel full-bodied + ${m.non_kernel_thinned} non-kernel pointers):\n`);
|
|
418
|
+
process.stdout.write(` eager: ${_rjust6(m.eager_gpt)} GPT tok (${_comma(m.eager_chars)} chars)\n`);
|
|
419
|
+
process.stdout.write(` thin: ${_rjust6(m.thin_gpt)} GPT tok (${_comma(m.thin_chars)} chars)\n`);
|
|
420
|
+
process.stdout.write(` saved: ${_rjust6(m.saved_gpt)} GPT tok (${m.saved_pct}% of the rule layer)\n`);
|
|
421
|
+
process.stdout.write(` method: ${m.token_method}\n`);
|
|
422
|
+
}
|
|
423
|
+
return 0;
|
|
424
|
+
}
|
|
425
|
+
function _isCliEntry() {
|
|
426
|
+
if (process.argv[1] === undefined) {
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
429
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
430
|
+
if (import.meta.url === argvUrl) {
|
|
431
|
+
return true;
|
|
432
|
+
}
|
|
433
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
434
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
435
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
436
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
437
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
438
|
+
try {
|
|
439
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
440
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
441
|
+
return here === argv;
|
|
442
|
+
}
|
|
443
|
+
catch {
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
448
|
+
process.exit(main());
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=project_thin_rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project_thin_rules.js","sourceRoot":"","sources":["../../src/scripts/project_thin_rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Drive-loop era frozen per ADR-206 (2026-08-03): governing ADRs 068/070-084 are
|
|
2
|
+
// superseded — subsystem is beta-internal, bugfix-only; no new capability work.
|
|
1
3
|
/**
|
|
2
4
|
* `/api/v1/workspace/*` — surface contract for the daily-workspace tab
|
|
3
5
|
* in the modern Preact shell.
|