@event4u/agent-config 4.9.0 → 5.1.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 (82) hide show
  1. package/.agent-src/commands/implement-ticket.md +5 -4
  2. package/.agent-src/contexts/execution/roadmap-process-loop.md +30 -4
  3. package/.agent-src/rules/language-and-tone.md +4 -10
  4. package/.agent-src/rules/linked-projects-onboarding-gate.md +82 -0
  5. package/.agent-src/rules/roadmap-progress-sync.md +39 -5
  6. package/.agent-src/scripts/update_roadmap_progress.py +63 -7
  7. package/.agent-src/skills/command-routing/SKILL.md +5 -4
  8. package/.agent-src/skills/roadmap-management/SKILL.md +121 -21
  9. package/.agent-src/skills/roadmap-writing/SKILL.md +63 -0
  10. package/.agent-src/templates/agent-settings.md +16 -0
  11. package/.agent-src/templates/roadmaps.md +22 -1
  12. package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +20 -3
  13. package/.claude-plugin/marketplace.json +1 -1
  14. package/CHANGELOG.md +106 -0
  15. package/CONTRIBUTING.md +19 -0
  16. package/README.md +12 -1
  17. package/dist/cli/registry.js +0 -2
  18. package/dist/cli/registry.js.map +1 -1
  19. package/dist/discovery/deprecation-report.md +1 -1
  20. package/dist/discovery/discovery-manifest.json +36 -14
  21. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  22. package/dist/discovery/discovery-manifest.summary.md +3 -3
  23. package/dist/discovery/orphan-report.md +1 -1
  24. package/dist/discovery/packs.json +6 -5
  25. package/dist/discovery/trust-report.md +3 -3
  26. package/dist/discovery/workspaces.json +5 -4
  27. package/dist/mcp/registry-manifest.json +3 -3
  28. package/dist/router.json +1 -1671
  29. package/docs/architecture.md +1 -1
  30. package/docs/benchmark.md +20 -8
  31. package/docs/benchmarks.md +11 -0
  32. package/docs/catalog.md +3 -2
  33. package/docs/contracts/benchmark-corpus-spec.md +31 -3
  34. package/docs/contracts/command-surface-tiers.md +1 -1
  35. package/docs/contracts/hook-architecture-v1.md +33 -0
  36. package/docs/contracts/migrate-command.md +197 -0
  37. package/docs/contracts/settings-api.md +2 -1
  38. package/docs/contracts/value-dashboard-spec.md +374 -0
  39. package/docs/contracts/value-report-schema.md +150 -0
  40. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +97 -0
  41. package/docs/decisions/ADR-032-linked-projects-scope.md +118 -0
  42. package/docs/decisions/INDEX.md +2 -0
  43. package/docs/getting-started.md +1 -1
  44. package/docs/guidelines/agent-infra/installed-tools-manifest.md +6 -3
  45. package/docs/guidelines/agent-infra/language-and-tone-examples.md +35 -0
  46. package/docs/guides/cross-repo-linked-projects.md +86 -0
  47. package/docs/migration/v1-to-v2.md +40 -27
  48. package/docs/value.md +84 -0
  49. package/package.json +8 -8
  50. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  51. package/scripts/_cli/cmd_migrate.py +264 -102
  52. package/scripts/_cli/cmd_settings_migrate.py +2 -1
  53. package/scripts/_dispatch.bash +147 -49
  54. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  55. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  56. package/scripts/_lib/agent_settings.py +20 -3
  57. package/scripts/_lib/install_regenerator.py +129 -0
  58. package/scripts/_lib/linked_projects.py +238 -0
  59. package/scripts/_lib/value_ladder.py +599 -0
  60. package/scripts/_lib/value_report.py +441 -0
  61. package/scripts/bench_rtk_savings.py +320 -0
  62. package/scripts/check_no_local_settings_committed.py +51 -0
  63. package/scripts/compile_router.py +19 -5
  64. package/scripts/expected_perms.json +1 -1
  65. package/scripts/first_run_gate_hook.py +178 -0
  66. package/scripts/hook_manifest.yaml +16 -7
  67. package/scripts/hooks/dispatch_hook.py +27 -0
  68. package/scripts/hooks/dispatch_issues.py +136 -0
  69. package/scripts/hooks_doctor.py +40 -1
  70. package/scripts/install.py +25 -21
  71. package/scripts/lint_agents_layout.py +5 -4
  72. package/scripts/lint_bench_corpus.py +86 -4
  73. package/scripts/lint_global_paths.py +4 -3
  74. package/scripts/lint_marketplace_install_completeness.py +188 -0
  75. package/scripts/lint_value_dashboard.py +218 -0
  76. package/scripts/render_benchmark_md.py +6 -2
  77. package/scripts/render_value_md.py +355 -0
  78. package/scripts/repro/repro_marketplace_install_gap.sh +161 -0
  79. package/scripts/roadmap_progress_hook.py +23 -0
  80. package/scripts/router_telemetry.py +470 -0
  81. package/scripts/validate_frontmatter.py +23 -9
  82. package/scripts/_cli/cmd_migrate_to_global.py +0 -415
@@ -430,6 +430,20 @@ telemetry:
430
430
  # Append-only JSONL log. Path is relative to the project root.
431
431
  # Always gitignored (see config/gitignore-block.txt).
432
432
  path: .agent-engagement.jsonl
