@event4u/agent-config 9.14.0 → 9.16.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.
Files changed (287) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +118 -99
  3. package/README.md +8 -0
  4. package/dist/agent-src/commands/agents/audit.md +7 -7
  5. package/dist/agent-src/commands/agents/optimize.md +1 -1
  6. package/dist/agent-src/commands/analyze/reference-repo.md +1 -1
  7. package/dist/agent-src/commands/chat-history.md +1 -0
  8. package/dist/agent-src/commands/context.md +1 -0
  9. package/dist/agent-src/commands/council.md +1 -1
  10. package/dist/agent-src/commands/ghostwriter.md +1 -1
  11. package/dist/agent-src/commands/memory.md +2 -1
  12. package/dist/agent-src/commands/module.md +1 -0
  13. package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
  14. package/dist/agent-src/commands/optimize/deep.md +5 -2
  15. package/dist/agent-src/commands/optimize/skills.md +5 -5
  16. package/dist/agent-src/commands/override.md +1 -0
  17. package/dist/agent-src/commands/prediction-pool.md +4 -4
  18. package/dist/agent-src/commands/research/deep.md +1 -1
  19. package/dist/agent-src/commands/roadmap.md +2 -1
  20. package/dist/agent-src/commands/rule-compliance-audit.md +1 -1
  21. package/dist/agent-src/commands/tdd.md +1 -0
  22. package/dist/agent-src/commands/tests.md +1 -0
  23. package/dist/agent-src/commands/upstream-contribute.md +5 -5
  24. package/dist/agent-src/commands/video/from-script.md +1 -1
  25. package/dist/agent-src/commands/video/from-song.md +1 -1
  26. package/dist/agent-src/commands/video/scene.md +1 -1
  27. package/dist/agent-src/commands/video/stitch.md +1 -1
  28. package/dist/agent-src/commands/video/storyboard.md +1 -1
  29. package/dist/agent-src/commands/worktree/create.md +2 -1
  30. package/dist/agent-src/contexts/augment-infrastructure.md +1 -1
  31. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +5 -5
  32. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -3
  33. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  34. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +4 -3
  35. package/dist/agent-src/contexts/execution/subagent-routing.md +19 -0
  36. package/dist/agent-src/contexts/override-system.md +1 -1
  37. package/dist/agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
  38. package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
  39. package/dist/agent-src/rules/autonomous-execution.md +2 -1
  40. package/dist/agent-src/rules/brand-consistency.md +1 -0
  41. package/dist/agent-src/rules/brand-source-of-truth.md +1 -0
  42. package/dist/agent-src/rules/code-comment-discipline.md +2 -0
  43. package/dist/agent-src/rules/communication-through-line.md +1 -0
  44. package/dist/agent-src/rules/content-quoting-floor.md +1 -0
  45. package/dist/agent-src/rules/cross-source-consistency.md +0 -1
  46. package/dist/agent-src/rules/downstream-changes.md +1 -0
  47. package/dist/agent-src/rules/external-code-graph-interop.md +1 -0
  48. package/dist/agent-src/rules/external-reference-deep-dive.md +1 -0
  49. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -0
  50. package/dist/agent-src/rules/finance-safety-floor.md +0 -1
  51. package/dist/agent-src/rules/icon-consistency.md +1 -0
  52. package/dist/agent-src/rules/image-likeness-and-rights.md +1 -0
  53. package/dist/agent-src/rules/improve-before-implement.md +1 -1
  54. package/dist/agent-src/rules/invite-challenge.md +1 -0
  55. package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -0
  56. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -0
  57. package/dist/agent-src/rules/markdown-safe-codeblocks.md +1 -0
  58. package/dist/agent-src/rules/media-governance-routing.md +4 -3
  59. package/dist/agent-src/rules/media-sync-ground-truth.md +1 -0
  60. package/dist/agent-src/rules/no-attribution-footers.md +1 -0
  61. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +1 -0
  62. package/dist/agent-src/rules/no-pr-progress-comments.md +1 -0
  63. package/dist/agent-src/rules/onboarding-gate.md +1 -0
  64. package/dist/agent-src/rules/output-discipline.md +1 -0
  65. package/dist/agent-src/rules/prefer-enums-over-literals.md +1 -0
  66. package/dist/agent-src/rules/preservation-guard.md +1 -0
  67. package/dist/agent-src/rules/question-not-instruction.md +1 -0
  68. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  69. package/dist/agent-src/rules/role-mode-adherence.md +1 -0
  70. package/dist/agent-src/rules/runtime-safety.md +1 -0
  71. package/dist/agent-src/rules/security-sensitive-stop.md +1 -0
  72. package/dist/agent-src/rules/session-canary.md +9 -2
  73. package/dist/agent-src/rules/source-confidentiality.md +1 -0
  74. package/dist/agent-src/rules/source-of-truth.md +1 -0
  75. package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -0
  76. package/dist/agent-src/rules/think-before-action.md +1 -0
  77. package/dist/agent-src/rules/token-budget-discipline.md +1 -0
  78. package/dist/agent-src/rules/token-efficiency.md +1 -0
  79. package/dist/agent-src/rules/token-optimizer-maintenance.md +5 -5
  80. package/dist/agent-src/rules/tool-safety.md +1 -0
  81. package/dist/agent-src/rules/untrusted-input-defense.md +2 -0
  82. package/dist/agent-src/rules/user-interaction.md +1 -0
  83. package/dist/agent-src/rules/user-interrupt-priority.md +1 -0
  84. package/dist/agent-src/skills/adr-create/SKILL.md +1 -1
  85. package/dist/agent-src/skills/check-refs/SKILL.md +1 -1
  86. package/dist/agent-src/skills/competitive-positioning/SKILL.md +1 -1
  87. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  88. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  89. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
  90. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  91. package/dist/agent-src/skills/github-ci/SKILL.md +1 -0
  92. package/dist/agent-src/skills/guideline-writing/SKILL.md +1 -1
  93. package/dist/agent-src/skills/lint-skills/SKILL.md +1 -1
  94. package/dist/agent-src/skills/readme-reviewer/SKILL.md +1 -1
  95. package/dist/agent-src/skills/roadmap-management/SKILL.md +8 -1
  96. package/dist/agent-src/skills/roadmap-writing/SKILL.md +1 -1
  97. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -1
  98. package/dist/agent-src/skills/skill-writing/SKILL.md +4 -4
  99. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  100. package/dist/agent-src/skills/upstream-contribute/SKILL.md +6 -6
  101. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +25 -0
  102. package/dist/agent-src/templates/AGENTS.md +1 -1
  103. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  104. package/dist/agent-src/templates/command.md +1 -1
  105. package/dist/agent-src/templates/copilot-instructions.md +3 -3
  106. package/dist/agent-src/templates/rule.md +2 -2
  107. package/dist/agent-src/templates/scripts/work_engine/orchestration.ts +1 -1
  108. package/dist/agent-src/templates/skill-archive-note.md +5 -5
  109. package/dist/agent-src/templates/skill.md +1 -1
  110. package/dist/cli/agent-config.js +66 -19
  111. package/dist/cli/agent-config.js.map +1 -1
  112. package/dist/cli/main.js +9 -4
  113. package/dist/cli/main.js.map +1 -1
  114. package/dist/cli/mcp/content.js +1 -1
  115. package/dist/cli/mcp/content.js.map +1 -1
  116. package/dist/cli/python/workspace_drive.js +2 -0
  117. package/dist/cli/python/workspace_drive.js.map +1 -1
  118. package/dist/cli/python/workspace_drive_health.js +2 -0
  119. package/dist/cli/python/workspace_drive_health.js.map +1 -1
  120. package/dist/cli/python/workspace_hosts.js +2 -0
  121. package/dist/cli/python/workspace_hosts.js.map +1 -1
  122. package/dist/cli/python/workspace_sessions.js +2 -0
  123. package/dist/cli/python/workspace_sessions.js.map +1 -1
  124. package/dist/cli/registry.js +1 -0
  125. package/dist/cli/registry.js.map +1 -1
  126. package/dist/cli-delegate/{chunk-A3HJ6NTI.js → chunk-63WSP6YZ.js} +2 -1
  127. package/dist/cli-delegate/{chunk-EJYIGZ3T.js → chunk-BKO2AZ7Z.js} +1 -1
  128. package/dist/cli-delegate/{chunk-GCVFLBP2.js → chunk-H574KOUH.js} +338 -494
  129. package/dist/cli-delegate/chunk-NXFWFAYV.js +339 -0
  130. package/dist/cli-delegate/{chunk-TEGJU2JX.js → chunk-ZXXJLL5K.js} +2 -2
  131. package/dist/cli-delegate/cmd_conformance.js +29 -23
  132. package/dist/cli-delegate/cmd_doctor.js +3 -3
  133. package/dist/cli-delegate/cmd_export.js +4 -4
  134. package/dist/cli-delegate/cmd_preflight.js +2 -2
  135. package/dist/cli-delegate/cmd_prune.js +4 -4
  136. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  137. package/dist/cli-delegate/cmd_sync.js +4 -4
  138. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  139. package/dist/cli-delegate/cmd_validate.js +4 -4
  140. package/dist/discovery/deprecation-report.md +1 -1
  141. package/dist/discovery/discovery-manifest.json +127 -95
  142. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  143. package/dist/discovery/discovery-manifest.summary.md +1 -1
  144. package/dist/discovery/orphan-report.md +1 -1
  145. package/dist/discovery/packs.json +2 -2
  146. package/dist/discovery/trust-report.md +1 -1
  147. package/dist/discovery/workspaces.json +2 -2
  148. package/dist/hooks/dispatch.js +729 -430
  149. package/dist/install/install.mjs +52 -11
  150. package/dist/install/rule_scope.js +18 -2
  151. package/dist/install/rule_scope.js.map +1 -1
  152. package/dist/mcp/registry-manifest.json +2 -2
  153. package/dist/mcp/server.json +2 -2
  154. package/dist/mcp/server.mjs +518 -411
  155. package/dist/router.json +1 -1
  156. package/dist/scripts/_lib/claude_settings_hooks.js +30 -5
  157. package/dist/scripts/_lib/claude_settings_hooks.js.map +1 -1
  158. package/dist/scripts/_lib/scoped_projection.js +223 -0
  159. package/dist/scripts/_lib/scoped_projection.js.map +1 -0
  160. package/dist/scripts/_lib/surface_tiers.js +125 -0
  161. package/dist/scripts/_lib/surface_tiers.js.map +1 -0
  162. package/dist/scripts/_lib/token_count.js +166 -0
  163. package/dist/scripts/_lib/token_count.js.map +1 -0
  164. package/dist/scripts/_lib/trigger_eval_floors.js +8 -0
  165. package/dist/scripts/_lib/trigger_eval_floors.js.map +1 -1
  166. package/dist/scripts/condense.js +139 -9
  167. package/dist/scripts/condense.js.map +1 -1
  168. package/dist/scripts/project_thin_rules.js +450 -0
  169. package/dist/scripts/project_thin_rules.js.map +1 -0
  170. package/dist/server/routes/workspace.js +3 -1
  171. package/dist/server/routes/workspace.js.map +1 -1
  172. package/dist/server/schemas/settings.js +9 -3
  173. package/dist/server/schemas/settings.js.map +1 -1
  174. package/dist/shared/userMd/utils.js +1 -1
  175. package/dist/shared/userMd/utils.js.map +1 -1
  176. package/dist/ui/assets/index-DmR0mbk4.js +26 -0
  177. package/dist/ui/assets/index-DmR0mbk4.js.map +1 -0
  178. package/dist/ui/index.html +1 -1
  179. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  180. package/package.json +14 -14
  181. package/src/agent-src/templates/AGENTS.md +1 -1
  182. package/src/agent-src/templates/scripts/work_engine/orchestration.ts +1 -1
  183. package/src/config/agent-settings.template.yml +61 -11
  184. package/src/config/budget-routing.json +7 -0
  185. package/src/config/ci-local-parity.yml +8 -0
  186. package/src/config/discovery/unassigned-artefacts.yml +23 -25
  187. package/src/config/evaluator-budgets.json +35 -5
  188. package/src/config/gate-coverage.yml +147 -0
  189. package/src/config/gate-violation-baselines.json +25 -0
  190. package/src/install/rule_scope.ts +27 -2
  191. package/src/scripts/_cli/cmd_conformance.ts +13 -24
  192. package/src/scripts/_dispatch.bash +10 -0
  193. package/src/scripts/_lib/claude_settings_hooks.ts +30 -4
  194. package/src/scripts/_lib/gate_baseline.ts +213 -0
  195. package/src/scripts/_lib/scoped_projection.ts +50 -0
  196. package/src/scripts/_lib/tier_budget_routing.ts +360 -0
  197. package/src/scripts/_lib/tool_adapter_registry.ts +8 -1
  198. package/src/scripts/_lib/trigger_eval_floors.ts +9 -0
  199. package/src/scripts/_lib/trigger_routers.ts +17 -5
  200. package/src/scripts/adr/regenerate_index.ts +4 -3
  201. package/src/scripts/ai-video/lib/parse-blueprint.sh +1 -1
  202. package/src/scripts/ai_council/compile_corpus.ts +1 -1
  203. package/src/scripts/anchor_scoring_run.ts +1 -1
  204. package/src/scripts/audit_cloud_compatibility.ts +37 -2
  205. package/src/scripts/audit_initial_context.ts +53 -19
  206. package/src/scripts/audit_likelihood.ts +31 -2
  207. package/src/scripts/audit_user_type_axis.ts +58 -11
  208. package/src/scripts/bench_hook_latency.ts +172 -41
  209. package/src/scripts/bench_persona_placebo.ts +1 -1
  210. package/src/scripts/bench_quality_run.ts +1 -1
  211. package/src/scripts/build_mcp_catalog.ts +12 -1
  212. package/src/scripts/check_always_budget.ts +122 -11
  213. package/src/scripts/check_augment_description_cap.ts +24 -3
  214. package/src/scripts/check_ci_strict_superset.ts +150 -0
  215. package/src/scripts/check_cli_registry_budget_sync.ts +168 -0
  216. package/src/scripts/check_cluster_patterns.ts +100 -0
  217. package/src/scripts/check_consumer_scope_flip.ts +26 -4
  218. package/src/scripts/check_evaluator_budgets.ts +198 -19
  219. package/src/scripts/check_gate_coverage.ts +338 -2
  220. package/src/scripts/check_generator_output_coverage.ts +2 -1
  221. package/src/scripts/check_iron_law_prominence.ts +1 -1
  222. package/src/scripts/check_kernel_rule_bundle.ts +1 -1
  223. package/src/scripts/check_no_new_legacy_path.ts +167 -3
  224. package/src/scripts/check_pack_size.ts +18 -4
  225. package/src/scripts/check_portability.ts +37 -7
  226. package/src/scripts/check_references.ts +19 -3
  227. package/src/scripts/check_release_pr_shape.ts +13 -0
  228. package/src/scripts/check_token_quality_golden.ts +1 -1
  229. package/src/scripts/check_token_regression.ts +9 -2
  230. package/src/scripts/condense.ts +155 -12
  231. package/src/scripts/cost/budget.mjs +77 -2
  232. package/src/scripts/evaluator_umbrella.sh +34 -1
  233. package/src/scripts/generate_capability_matrix.ts +8 -0
  234. package/src/scripts/generate_router_coverage_from_matrix.ts +155 -0
  235. package/src/scripts/hook_manifest.yaml +17 -3
  236. package/src/scripts/hooks/block_config_weakening.ts +337 -0
  237. package/src/scripts/hooks/concern_registry.ts +2 -0
  238. package/src/scripts/hooks/probe_throttle.ts +75 -0
  239. package/src/scripts/install-hooks.sh +24 -2
  240. package/src/scripts/install.ts +2 -2
  241. package/src/scripts/lint_agents_md.ts +9 -3
  242. package/src/scripts/lint_archived_skills.ts +1 -1
  243. package/src/scripts/lint_artefact_frontmatter.ts +185 -37
  244. package/src/scripts/lint_command_routing.ts +21 -52
  245. package/src/scripts/lint_command_verbs.ts +47 -28
  246. package/src/scripts/lint_context_spine_usage.ts +38 -12
  247. package/src/scripts/lint_framework_leakage.ts +25 -6
  248. package/src/scripts/lint_handoffs.ts +49 -2
  249. package/src/scripts/lint_media_policy_linkage.ts +62 -30
  250. package/src/scripts/lint_namespace.ts +92 -7
  251. package/src/scripts/lint_new_skill_gate.ts +39 -31
  252. package/src/scripts/lint_originality_shingles.ts +7 -1
  253. package/src/scripts/lint_override_kernel_guard.ts +21 -3
  254. package/src/scripts/lint_pack_boundaries.ts +461 -91
  255. package/src/scripts/lint_pack_dependencies.ts +24 -57
  256. package/src/scripts/lint_persona_governance.ts +1 -1
  257. package/src/scripts/lint_role_experiences.ts +34 -5
  258. package/src/scripts/lint_trigger_precision.ts +142 -0
  259. package/src/scripts/mcp_server/consumer_tool_catalog.json +12 -201
  260. package/src/scripts/mcp_server/tools.ts +1 -1
  261. package/src/scripts/prepack-check.mjs +40 -1
  262. package/src/scripts/prepack_router_targets.d.mts +7 -0
  263. package/src/scripts/prepack_router_targets.mjs +93 -0
  264. package/src/scripts/print_required_checks.ts +72 -18
  265. package/src/scripts/profile_staleness_hook.ts +12 -0
  266. package/src/scripts/record_evaluator_measurements.mjs +105 -0
  267. package/src/scripts/recruit_preflight.sh +1 -1
  268. package/src/scripts/release.ts +214 -7
  269. package/src/scripts/router_target_paths.d.mts +4 -0
  270. package/src/scripts/router_target_paths.mjs +69 -0
  271. package/src/scripts/router_telemetry.ts +52 -1
  272. package/src/scripts/routing_doctor.ts +560 -0
  273. package/src/scripts/rule_trigger_eval.ts +403 -0
  274. package/src/scripts/schemas/rule.schema.json +5 -1
  275. package/src/scripts/session_canary_hook.ts +96 -5
  276. package/src/scripts/skill_linter.ts +9 -28
  277. package/src/scripts/smoke/skills.sh +1 -1
  278. package/src/scripts/sweep_dead_scan_roots.ts +356 -10
  279. package/src/scripts/trigger_coverage.ts +13 -2
  280. package/src/scripts/update_counts.ts +1 -1
  281. package/src/scripts/validate_telegraph_carveouts.ts +1 -1
  282. package/src/scripts/wrapper_freshness_hook.ts +14 -0
  283. package/src/server/schemas/settings.ts +19 -5
  284. package/src/shared/userMd/utils.ts +1 -1
  285. package/dist/cli-delegate/chunk-TJIAM5FW.js +0 -133
  286. package/dist/ui/assets/index-BpSQt5vm.js +0 -40
  287. 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.
@@ -25,7 +27,7 @@ import { fileURLToPath } from 'node:url';
25
27
  import { randomUUID } from 'node:crypto';
26
28
  import { execFile } from 'node:child_process';
27
29
  import { promisify } from 'node:util';
28
- import yaml from 'js-yaml';
30
+ import * as yaml from 'js-yaml';
29
31
  const execFileAsync = promisify(execFile);
30
32
  // The workspace CLIs are TypeScript (Python→TS final deletion). They run via
31
33
  // the repo-local `tsx` binary, resolved by walking up from this module's