433
+
434
+ # --- Linked projects (cross-repo awareness, local-only) ---
435
+ # IDE-attached sibling repos in scope for proactive cross-repo awareness.
436
+ # BELONGS IN `.agent-settings.local.yml` (in agents/settings/) (per-machine, gitignored) — sibling
437
+ # paths differ per developer, never commit them. Each entry: path (absolute,
438
+ # auto-filled by detection) + include (true = in scope, false = declined,
439
+ # never re-prompted). Detection skips bloat dirs; a sibling over max_files is
440
+ # flagged `large` (awareness only), never excluded. See ADR-032 +
441
+ # docs/guides/cross-repo-linked-projects.md. Agent never bulk-includes sibling
442
+ # files — passive awareness only.
443
+ linked_projects: []
444
+ # - path: /abs/path/to/sibling-repo
445
+ # include: true
446
+ linked_projects_max_files: 20000 # ceiling for the `large` flag; never excludes
433
447
  ```
434
448
 
435
449
  ## Settings Reference
@@ -503,6 +517,8 @@ the canonical narrative lives in
503
517
  | `telemetry.artifact_engagement.record.consulted` | `true`, `false` | `true` | When `true`: record artefacts loaded into context. |
504
518
  | `telemetry.artifact_engagement.record.applied` | `true`, `false` | `true` | When `true`: record artefacts cited or driving a decision. |
505
519
  | `telemetry.artifact_engagement.output.path` | path | `.agent-engagement.jsonl` | Append-only JSONL log path, relative to the project root. Always gitignored. |
520
+ | `linked_projects` | list of `{path, include}` | `[]` | IDE-attached sibling repos in scope for proactive cross-repo awareness. **Belongs in `.agent-settings.local.yml` (in agents/settings/)** (per-machine, gitignored). See [cross-repo guide](../../docs/guides/cross-repo-linked-projects.md) + ADR-032. |
521
+ | `linked_projects_max_files` | integer | `20000` | File-count ceiling above which a detected sibling is flagged `large` (awareness only). Never excludes. |
506
522
 
507
523
  ### Rename-Map (migration)
508
524
 
@@ -8,7 +8,8 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
8
8
 
9
9
  1. **Be precise and concise.** Aim for 500–1000 lines max. If larger, split into multiple files.
10
10
  2. **Checkboxes are mandatory, not decorative.** Every active roadmap MUST contain at least one `- [ ]` per non-intro phase. Decision tables, ICE matrices, and block-sequencing tables capture the *why*; checkboxes capture the *what to do next*. A roadmap without checkboxes is invisible to `agents/roadmaps-progress.md` — the dashboard cannot count it, the next reader thinks no work is planned. Enforced by [`roadmap-progress-sync`](../rules/roadmap-progress-sync.md) Iron Law #2.
11
- - **Status is binary: `ready` (default) or `draft`.** New roadmaps are created **ready** unless the user explicitly says draft `ready` is implicit and need not be written. Drafts declare it via frontmatter at the top of the file (`---\nstatus: draft\n---`) and are hidden from the dashboard until the flag is removed or flipped to `ready`. Use `draft` while the roadmap is still being authored, while waiting for upstream decisions, or as a capture-only synthesis that has not been promoted to executable phases. There are no other status values; legacy banners like `**Status: directional**` are removed.
11
+ - **Glyph semantics:** `[ ]` open · `[x]` done · `[~]` **deferred** (planned for later blocks silent archive per `roadmap-progress-sync` Iron Law 3) · `[-]` **cancelled** (won't do explicit drop). Pick `[~]` vs `[-]` honestly; former carries follow-up-roadmap obligations, latter does not. Optional inline annotations: `<!-- deferred: reason -->` / `<!-- cancelled: reason -->` on same line.
12
+ - **Status is binary: `ready` (default) or `draft`.** New roadmaps are created **ready** unless the user explicitly says draft — `ready` is implicit and need not be written. Drafts declare it via frontmatter at the top of the file (`---\nstatus: draft\n---`) and are hidden from the dashboard until the flag is removed or flipped to `ready`. Use `draft` while the roadmap is still being authored, while waiting for upstream decisions, as a capture-only synthesis that has not been promoted to executable phases, or as a follow-up roadmap (see rule 17 below) that is not yet ready to surface. There are no other status values; legacy banners like `**Status: directional**` are removed.
12
13
  3. **State the goal first.** One sentence at the top — what is the outcome?
13
14
  4. **List prerequisites** — what must exist or be running before starting.
14
15
  5. **Reference existing code** — point to files, classes, or modules.
@@ -57,6 +58,26 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
57
58
  `horizon_weeks` to a positive integer. Enforced by
58
59
  `task lint-roadmap-complexity` (plate-token detection skipped when
59
60
  `horizon_weeks > 0`).
61
+ 17. **Follow-up roadmaps from deferred items carry `parent_roadmap`.**
62
+ When a roadmap closes with `[~]` deferred items,
63
+ [`roadmap-management`](../skills/roadmap-management/SKILL.md) skill
64
+ spawns a follow-up under `agents/roadmaps/road-to-<parent>-followup.md`.
65
+ Follow-up's frontmatter declares back-link:
66
+ ```yaml
67
+ ---
68
+ complexity: lightweight
69
+ status: draft # optional — hides from dashboard
70
+ parent_roadmap: <parent-slug>
71
+ ---
72
+ ```
73
+ Follow-up's body opens with `## Context` block citing
74
+ `agents/roadmaps/archive/<parent>.md`. Deferred steps copied
75
+ **verbatim** (with original phase context) so plan survives
76
+ migration. If follow-up is "ready but blocked" rather than draft,
77
+ omit `status:` and add body note `> Blocked until <condition>` —
78
+ dashboard surfaces roadmap, readers honor body convention.
79
+ Authoring contract: [`roadmap-writing § 7`](../skills/roadmap-writing/SKILL.md);
80
+ spawn procedure: [`roadmap-management § Spawn follow-up`](../skills/roadmap-management/SKILL.md).
60
81
 
61
82
  ---
62
83
 
@@ -61,6 +61,21 @@ from . import user_global_paths
61
61
  logger = logging.getLogger(__name__)
62
62
 
63
63
  DEFAULT_PROJECT_FILE = ".agent-settings.yml"
64
+ #: Per-machine override file. Gitignored. A SINGLE project-level file living
65
+ #: under ``agents/settings/`` (with the rest of the project's settings layer,
66
+ #: not at the repo root). It is appended as the deepest cascade layer so a
67
+ #: developer's local values override every committed ``.agent-settings.yml``
68
+ #: without ever being committed. Missing file is harmless (read as {}).
69
+ LOCAL_PROJECT_FILE = ".agent-settings.local.yml"
70
+ #: Project-relative directory the local override lives in.
71
+ LOCAL_PROJECT_SUBDIR = ("agents", "settings")
72
+
73
+
74
+ def _local_settings_path(project_root: Path) -> Path:
75
+ """Single local override: ``<root>/agents/settings/.agent-settings.local.yml``."""
76
+ return project_root.joinpath(*LOCAL_PROJECT_SUBDIR, LOCAL_PROJECT_FILE)
77
+
78
+
64
79
  DEFAULT_TEAM_FILE = ".agent-project-settings.yml"
65
80
  USER_GLOBAL_FILENAME = "agent-settings.yml"
66
81
 
@@ -415,12 +430,12 @@ def _resolve_cascade_paths(
415
430
  """
416
431
  if cwd is None:
417
432
  legacy = Path(project_path) if project_path else Path(DEFAULT_PROJECT_FILE)
418
- return [legacy]
433
+ return [legacy, _local_settings_path(legacy.parent)]
419
434
 
420
435
  root = find_project_root(cwd)
421
436
  if root is None:
422
437
  legacy = Path(project_path) if project_path else Path(DEFAULT_PROJECT_FILE)
423
- return [legacy]
438
+ return [legacy, _local_settings_path(legacy.parent)]
424
439
 
425
440
  cwd_resolved = cwd.resolve()
426
441
  # Build the chain root → … → cwd (shallowest first, deepest last).
@@ -435,7 +450,9 @@ def _resolve_cascade_paths(
435
450
  break
436
451
  cursor = parent
437
452
  chain.reverse()
438
- return [d / DEFAULT_PROJECT_FILE for d in chain]
453
+ # Committed cascade root cwd, then the single project-level local override
454
+ # under agents/settings/ as the deepest (winning) layer.
455
+ return [d / DEFAULT_PROJECT_FILE for d in chain] + [_local_settings_path(root)]
439
456
 
440
457
 
441
458
  def load_agent_settings(
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
9
- "version": "4.9.0",
9
+ "version": "5.1.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
package/CHANGELOG.md CHANGED
@@ -802,6 +802,112 @@ our recommendation order, not its support status.
802
802
  > that forces a new era split (`# Era: 4.6.x`, etc.) — see
803
803
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
804
804
 
805
+ ## [5.1.0](https://github.com/event4u-app/agent-config/compare/5.0.0...5.1.0) (2026-05-29)
806
+
807
+ ### Features
808
+
809
+ * **roadmap-progress:** surface pending Iron Law 3 deferrals in dashboard ([2f21a41](https://github.com/event4u-app/agent-config/commit/2f21a41c0ae09e003ddad4cf9184f3d1d359e87b))
810
+ * **roadmaps:** document follow-up-roadmap shape + spawn procedure ([ea2b02f](https://github.com/event4u-app/agent-config/commit/ea2b02f34d895e0cdbb1a37d45897990a3282d0b))
811
+ * **roadmaps:** add Iron Law 3 — block silent archive of [~] deferred items ([3b3d4ed](https://github.com/event4u-app/agent-config/commit/3b3d4edce67e1c04419bd2daf9a2d4b6d0e68dbe))
812
+ * **rules:** add linked-projects-onboarding-gate (Option A, passive awareness) ([54cf6fc](https://github.com/event4u-app/agent-config/commit/54cf6fc16580f2d1084e96ae3d41b0b12fdb6c6e))
813
+ * **settings:** add gitignored .agent-settings.local.yml cascade layer ([ca4185d](https://github.com/event4u-app/agent-config/commit/ca4185d8cc4d462b92d00f1520da4dcb1bde3fcf))
814
+ * **linked-projects:** add IDE-attached sibling detector ([a0b4a99](https://github.com/event4u-app/agent-config/commit/a0b4a9968962343c7e768469008a6fa3144a736b))
815
+
816
+ ### Bug Fixes
817
+
818
+ * **refs:** reference local file as basename, not project-rooted path ([dc626c4](https://github.com/event4u-app/agent-config/commit/dc626c49fe68d958ee425d67adce7d71d21c7098))
819
+ * **settings:** re-mirror agent_settings.py to work_engine template copy ([6c1b7b1](https://github.com/event4u-app/agent-config/commit/6c1b7b1285ef3c15332f23c14a4e282c13dd6554))
820
+ * **rules:** root-relative doc reference in linked-projects rule ([2a85cd2](https://github.com/event4u-app/agent-config/commit/2a85cd26b38ad92342ccc0171754bff145305fcb))
821
+
822
+ ### Documentation
823
+
824
+ * **roadmap:** archive road-to-linked-projects-scope (all phases complete) ([e12b755](https://github.com/event4u-app/agent-config/commit/e12b755c938c210b234347d8f7f6905710a6eacf))
825
+ * **roadmap:** road-to-linked-projects-scope (GO, Option A) + dashboard ([1d8d822](https://github.com/event4u-app/agent-config/commit/1d8d822dd29f962492b92ac570f28f6df13d1eb8))
826
+ * **adr:** ADR-032 linked-projects scope GO (Option A) + cross-repo guide ([c49d53c](https://github.com/event4u-app/agent-config/commit/c49d53ce07ff5222b60f5d82a71226c459f7006f))
827
+
828
+ ### Refactoring
829
+
830
+ * **settings:** relocate local override to agents/settings/.agent-settings.local.yml ([4f887ae](https://github.com/event4u-app/agent-config/commit/4f887ae863b588f66efbfdc585e52123a3e23400))
831
+
832
+ ### Chores
833
+
834
+ * **index:** regenerate index + catalog for linked-projects rule ([66346cd](https://github.com/event4u-app/agent-config/commit/66346cd1f51795a2e42298b6b57452f39742ab79))
835
+
836
+ Tests: 5160 (+23 since 5.0.0)
837
+
838
+ ## [5.0.0](https://github.com/event4u-app/agent-config/compare/4.9.0...5.0.0) (2026-05-29)
839
+
840
+ ### BREAKING CHANGES
841
+
842
+ * **migrate:** remove legacy migrate-state + migrate-to-global subcommands ([3c2976c](https://github.com/event4u-app/agent-config/commit/3c2976c23d264dd67f9388d46db0748268c0ffcc))
843
+
844
+ ### Features
845
+
846
+ * **migrate:** unify cleanup actions into one opinionated command ([014867e](https://github.com/event4u-app/agent-config/commit/014867e36af4e24167944dc9518c10d1349d7a51))
847
+ * **validate:** adopt severity-tiered errors + projection-roundtrip test (ADR-031) ([eafefa4](https://github.com/event4u-app/agent-config/commit/eafefa44bcc08c2c050edc360be361cf42e170bd))
848
+ * **lint:** block re-introduction of the marketplace-install gap ([ebe29a6](https://github.com/event4u-app/agent-config/commit/ebe29a6b52de8fad31f0b1d0bad00fce57adf1ec))
849
+ * **install:** add hooks:install --claude/--lifecycle/--regen flags ([a5b6798](https://github.com/event4u-app/agent-config/commit/a5b6798f96e9dadec93447383892907fdfeed625))
850
+ * **hooks:** add first-run gate banner for unscaffolded consumers ([33baa0e](https://github.com/event4u-app/agent-config/commit/33baa0ed701acb3be7efdbfd73483a8e81e76982))
851
+ * **hooks:** add dispatch-issues.jsonl observability layer ([7642b7a](https://github.com/event4u-app/agent-config/commit/7642b7af8147f4caa68817a12e0a875cab921840))
852
+ * **bench:** add replay-opaque trigger bucket + linter rule-id robustness ([0f6c727](https://github.com/event4u-app/agent-config/commit/0f6c727ccfa201d874383cbb7be8ab232d3b20bc))
853
+ * **bench-corpus:** ship 5 router-coverage extension corpora ([dccedb3](https://github.com/event4u-app/agent-config/commit/dccedb33697e0f924388b87b3ad8b66d027f9f97))
854
+ * **telemetry:** manifest auto-discovery + intended-vs-observed + unintended_activations ([3d46bdc](https://github.com/event4u-app/agent-config/commit/3d46bdc31d46fd830b2138957b91670a8c3d527c))
855
+ * **bench-corpus:** add intended_triggers + open_files + command fields ([6c97e51](https://github.com/event4u-app/agent-config/commit/6c97e51fba8e59fda8e56c3fc7fe6f9ac8774b60))
856
+ * **value:** router-trigger telemetry + Panel B attribution ([c867411](https://github.com/event4u-app/agent-config/commit/c8674116591f0d0b4f8221f9f7d5fcebe28da077))
857
+ * **taskfiles:** wire `task value*` targets + cadence row ([8b26a43](https://github.com/event4u-app/agent-config/commit/8b26a43af4dff4050084691fe8b2a6f036ce96ce))
858
+ * **scripts:** lint docs/value.md for structural invariants ([370b0b0](https://github.com/event4u-app/agent-config/commit/370b0b00a44d086b7fe8f0a21b0a5d2d92fca98a))
859
+ * **scripts:** render docs/value.md from value-v1 — the dashboard ([08c626a](https://github.com/event4u-app/agent-config/commit/08c626a07975b36958ef37222263f50cbd5dc196))
860
+ * **bench:** capture first live A/B Track B with-vs-without run ([7de6445](https://github.com/event4u-app/agent-config/commit/7de64452a0368377ae1f72b87dd7e50a6a72e49e))
861
+ * **scripts:** measure rtk's actual CLI-output token savings ([b51821e](https://github.com/event4u-app/agent-config/commit/b51821e31e7fb1be301a33f8c56bcebab2b49c51))
862
+ * **scripts:** add value_ladder + value_report libs and unit tests ([5d1b8ba](https://github.com/event4u-app/agent-config/commit/5d1b8bad3058bbad66acc408c4b83df419d55a4a))
863
+
864
+ ### Bug Fixes
865
+
866
+ * **deps:** relax runtime dependency floors so npx resolves under prefer-offline ([0f04673](https://github.com/event4u-app/agent-config/commit/0f0467353a40b4bf75ba3424b0e177d10ab802eb))
867
+ * **hooks:** respect AGENT_CONFIG_REPLAY + fix dispatcher case-regex match ([b86c681](https://github.com/event4u-app/agent-config/commit/b86c68194e61dd6612d3b03ebdf799bc721fb53e))
868
+ * **bench-corpus:** correct intended_triggers, mark intent-only rules replay-opaque ([669cdbf](https://github.com/event4u-app/agent-config/commit/669cdbffa37664654bc24da61457f1867fafcd1c))
869
+ * **value:** load rung now measures the real kernel, not the canon ([6721090](https://github.com/event4u-app/agent-config/commit/6721090ad2d79199f28532a7f42cfcb9a08931dc))
870
+ * **scripts:** reframe docs/benchmark.md Track A headline ([2766e22](https://github.com/event4u-app/agent-config/commit/2766e22f1a74a82d15a011e20ddb3758c36055cc))
871
+
872
+ ### Documentation
873
+
874
+ * **roadmaps:** archive road-to-one-migrate-command (all phases done) ([626e7c1](https://github.com/event4u-app/agent-config/commit/626e7c1c1bfd21174a2df4d41f5dcaa76df776d9))
875
+ * **migrate:** redirect cross-references to the unified contract ([557e64d](https://github.com/event4u-app/agent-config/commit/557e64de58dc0a0555f3a3b9fce1f0c6d0a8b13a))
876
+ * **contracts:** lock unified migrate command behavior matrix ([5828cbc](https://github.com/event4u-app/agent-config/commit/5828cbc90195ed0af9771b8d0b1bd7e153d004b7))
877
+ * **roadmaps:** add road-to-per-skill-model-autoswitch + regen dashboard ([3cdeeea](https://github.com/event4u-app/agent-config/commit/3cdeeea448a9d3492addf0e1171f4fe7e4aafeb0))
878
+ * **roadmaps:** record step-completion notes on hooks-actually-fire archive ([7150557](https://github.com/event4u-app/agent-config/commit/715055778358d32233b5222496f03258b983626d))
879
+ * **evidence:** reproduce + document marketplace-install hook gap ([cc5a557](https://github.com/event4u-app/agent-config/commit/cc5a5574e1bda89bfe8c2260ee163ee952d36019))
880
+ * **roadmaps:** add road-to-hooks-actually-fire-in-consumers + council fixes ([1255842](https://github.com/event4u-app/agent-config/commit/1255842c7c28659d13532f27190b965857df38f7))
881
+ * **roadmaps:** Phase 7 honesty-floor correction on corpus-expansion roadmap ([1def2eb](https://github.com/event4u-app/agent-config/commit/1def2eb34debb4dadb9d50025b8963954905e3c7))
882
+ * **roadmaps:** mark Phase 6 checkboxes on archived corpus-expansion roadmap ([a5c0c11](https://github.com/event4u-app/agent-config/commit/a5c0c11e58616180e5485e78b76832b5db7f8610))
883
+ * **roadmaps:** close road-to-corpus-expansion-evidence-based-cuts ([88c1644](https://github.com/event4u-app/agent-config/commit/88c1644dac99eeefad5031550d657c881cd87fe7))
884
+ * **value:** pass-2 close-out — structural categorisation, 0 cuts ([389df66](https://github.com/event4u-app/agent-config/commit/389df66f13794ddd98884e55726da1eb2285d54a))
885
+ * **roadmaps:** fold Round-3 council fixes into corpus-expansion plan ([25f6039](https://github.com/event4u-app/agent-config/commit/25f603967ac6193dedee1d761a9d0939dd94ced2))
886
+ * **roadmaps:** plan corpus expansion + evidence-based tier-1 cuts ([f570b97](https://github.com/event4u-app/agent-config/commit/f570b973ba3caa26b329393724c0a364ae6a762b))
887
+ * **roadmaps:** mark Phase 6 checkboxes on archived netto-cuts roadmap ([802da06](https://github.com/event4u-app/agent-config/commit/802da0685d42f7f3909c1df0ed29f349bd91e84f))
888
+ * **roadmaps:** close road-to-value-dashboard-netto-cuts dashboard ([d1e5f25](https://github.com/event4u-app/agent-config/commit/d1e5f2527eb8cc5aed522d479b2a197bdc557604))
889
+ * **value:** re-render dashboard with corrected NETTO + close-out summary ([b4ea133](https://github.com/event4u-app/agent-config/commit/b4ea1334e587bae6872aff15bab296d24c1a35b4))
890
+ * **roadmaps:** add road-to-value-dashboard-netto-cuts ([3ed3ea7](https://github.com/event4u-app/agent-config/commit/3ed3ea77419e6d5320df05a09a30587f2a9d0437))
891
+ * **roadmaps:** close road-to-readable-value-dashboard ([28afac2](https://github.com/event4u-app/agent-config/commit/28afac2ab67e3ca86637baa0dde2b140b1fbb9e6))
892
+ * **contracts:** add value-dashboard-spec + value-report-schema ([46abebd](https://github.com/event4u-app/agent-config/commit/46abebdea378a782f56b3f9fefc0212f7163f321))
893
+
894
+ ### Refactoring
895
+
896
+ * **kernel:** extract language-and-tone mechanics to guideline (−82 tok/req) ([f1cfeab](https://github.com/event4u-app/agent-config/commit/f1cfeabec63e02b03bfe5ce0a3e16a1e5445c46b))
897
+
898
+ ### Tests
899
+
900
+ * **lint-agents-layout:** align consumer-warning assertion with unified migrate ([496af6c](https://github.com/event4u-app/agent-config/commit/496af6c8a66cf6c6accf3f1c13376340d44e1ca8))
901
+
902
+ ### Chores
903
+
904
+ * **roadmaps:** regen dashboard after archiving hooks-actually-fire roadmap ([45a3ea7](https://github.com/event4u-app/agent-config/commit/45a3ea715ae4956f256aeaf20e11c36878711b0b))
905
+ * **value:** refresh dashboard + telemetry snapshots after kernel cut ([e7653a1](https://github.com/event4u-app/agent-config/commit/e7653a1be4bacb7fb75e2bf9310d63bd3d5a5349))
906
+ * **bench:** ship pass-2 audit artefacts under router-telemetry/ ([89b3900](https://github.com/event4u-app/agent-config/commit/89b3900f070a13cd02193733527b6ed943922d06))
907
+ * **router:** minify dist/router.json by default + audit context loading ([d011333](https://github.com/event4u-app/agent-config/commit/d011333f1126ce636961906a3d070fd306458880))
908
+
909
+ Tests: 5137 (+59 since 4.9.0)
910
+
805
911
  ## [4.9.0](https://github.com/event4u-app/agent-config/compare/4.8.0...4.9.0) (2026-05-28)
806
912
 
807
913
  ### Features
package/CONTRIBUTING.md CHANGED
@@ -237,6 +237,25 @@ Release notes live in [`CHANGELOG.md`](CHANGELOG.md) and are generated by
237
237
  the last tag. Contributors do **not** edit the changelog by hand; writing
238
238
  clean commit subjects is how notes are authored.
239
239
 
240
+ ### Runtime dependency floors — never pin to the freshest patch
241
+
242
+ `dependencies` in `package.json` are resolved on the **consumer's** machine
243
+ when they run `npx @event4u/agent-config …`. Many consumer projects set
244
+ `prefer-offline=true` in their `.npmrc` or resolve through a private-registry
245
+ mirror, so npm consults **cached** registry metadata that can lag behind by a
246
+ patch or a minor. A floor pinned to a just-published version (e.g.
247
+ `execa@^9.6.1` the day 9.6.1 ships) then fails resolution with
248
+ `ETARGET — No matching version found`, even though the version exists on public
249
+ npm.
250
+
251
+ Rule: keep runtime-dependency floors at a **settled minor** with the patch at
252
+ `.0` (`^9.5.0`, not `^9.6.1`). We only use the stable surface of these
253
+ libraries, so the floor is the minimum compatible version — not the latest
254
+ installed one. `npm install <pkg>@latest` re-pins the floor to the freshest
255
+ patch; if you run it, lower the resulting `^X.Y.Z` back to `^X.Y.0` (or a
256
+ settled minor) before committing. This does not apply to `devDependencies`,
257
+ which never reach a consumer.
258
+
240
259
  ### Release process
241
260
 
242
261
  Releases are driven by a single command that owns the entire pipeline from
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![Smoke](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [![Public install smoke (3 OS × 2 Node)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [![npm](https://img.shields.io/npm/v/@event4u/agent-config?style=flat-square&label=npm&color=orange)](https://www.npmjs.com/package/@event4u/agent-config)
6
6
 
7
- [![Skills](https://img.shields.io/badge/Skills-219-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-77-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-135-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
7
+ [![Skills](https://img.shields.io/badge/Skills-219-orange?style=flat-square)](.agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-78-orange?style=flat-square)](.agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-135-orange?style=flat-square)](.agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-73-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-24-orange?style=flat-square)](.agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](.agent-src/personas/advisors/)
8
8
 
9
9
  > **The Universal AI Agent OS for Founders, Content Creators, Consultants, Sales, Finance, and Engineering teams. Bring your own AI provider.**
10
10
 
@@ -102,6 +102,17 @@ npx -y @event4u/agent-config init
102
102
 
103
103
  Migrating from a v1.x install? `npx @event4u/agent-config migrate` — full notes in [`docs/migration/v1-to-v2.md`](docs/migration/v1-to-v2.md).
104
104
 
105
+ > **`npm error ETARGET` / `No matching version found for <dep>`?** Re-run with a
106
+ > forced fresh metadata fetch:
107
+ > ```bash
108
+ > npx -y --prefer-online @event4u/agent-config init
109
+ > ```
110
+ > This happens when the project's `.npmrc` sets `prefer-offline=true` (or points
111
+ > at a private-registry mirror): npm resolves our dependencies against stale
112
+ > cached metadata that predates a recently published version. `--prefer-online`
113
+ > bypasses the cache for this run; `npm cache verify` fixes it permanently for
114
+ > that machine.
115
+
105
116
  ---
106
117
 
107
118
  ## What `agent-config` is — and what it isn't
@@ -21,7 +21,6 @@ export const REGISTRY = [
21
21
  { name: 'export', disposition: 'delegate' },
22
22
  { name: 'settings:check', disposition: 'delegate' },
23
23
  { name: 'settings:migrate', disposition: 'delegate', synopsis: 'Lift legacy project-local settings into ~/.event4u/agent-config/.' },
24
- { name: 'migrate-to-global', disposition: 'delegate', synopsis: 'One-shot legacy → global-only consumer migration (ADR-020).' },
25
24
  { name: 'uninstall', disposition: 'delegate' },
26
25
  { name: 'prune', disposition: 'delegate' },
27
26
  { name: 'doctor', disposition: 'delegate' },
@@ -35,7 +34,6 @@ export const REGISTRY = [
35
34
  { name: 'help', disposition: 'native', synopsis: 'Show TS-shell help; delegates --tier=N to Bash.' },
36
35
  { name: 'explain', disposition: 'delegate' },
37
36
  { name: 'migrate', disposition: 'delegate' },
38
- { name: 'migrate-state', disposition: 'delegate' },
39
37
  { name: 'mcp:render', disposition: 'delegate' },
40
38
  { name: 'mcp:check', disposition: 'delegate' },
41
39
  { name: 'mcp:setup', disposition: 'delegate' },
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-05-28T13:27:08Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._
@@ -1454,7 +1454,7 @@
1454
1454
  },
1455
1455
  {
1456
1456
  "category": "command",
1457
- "checksum": "sha256:941e3d24cd76ae38691718c6d2932e6e96232ea28ffff9a3a17ca535897425bf",
1457
+ "checksum": "sha256:8c33a4bcc84dcdc573f50d238f512011148a29004ed7eaa394eda552d8d2444a",
1458
1458
  "install": {
1459
1459
  "default": true,
1460
1460
  "removable": false
@@ -3623,7 +3623,7 @@
3623
3623
  },
3624
3624
  {
3625
3625
  "category": "rule",
3626
- "checksum": "sha256:56327e8e4d2ec56fb6d6b9db897c06aa5c3f884b47b41669ac656d1c390e14b2",
3626
+ "checksum": "sha256:3f9c59537cb942c1c06f35151d41829ca670173120a5d161cfc843b9e2796c95",
3627
3627
  "install": {
3628
3628
  "default": true,
3629
3629
  "removable": false
@@ -3642,6 +3642,28 @@
3642
3642
  "agent-config-maintainer"
3643
3643
  ]
3644
3644
  },
3645
+ {
3646
+ "category": "rule",
3647
+ "checksum": "sha256:a118756c8f27c6ac6208f7daa7a8f268327a3a7a182321e72b307ef9895b1602",
3648
+ "install": {
3649
+ "default": true,
3650
+ "removable": true
3651
+ },
3652
+ "lifecycle": "experimental",
3653
+ "packs": [
3654
+ "engineering-base"
3655
+ ],
3656
+ "path": "packages/core/.agent-src.uncondensed/rules/linked-projects-onboarding-gate.md",
3657
+ "trust": {
3658
+ "confidence": "medium",
3659
+ "human_review_required": false,
3660
+ "level": "experimental"
3661
+ },
3662
+ "workspaces": [
3663
+ "agent-config-maintainer",
3664
+ "engineering"
3665
+ ]
3666
+ },
3645
3667
  {
3646
3668
  "category": "rule",
3647
3669
  "checksum": "sha256:e337c1216712180fe34f80f24d491b70ecf954be7f471bc44ea5c49d0239f87a",
@@ -4045,7 +4067,7 @@
4045
4067
  },
4046
4068
  {
4047
4069
  "category": "rule",
4048
- "checksum": "sha256:8931776a842c82cc8654cea8301fe1db2480ee68cf4c554f229fec1661c1adf0",
4070
+ "checksum": "sha256:caa57c2d1735dc38b840016b035c4b6d695a2cbb72bc0f03734e0b6c183b87cc",
4049
4071
  "install": {
4050
4072
  "default": true,
4051
4073
  "removable": false
@@ -4883,7 +4905,7 @@
4883
4905
  },
4884
4906
  {
4885
4907
  "category": "skill",
4886
- "checksum": "sha256:32885f261e6dbb38b0e106b17c7a40b5aac8ff0c7f71234ec15be94811622560",
4908
+ "checksum": "sha256:226c13dcf84f266ad5aaf906b5f012650e48a72f1a9ea991b11da479bfc63af5",
4887
4909
  "install": {
4888
4910
  "default": true,
4889
4911
  "removable": false
@@ -6555,7 +6577,7 @@
6555
6577
  },
6556
6578
  {
6557
6579
  "category": "skill",
6558
- "checksum": "sha256:9730402f814fd8cd11b5f89eed9bb282c34e2605d9340f49cc3dc1aa7d769702",
6580
+ "checksum": "sha256:7d6b54b9119fdf0d89672c856d60adccbaba8c39ea1c620dfdf9de36091718a2",
6559
6581
  "install": {
6560
6582
  "default": true,
6561
6583
  "removable": false
@@ -6577,7 +6599,7 @@
6577
6599
  },
6578
6600
  {
6579
6601
  "category": "skill",
6580
- "checksum": "sha256:ea17b7da5e8d5f2389c67cfeca7b4defd6fcc1f1d6690e92385867eaef061a7c",
6602
+ "checksum": "sha256:58078bd7f45b678069cdf9ce223bf0addad711eaa2a8c8f404612675af01ddc9",
6581
6603
  "install": {
6582
6604
  "default": true,
6583
6605
  "removable": false
@@ -9430,7 +9452,7 @@
9430
9452
  ]
9431
9453
  }
9432
9454
  ],
9433
- "checksum": "sha256:eb7494e53428947d792e0377cb59e043457819ad3fff0b7ff6bc1011134be766",
9455
+ "checksum": "sha256:653636e679543062954910f794e458eb8424d7f2618b889a29969d21c74fcf0e",
9434
9456
  "documented_unassigned": [
9435
9457
  {
9436
9458
  "category": "template",
@@ -9543,10 +9565,10 @@
9543
9565
  "reason": "scaffold for new SKILL.md authoring"
9544
9566
  }
9545
9567
  ],
9546
- "generated_at": "2026-05-28T13:27:08Z",
9568
+ "generated_at": "2026-05-29T12:00:12Z",
9547
9569
  "packs": [
9548
9570
  {
9549
- "artefact_count": 84,
9571
+ "artefact_count": 85,
9550
9572
  "description": "Framework-neutral engineering hygiene — git, tests, reviews.",
9551
9573
  "human_review_required": 0,
9552
9574
  "id": "engineering-base",
@@ -9555,7 +9577,7 @@
9555
9577
  "trust_summary": {
9556
9578
  "advisory": 0,
9557
9579
  "core": 84,
9558
- "experimental": 0,
9580
+ "experimental": 1,
9559
9581
  "professional": 0,
9560
9582
  "restricted": 0
9561
9583
  },
@@ -9970,7 +9992,7 @@
9970
9992
  "stats": {
9971
9993
  "by_category": {
9972
9994
  "command": 135,
9973
- "rule": 77,
9995
+ "rule": 78,
9974
9996
  "skill": 219,
9975
9997
  "template": 1
9976
9998
  },
@@ -9978,17 +10000,17 @@
9978
10000
  "active": 424,
9979
10001
  "archived": 0,
9980
10002
  "deprecated": 0,
9981
- "experimental": 8
10003
+ "experimental": 9
9982
10004
  },
9983
10005
  "by_trust_level": {
9984
10006
  "advisory": 2,
9985
10007
  "core": 345,
9986
- "experimental": 6,
10008
+ "experimental": 7,
9987
10009
  "professional": 79,
9988
10010
  "restricted": 0
9989
10011
  },
9990
10012
  "documented_unassigned_count": 22,
9991
- "total_artefacts": 432,
10013
+ "total_artefacts": 433,
9992
10014
  "unassigned_count": 0
9993
10015
  },
9994
10016
  "unassigned": [],
@@ -1 +1 @@
1
- 02075520b8ccb3025ec9d54d7ec0585f26f09c3c947d3c696f3ef4328aa04e74 discovery-manifest.json
1
+ 6e36d1bdab54a687328a853b8cbeee77060ad359c006180c0109daa959eba603 discovery-manifest.json
@@ -1,8 +1,8 @@
1
1
  # Discovery Manifest — Summary
2
2
 
3
- - Generated: `2026-05-28T13:27:08Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Scanner: `d75eba636abb`
5
- - Artefacts: **432**
5
+ - Artefacts: **433**
6
6
  - Unassigned: **0**
7
7
 
8
8
  ## `engineering` — Engineering
@@ -11,7 +11,7 @@
11
11
 
12
12
  | Pack | Artefacts |
13
13
  |---|---|
14
- | `engineering-base` — Engineering Base | 84 |
14
+ | `engineering-base` — Engineering Base | 85 |
15
15
  | `php` — PHP | 6 |
16
16
  | `laravel` — Laravel | 25 |
17
17
  | `symfony` — Symfony | 3 |
@@ -1,6 +1,6 @@
1
1
  # Discovery — Orphan Report
2
2
 
3
- - Generated: `2026-05-28T13:27:08Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Orphan artefacts: **0**
5
5
 
6
6
  > An orphan is an artefact whose declared pack has no other members.
@@ -1,9 +1,9 @@
1
1
  {
2
- "checksum": "sha256:eb7494e53428947d792e0377cb59e043457819ad3fff0b7ff6bc1011134be766",
3
- "generated_at": "2026-05-28T13:27:08Z",
2
+ "checksum": "sha256:653636e679543062954910f794e458eb8424d7f2618b889a29969d21c74fcf0e",
3
+ "generated_at": "2026-05-29T12:00:12Z",
4
4
  "packs": [
5
5
  {
6
- "artefact_count": 84,
6
+ "artefact_count": 85,
7
7
  "artefacts": [
8
8
  "packages/core/.agent-src.uncondensed/rules/commit-conventions.md",
9
9
  "packages/core/.agent-src.uncondensed/rules/commit-policy.md",
@@ -12,6 +12,7 @@
12
12
  "packages/core/.agent-src.uncondensed/rules/engineering-safety-floor.md",
13
13
  "packages/core/.agent-src.uncondensed/rules/git-history-discipline.md",
14
14
  "packages/core/.agent-src.uncondensed/rules/improve-before-implement.md",
15
+ "packages/core/.agent-src.uncondensed/rules/linked-projects-onboarding-gate.md",
15
16
  "packages/core/.agent-src.uncondensed/rules/minimal-safe-diff.md",
16
17
  "packages/core/.agent-src.uncondensed/rules/non-destructive-by-default.md",
17
18
  "packages/core/.agent-src.uncondensed/rules/scope-control.md",
@@ -94,12 +95,12 @@
94
95
  "active": 84,
95
96
  "archived": 0,
96
97
  "deprecated": 0,
97
- "experimental": 0
98
+ "experimental": 1
98
99
  },
99
100
  "by_trust_level": {
100
101
  "advisory": 0,
101
102
  "core": 84,
102
- "experimental": 0,
103
+ "experimental": 1,
103
104
  "professional": 0,
104
105
  "restricted": 0
105
106
  },
@@ -1,6 +1,6 @@
1
1
  # Discovery — Trust Report
2
2
 
3
- - Generated: `2026-05-28T13:27:08Z`
3
+ - Generated: `2026-05-29T12:00:12Z`
4
4
  - Workspaces tracked: **8**
5
5
  - Human-review-required artefacts: **2**
6
6
 
@@ -8,8 +8,8 @@
8
8
 
9
9
  | Workspace | core | professional | experimental | advisory | restricted |
10
10
  |---|---|---|---|---|---|
11
- | `agent-config-maintainer` | 252 | 0 | 0 | 0 | 0 |
12
- | `engineering` | 86 | 41 | 0 | 0 | 0 |
11
+ | `agent-config-maintainer` | 252 | 0 | 1 | 0 | 0 |
12
+ | `engineering` | 86 | 41 | 1 | 0 | 0 |
13
13
  | `finance` | 2 | 3 | 0 | 1 | 0 |
14
14
  | `founder` | 7 | 0 | 0 | 1 | 0 |
15
15
  | `gtm` | 0 | 12 | 0 | 0 | 0 |
@@ -1,10 +1,10 @@
1
1
  {
2
- "checksum": "sha256:eb7494e53428947d792e0377cb59e043457819ad3fff0b7ff6bc1011134be766",
3
- "generated_at": "2026-05-28T13:27:08Z",
2
+ "checksum": "sha256:653636e679543062954910f794e458eb8424d7f2618b889a29969d21c74fcf0e",
3
+ "generated_at": "2026-05-29T12:00:12Z",
4
4
  "scanner_version": "d75eba636abb",
5
5
  "workspaces": [
6
6
  {
7
- "artefact_count": 125,
7
+ "artefact_count": 126,
8
8
  "default_packs": [
9
9
  "engineering-base"
10
10
  ],
@@ -23,7 +23,7 @@
23
23
  ],
24
24
  "packs": [
25
25
  {
26
- "artefact_count": 84,
26
+ "artefact_count": 85,
27
27
  "artefacts": [
28
28
  "packages/core/.agent-src.uncondensed/rules/commit-conventions.md",
29
29
  "packages/core/.agent-src.uncondensed/rules/commit-policy.md",
@@ -32,6 +32,7 @@
32
32
  "packages/core/.agent-src.uncondensed/rules/engineering-safety-floor.md",
33
33
  "packages/core/.agent-src.uncondensed/rules/git-history-discipline.md",
34
34
  "packages/core/.agent-src.uncondensed/rules/improve-before-implement.md",
35
+ "packages/core/.agent-src.uncondensed/rules/linked-projects-onboarding-gate.md",
35
36
  "packages/core/.agent-src.uncondensed/rules/minimal-safe-diff.md",
36
37
  "packages/core/.agent-src.uncondensed/rules/non-destructive-by-default.md",
37
38
  "packages/core/.agent-src.uncondensed/rules/scope-control.md",
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "discovery": {
3
- "artefact_count": 432,
3
+ "artefact_count": 433,
4
4
  "scanner_version": "d75eba636abb"
5
5
  },
6
- "generated_at": "2026-05-28",
6
+ "generated_at": "2026-05-29",
7
7
  "package": {
8
8
  "description": "Universal AI Agent OS \u2014 audited skills, governance rules, commands, and templates for AI coding tools (Claude Code, Cursor, Windsurf, Copilot).",
9
9
  "homepage": "https://github.com/event4u-app/agent-config#readme",
10
10
  "name": "@event4u/agent-config",
11
11
  "repository": "https://github.com/event4u-app/agent-config",
12
- "version": "4.9.0"
12
+ "version": "5.1.0"
13
13
  },
14
14
  "registries": [
15
15
  {