@event4u/agent-config 9.32.0 → 9.33.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 (76) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +96 -1
  3. package/dist/agent-src/commands/review/routing.md +3 -4
  4. package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +65 -0
  5. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +3 -0
  6. package/dist/agent-src/rules/delegation-policy.md +6 -0
  7. package/dist/agent-src/scripts/roadmap_gates.ts +107 -3
  8. package/dist/agent-src/skills/docker/SKILL.md +11 -0
  9. package/dist/agent-src/skills/laravel/SKILL.md +11 -0
  10. package/dist/agent-src/skills/review-routing/SKILL.md +23 -6
  11. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  12. package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  13. package/dist/cli/registry.js +4 -4
  14. package/dist/cli/registry.js.map +1 -1
  15. package/dist/cli-delegate/chunk-HTIU3W56.js +66 -0
  16. package/dist/cli-delegate/{chunk-ITIQSGOQ.js → chunk-MA4GFWDY.js} +7 -4
  17. package/dist/cli-delegate/{chunk-542DZR4P.js → chunk-PMQ6Z3T3.js} +1651 -144
  18. package/dist/cli-delegate/{chunk-PFBV6XRT.js → chunk-Q26HT4QT.js} +1 -63
  19. package/dist/cli-delegate/{chunk-LVRYBKTI.js → chunk-YPAWXXXR.js} +158 -0
  20. package/dist/cli-delegate/cmd_conformance.js +256 -226
  21. package/dist/cli-delegate/cmd_doctor.js +3 -2
  22. package/dist/cli-delegate/cmd_export.js +1 -1
  23. package/dist/cli-delegate/cmd_handoff.js +19 -26
  24. package/dist/cli-delegate/cmd_prune.js +1 -1
  25. package/dist/cli-delegate/cmd_session_recycle.js +13 -3
  26. package/dist/cli-delegate/cmd_settings_get.js +4 -2
  27. package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
  28. package/dist/cli-delegate/cmd_settings_set.js +5 -3
  29. package/dist/cli-delegate/cmd_sync.js +1 -1
  30. package/dist/cli-delegate/cmd_uninstall.js +1 -1
  31. package/dist/cli-delegate/cmd_validate.js +1 -1
  32. package/dist/discovery/deprecation-report.md +1 -1
  33. package/dist/discovery/discovery-manifest.json +8 -8
  34. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  35. package/dist/discovery/discovery-manifest.summary.md +1 -1
  36. package/dist/discovery/orphan-report.md +1 -1
  37. package/dist/discovery/packs.json +2 -2
  38. package/dist/discovery/trust-report.md +1 -1
  39. package/dist/discovery/workspaces.json +2 -2
  40. package/dist/hooks/dispatch.js +18 -0
  41. package/dist/install/install.mjs +7 -4
  42. package/dist/mcp/registry-manifest.json +2 -2
  43. package/dist/mcp/server.json +2 -2
  44. package/dist/mcp/server.mjs +3637 -1158
  45. package/package.json +1 -1
  46. package/src/agent-src/scripts/roadmap_gates.ts +107 -3
  47. package/src/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  48. package/src/config/cost-parity-budget.json +167 -0
  49. package/src/config/gate-coverage.yml +44 -5
  50. package/src/config/quorum-attendance-budget.json +39 -0
  51. package/src/scripts/_cli/cmd_doctor.ts +69 -1
  52. package/src/scripts/_cli/cmd_session_recycle.ts +19 -3
  53. package/src/scripts/_dispatch.bash +5 -3
  54. package/src/scripts/_lib/orchestration_record.ts +45 -0
  55. package/src/scripts/ai_council/clients.ts +31 -0
  56. package/src/scripts/ai_council/events_log.ts +128 -6
  57. package/src/scripts/ai_council/orchestrator.ts +12 -3
  58. package/src/scripts/ai_council/pricing.ts +48 -1
  59. package/src/scripts/ai_council/quorum.ts +20 -0
  60. package/src/scripts/ai_council/session.ts +11 -0
  61. package/src/scripts/ask_transport.ts +20 -1
  62. package/src/scripts/cache_realization_report.ts +38 -0
  63. package/src/scripts/check_release_highlights.ts +7 -1
  64. package/src/scripts/conformance_scan.ts +105 -0
  65. package/src/scripts/cost/track.mjs +39 -0
  66. package/src/scripts/cost_summary.ts +104 -1
  67. package/src/scripts/council_cli.ts +131 -13
  68. package/src/scripts/dispatch_economy_report.ts +5 -2
  69. package/src/scripts/install.ts +20 -6
  70. package/src/scripts/lint_budget_ownership.ts +81 -0
  71. package/src/scripts/lint_skill_frontmatter_safety.ts +55 -1
  72. package/src/scripts/lint_workflow_paths.ts +384 -0
  73. package/src/scripts/preamble_byte_census.ts +9 -1
  74. package/src/scripts/report_carrier_divergence.ts +10 -0
  75. package/src/scripts/report_conformance_funnel.ts +40 -0
  76. package/src/scripts/schemas/subagent.schema.json +3 -2
@@ -66,10 +66,11 @@ import {
66
66
  _wizard_state_path,
67
67
  main,
68
68
  shutilWhich
69
- } from "./chunk-542DZR4P.js";
69
+ } from "./chunk-PMQ6Z3T3.js";
70
70
  import "./chunk-FTAISGDQ.js";
71
71
  import "./chunk-EJITJBJX.js";
72
- import "./chunk-LVRYBKTI.js";
72
+ import "./chunk-Q26HT4QT.js";
73
+ import "./chunk-YPAWXXXR.js";
73
74
  import "./chunk-PZWRPRWP.js";
74
75
  import "./chunk-736JCWLM.js";
75
76
  import "./chunk-63WSP6YZ.js";
@@ -9,7 +9,7 @@ import {
9
9
  KIRO_MARKER,
10
10
  ROOCODE_MARKER,
11
11
  ZED_MARKER
12
- } from "./chunk-ITIQSGOQ.js";
12
+ } from "./chunk-MA4GFWDY.js";
13
13
  import "./chunk-UVKNIJH2.js";
14
14
  import "./chunk-DS6BLDMG.js";
15
15
  import "./chunk-BKO2AZ7Z.js";
@@ -23,7 +23,7 @@ import {
23
23
  import {
24
24
  _RAW_KEY_PREFIXES,
25
25
  hardenedSpawnEnv
26
- } from "./chunk-LVRYBKTI.js";
26
+ } from "./chunk-YPAWXXXR.js";
27
27
  import "./chunk-PZWRPRWP.js";
28
28
  import "./chunk-JEJABGKB.js";
29
29
  import "./chunk-NDJLNC6Q.js";
@@ -34,7 +34,7 @@ import "./chunk-J55WI3RR.js";
34
34
  import { spawnSync as spawnSync2 } from "node:child_process";
35
35
  import * as fs5 from "node:fs";
36
36
  import process4 from "node:process";
37
- import * as path6 from "node:path";
37
+ import * as path5 from "node:path";
38
38
  import { fileURLToPath as fileURLToPath2, pathToFileURL } from "node:url";
39
39
 
40
40
  // src/scripts/_cli/handoff_generate.ts
@@ -706,24 +706,17 @@ function write_handoff(text, options = {}) {
706
706
  // src/scripts/_cli/handoff_sessions.ts
707
707
  import * as fs4 from "node:fs";
708
708
  import * as os from "node:os";
709
- import * as path5 from "node:path";
709
+ import * as path4 from "node:path";
710
710
 
711
711
  // src/scripts/_lib/session_eol.ts
712
712
  import * as crypto from "node:crypto";
713
713
  import * as fs3 from "node:fs";
714
- import * as path4 from "node:path";
715
-
716
- // src/scripts/_lib/cc_transcript.ts
717
714
  import * as path3 from "node:path";
718
- import { homedir } from "node:os";
719
- var DEFAULT_PROJECTS_ROOT = path3.join(homedir(), ".claude", "projects");
720
-
721
- // src/scripts/_lib/session_eol.ts
722
715
  function eolStateDir(workspaceRoot) {
723
- return path4.join(workspaceRoot, "agents", "runtime", "state", "session-eol");
716
+ return path3.join(workspaceRoot, "agents", "runtime", "state", "session-eol");
724
717
  }
725
718
  function eolStateFile(workspaceRoot, sessionKey) {
726
- return path4.join(eolStateDir(workspaceRoot), `${sessionKey}.json`);
719
+ return path3.join(eolStateDir(workspaceRoot), `${sessionKey}.json`);
727
720
  }
728
721
  function eolSessionKey(raw) {
729
722
  return crypto.createHash("sha256").update(raw || "unknown-session").digest("hex");
@@ -779,10 +772,10 @@ function _parse_json2(line) {
779
772
  }
780
773
  return null;
781
774
  }
782
- var CHAT_HISTORY_REL = path5.join("agents", "runtime", ".agent-chat-history");
775
+ var CHAT_HISTORY_REL = path4.join("agents", "runtime", ".agent-chat-history");
783
776
  function _chat_history_path(opts) {
784
777
  if (opts.chatHistoryPath) return opts.chatHistoryPath;
785
- return process.env.AGENT_CHAT_HISTORY_FILE || path5.join(opts.cwd ?? process.cwd(), CHAT_HISTORY_REL);
778
+ return process.env.AGENT_CHAT_HISTORY_FILE || path4.join(opts.cwd ?? process.cwd(), CHAT_HISTORY_REL);
786
779
  }
787
780
  function _chat_history_summaries(histPath) {
788
781
  const bySession = /* @__PURE__ */ new Map();
@@ -867,9 +860,9 @@ function _scan_claude_transcript(file) {
867
860
  return scan;
868
861
  }
869
862
  function _claude_transcript_sessions(opts, cap) {
870
- const root = opts.claudeProjectsRoot ?? path5.join(os.homedir(), ".claude", "projects");
863
+ const root = opts.claudeProjectsRoot ?? path4.join(os.homedir(), ".claude", "projects");
871
864
  const cwd = opts.cwd ?? process.cwd();
872
- const projectDir = path5.join(root, encode_project_path(cwd));
865
+ const projectDir = path4.join(root, encode_project_path(cwd));
873
866
  let names;
874
867
  try {
875
868
  names = fs4.readdirSync(projectDir).filter((n) => n.endsWith(".jsonl"));
@@ -877,9 +870,9 @@ function _claude_transcript_sessions(opts, cap) {
877
870
  return [];
878
871
  }
879
872
  const files = names.map((n) => {
880
- const full = path5.join(projectDir, n);
873
+ const full = path4.join(projectDir, n);
881
874
  try {
882
- return { full, id: path5.basename(n, ".jsonl"), mtime: fs4.statSync(full).mtimeMs };
875
+ return { full, id: path4.basename(n, ".jsonl"), mtime: fs4.statSync(full).mtimeMs };
883
876
  } catch {
884
877
  return null;
885
878
  }
@@ -940,12 +933,12 @@ function _codex_files(root) {
940
933
  continue;
941
934
  }
942
935
  for (const e of entries) {
943
- const full = path5.join(dir, e.name);
936
+ const full = path4.join(dir, e.name);
944
937
  if (e.isDirectory()) stack.push(full);
945
938
  else if (e.isFile() && e.name.endsWith(".jsonl")) out.push(full);
946
939
  }
947
940
  }
948
- return out.sort((a, b) => path5.basename(a) < path5.basename(b) ? 1 : -1);
941
+ return out.sort((a, b) => path4.basename(a) < path4.basename(b) ? 1 : -1);
949
942
  }
950
943
  function _codex_prompt_text(rec) {
951
944
  if (rec.type !== "event_msg") return null;
@@ -973,13 +966,13 @@ function _scan_codex_session(file) {
973
966
  return scan;
974
967
  }
975
968
  function _matches_repo(sessionCwd, repoCwd) {
976
- const norm = (p) => path5.resolve(p).replace(/\/+$/, "");
969
+ const norm = (p) => path4.resolve(p).replace(/\/+$/, "");
977
970
  const a = norm(sessionCwd);
978
971
  const b = norm(repoCwd);
979
- return a === b || a.startsWith(b + path5.sep);
972
+ return a === b || a.startsWith(b + path4.sep);
980
973
  }
981
974
  function _codex_sessions(opts, cap) {
982
- const root = opts.codexSessionsRoot ?? path5.join(os.homedir(), ".codex", "sessions");
975
+ const root = opts.codexSessionsRoot ?? path4.join(os.homedir(), ".codex", "sessions");
983
976
  const cwd = opts.cwd ?? process.cwd();
984
977
  const matching = [];
985
978
  for (const file of _codex_files(root)) {
@@ -1239,7 +1232,7 @@ function main2(argv = null, options = {}) {
1239
1232
  throw exc;
1240
1233
  }
1241
1234
  const envRoot = process4.env.AGENT_CONFIG_ROOT_OVERRIDE === "1" ? process4.env.AGENT_CONFIG_PROJECT_ROOT || null : null;
1242
- const root = path6.resolve(opts.root ?? envRoot ?? process4.cwd());
1235
+ const root = path5.resolve(opts.root ?? envRoot ?? process4.cwd());
1243
1236
  const sessions = list_handoff_sessions({ cwd: root });
1244
1237
  if (opts.list) {
1245
1238
  if (sessions.length === 0) {
@@ -1335,13 +1328,13 @@ function _isCliEntry() {
1335
1328
  if (process4.argv[1] === void 0) {
1336
1329
  return false;
1337
1330
  }
1338
- const argvUrl = pathToFileURL(path6.resolve(process4.argv[1])).href;
1331
+ const argvUrl = pathToFileURL(path5.resolve(process4.argv[1])).href;
1339
1332
  if (import.meta.url === argvUrl) {
1340
1333
  return true;
1341
1334
  }
1342
1335
  try {
1343
1336
  const here = fs5.realpathSync(fileURLToPath2(import.meta.url));
1344
- const argv = fs5.realpathSync(path6.resolve(process4.argv[1]));
1337
+ const argv = fs5.realpathSync(path5.resolve(process4.argv[1]));
1345
1338
  return here === argv;
1346
1339
  } catch {
1347
1340
  return false;
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
3
  PROJECT_BRIDGE_MARKERS
4
- } from "./chunk-ITIQSGOQ.js";
4
+ } from "./chunk-MA4GFWDY.js";
5
5
  import "./chunk-UVKNIJH2.js";
6
6
  import "./chunk-DS6BLDMG.js";
7
7
  import "./chunk-BKO2AZ7Z.js";
@@ -46,6 +46,8 @@ function parseArgv(argv) {
46
46
  const a = argv[i];
47
47
  if (a === "--template") {
48
48
  parsed.template = true;
49
+ } else if (a === "--verify") {
50
+ parsed.verify = true;
49
51
  } else if (a === "--file") {
50
52
  const value = argv[i + 1];
51
53
  if (!value) return { ok: false, message: "--file requires a path" };
@@ -110,6 +112,10 @@ function runSessionRecycle(input, opts) {
110
112
  ]
111
113
  };
112
114
  }
115
+ if (opts.verify === true) {
116
+ out.push(`recycle envelope VALID \u2014 ${bytes} bytes, not written (--verify).`);
117
+ return { code: 0, out, err };
118
+ }
113
119
  const target = path.join(projectRoot, RECYCLE_ENVELOPE_REL);
114
120
  try {
115
121
  atomic_write_json(target, envelope);
@@ -130,9 +136,10 @@ function main(argv = process.argv.slice(2)) {
130
136
  const parsed = parseArgv(argv);
131
137
  if (!parsed.ok) {
132
138
  const usage = [
133
- "usage: agent-config session:recycle [--file <envelope.json>] [--template]",
139
+ "usage: agent-config session:recycle [--file <envelope.json>] [--template] [--verify]",
134
140
  " --file <path> read the envelope JSON from a file (default: stdin)",
135
- " --template print a skeleton envelope and exit"
141
+ " --template print a skeleton envelope and exit",
142
+ " --verify validate only \u2014 same rejections, no write"
136
143
  ].join("\n");
137
144
  if (parsed.message === "usage") {
138
145
  process.stdout.write(`${usage}
@@ -164,7 +171,10 @@ ${usage}
164
171
  `);
165
172
  return 2;
166
173
  }
167
- const result = runSessionRecycle(input, { cwd: process.cwd() });
174
+ const result = runSessionRecycle(input, {
175
+ cwd: process.cwd(),
176
+ ...parsed.verify === true ? { verify: true } : {}
177
+ });
168
178
  for (const line of result.out) process.stdout.write(`${line}
169
179
  `);
170
180
  for (const line of result.err) process.stderr.write(`${line}
@@ -3,9 +3,11 @@ import {
3
3
  buildSettingsClassIndex,
4
4
  classOfPath,
5
5
  getSettingsLeaf,
6
- load,
7
6
  parseSettingsClassRows
8
- } from "./chunk-PFBV6XRT.js";
7
+ } from "./chunk-HTIU3W56.js";
8
+ import {
9
+ load
10
+ } from "./chunk-Q26HT4QT.js";
9
11
  import {
10
12
  MERGEABLE_KEYS,
11
13
  SETTINGS_CARVE_OUT,
@@ -3,7 +3,7 @@ import {
3
3
  GLOBAL_AGENT_SETTINGS_PATH,
4
4
  GLOBAL_USER_SETTINGS_PATH,
5
5
  SETTINGS_FILE
6
- } from "./chunk-ITIQSGOQ.js";
6
+ } from "./chunk-MA4GFWDY.js";
7
7
  import "./chunk-UVKNIJH2.js";
8
8
  import "./chunk-DS6BLDMG.js";
9
9
  import "./chunk-BKO2AZ7Z.js";
@@ -1,11 +1,13 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
3
  buildSettingsClassIndex,
4
- dump,
5
4
  getSettingsLeaf,
6
- load,
7
5
  parseSettingsClassRows
8
- } from "./chunk-PFBV6XRT.js";
6
+ } from "./chunk-HTIU3W56.js";
7
+ import {
8
+ dump,
9
+ load
10
+ } from "./chunk-Q26HT4QT.js";
9
11
  import {
10
12
  external_exports,
11
13
  settingsSchema
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
3
  main
4
- } from "./chunk-ITIQSGOQ.js";
4
+ } from "./chunk-MA4GFWDY.js";
5
5
  import "./chunk-UVKNIJH2.js";
6
6
  import "./chunk-DS6BLDMG.js";
7
7
  import "./chunk-BKO2AZ7Z.js";
@@ -3,7 +3,7 @@ import {
3
3
  PROJECT_BRIDGE_MARKERS,
4
4
  USER_SCOPE_PATHS,
5
5
  subtract_pointers
6
- } from "./chunk-ITIQSGOQ.js";
6
+ } from "./chunk-MA4GFWDY.js";
7
7
  import "./chunk-UVKNIJH2.js";
8
8
  import "./chunk-DS6BLDMG.js";
9
9
  import "./chunk-BKO2AZ7Z.js";
@@ -3,7 +3,7 @@ import { createRequire as __acCreateRequire } from 'node:module'; const require
3
3
  import {
4
4
  PROJECT_BRIDGE_MARKERS,
5
5
  USER_SCOPE_PATHS
6
- } from "./chunk-ITIQSGOQ.js";
6
+ } from "./chunk-MA4GFWDY.js";
7
7
  import "./chunk-UVKNIJH2.js";
8
8
  import "./chunk-DS6BLDMG.js";
9
9
  import "./chunk-BKO2AZ7Z.js";
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-08-10T20:19:17Z`
3
+ - Generated: `2026-08-11T05:16:25Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._
@@ -1643,7 +1643,7 @@
1643
1643
  },
1644
1644
  {
1645
1645
  "category": "command",
1646
- "checksum": "sha256:5ee9f9fa3f5f2ec5b2894d262d2011bfbec806b4decaeddb4fa3fecb6603b10e",
1646
+ "checksum": "sha256:eb47b37ef426c962fffcaf1165d69dbe23c5ee9d95e0207b945769766d9a6d0a",
1647
1647
  "install": {
1648
1648
  "default": true,
1649
1649
  "removable": false
@@ -5992,7 +5992,7 @@
5992
5992
  },
5993
5993
  {
5994
5994
  "category": "rule",
5995
- "checksum": "sha256:451a0a10bb077b527aa2febc9f6b9838e350c186d52942b08057b9c9cc036c59",
5995
+ "checksum": "sha256:3df203c839e8abe438414ee36fd99004b519f23a465e97f0a531d1aa3178b564",
5996
5996
  "install": {
5997
5997
  "default": true,
5998
5998
  "removable": false
@@ -9777,7 +9777,7 @@
9777
9777
  },
9778
9778
  {
9779
9779
  "category": "skill",
9780
- "checksum": "sha256:b27163ddb3c75471cc1b9779892c073cbe28d5c96d729c7c82f9ee81c3cb4d05",
9780
+ "checksum": "sha256:79282414c98571fd2370f0852d865ded3648a01952651c9e83676cd5c8c0b501",
9781
9781
  "install": {
9782
9782
  "default": true,
9783
9783
  "removable": false
@@ -11141,7 +11141,7 @@
11141
11141
  },
11142
11142
  {
11143
11143
  "category": "skill",
11144
- "checksum": "sha256:8110f2c18f2cdc7093dbe48e9d8ed3c6713fdce5720442dc4a90b6ea6d24282a",
11144
+ "checksum": "sha256:1609f4eb7897ebce35da6146fe339bde8e4b2018ad83fd79c2cf849aaf93fb44",
11145
11145
  "install": {
11146
11146
  "default": false,
11147
11147
  "removable": true
@@ -13061,7 +13061,7 @@
13061
13061
  },
13062
13062
  {
13063
13063
  "category": "skill",
13064
- "checksum": "sha256:eb560f32c715b1657c504cdf750ceb0cfb585c3428d544a85cf8a825ac45b25e",
13064
+ "checksum": "sha256:5971a67fecfb6ac2b7b003a035a172af0ef54e2fda487f0118850deb3d8fb937",
13065
13065
  "install": {
13066
13066
  "default": true,
13067
13067
  "removable": false
@@ -14469,7 +14469,7 @@
14469
14469
  },
14470
14470
  {
14471
14471
  "category": "subagent",
14472
- "checksum": "sha256:40f7200ee973c51109102b2cd6949e20c6e031f29aeb6104644f9d5e270e66fd",
14472
+ "checksum": "sha256:d57dfc1457cf467402e4ee1187cd162cbb62ddecb35b101d6e1aae6e2f103baa",
14473
14473
  "install": {
14474
14474
  "default": false,
14475
14475
  "removable": true
@@ -14486,7 +14486,7 @@
14486
14486
  "workspaces": []
14487
14487
  }
14488
14488
  ],
14489
- "checksum": "sha256:4e2e2973fd45560962626d01db0162ba85d636050dbb84b4fefb0c7c07ed3bce",
14489
+ "checksum": "sha256:1a5894344548cfa9a3a79726d9063c47af89da73892e847856ca4748dad6550f",
14490
14490
  "deprecations": [
14491
14491
  {
14492
14492
  "key": "tier",
@@ -14629,7 +14629,7 @@
14629
14629
  "reason": "scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket"
14630
14630
  }
14631
14631
  ],
14632
- "generated_at": "2026-08-10T20:19:17Z",
14632
+ "generated_at": "2026-08-11T05:16:25Z",
14633
14633
  "packs": [
14634
14634
  {
14635
14635
  "artefact_count": 118,
@@ -1 +1 @@
1
- 1690f54c3b7262c13b6a12398d8750b90d202f7cbf332b2484041f6cdcc92388 discovery-manifest.json
1
+ efd249af793682a1fa9969433c123c923e08e1eee8394865bb93a7c875c7cbec discovery-manifest.json
@@ -1,6 +1,6 @@
1
1
  # Discovery Manifest — Summary
2
2
 
3
- - Generated: `2026-08-10T20:19:17Z`
3
+ - Generated: `2026-08-11T05:16:25Z`
4
4
  - Scanner: `c24312e116f8`
5
5
  - Artefacts: **603**
6
6
  - Unassigned: **0**
@@ -1,6 +1,6 @@
1
1
  # Discovery — Orphan Report
2
2
 
3
- - Generated: `2026-08-10T20:19:17Z`
3
+ - Generated: `2026-08-11T05:16:25Z`
4
4
  - Orphan artefacts: **0**
5
5
 
6
6
  > An orphan is an artefact whose declared pack has no other members.
@@ -1,6 +1,6 @@
1
1
  {
2
- "checksum": "sha256:4e2e2973fd45560962626d01db0162ba85d636050dbb84b4fefb0c7c07ed3bce",
3
- "generated_at": "2026-08-10T20:19:17Z",
2
+ "checksum": "sha256:1a5894344548cfa9a3a79726d9063c47af89da73892e847856ca4748dad6550f",
3
+ "generated_at": "2026-08-11T05:16:25Z",
4
4
  "packs": [
5
5
  {
6
6
  "always_on": false,
@@ -1,6 +1,6 @@
1
1
  # Discovery — Trust Report
2
2
 
3
- - Generated: `2026-08-10T20:19:17Z`
3
+ - Generated: `2026-08-11T05:16:25Z`
4
4
  - Workspaces tracked: **10**
5
5
  - Human-review-required artefacts: **3**
6
6
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "checksum": "sha256:4e2e2973fd45560962626d01db0162ba85d636050dbb84b4fefb0c7c07ed3bce",
3
- "generated_at": "2026-08-10T20:19:17Z",
2
+ "checksum": "sha256:1a5894344548cfa9a3a79726d9063c47af89da73892e847856ca4748dad6550f",
3
+ "generated_at": "2026-08-11T05:16:25Z",
4
4
  "scanner_version": "c24312e116f8",
5
5
  "workspaces": [
6
6
  {
@@ -23815,6 +23815,11 @@ function envelopeOutcome(d) {
23815
23815
  function isInt(n) {
23816
23816
  return typeof n === "number" && Number.isFinite(n) && Number.isInteger(n);
23817
23817
  }
23818
+ function modelDivergent(requested, served) {
23819
+ if (typeof requested !== "string" || typeof served !== "string") return null;
23820
+ if (!requested || !served) return null;
23821
+ return requested !== served;
23822
+ }
23818
23823
  function buildOrchestrationLine(input) {
23819
23824
  const errors = [];
23820
23825
  const zeroSpawnRoute = (input.route_taken === "primitive" || input.route_taken === "ask") && input.spawn_count === 0;
@@ -23904,6 +23909,12 @@ function buildOrchestrationLine(input) {
23904
23909
  if (input.trigger_arm_earlier != null && !TRIGGER_ARMS.includes(input.trigger_arm_earlier)) {
23905
23910
  errors.push(`trigger_arm_earlier must be one of ${TRIGGER_ARMS.join(" | ")} (or omitted / null when neither arm fired)`);
23906
23911
  }
23912
+ for (const [key, v] of [
23913
+ ["model_requested", input.model_requested],
23914
+ ["model_served", input.model_served]
23915
+ ]) {
23916
+ if (v != null && typeof v !== "string") errors.push(`${key} must be a string or omitted`);
23917
+ }
23907
23918
  if (!input.ts) errors.push("ts (ISO-8601 UTC) is required");
23908
23919
  if (!input.id) errors.push("id (ULID or content hash) is required");
23909
23920
  if (errors.length) return { line: null, errors };
@@ -23922,6 +23933,13 @@ function buildOrchestrationLine(input) {
23922
23933
  tier_source: input.tier_source ?? null,
23923
23934
  dispatch_tokens: input.dispatch_tokens ?? null,
23924
23935
  session_tier: input.session_tier ?? null,
23936
+ // Served-model attribution. `model_divergent` is DERIVED, never
23937
+ // supplied: `null` when either id is absent — a transport that reports
23938
+ // no served id cannot disagree with anything, and calling that `false`
23939
+ // would read as "checked, and they matched".
23940
+ model_requested: input.model_requested ?? null,
23941
+ model_served: input.model_served ?? null,
23942
+ model_divergent: modelDivergent(input.model_requested, input.model_served),
23925
23943
  first_pass_success: input.first_pass_success ?? null,
23926
23944
  escalated: input.escalated ?? null,
23927
23945
  agent_combo: input.agent_combo ?? [],
@@ -17965,7 +17965,7 @@ function ensure_vscode_bridge(project_root, package_type, force) {
17965
17965
  };
17966
17966
  const plugin_path = plugin_paths[package_type] ?? "./plugin/agent-config";
17967
17967
  const bridge = { "chat.pluginLocations": { [plugin_path]: true } };
17968
- merge_json_file(
17968
+ return merge_json_file(
17969
17969
  path16.join(project_root, ".vscode", "settings.json"),
17970
17970
  bridge,
17971
17971
  force,
@@ -18023,7 +18023,8 @@ function _remove_legacy_augment_trampolines() {
18023
18023
  fs18.unlinkSync(legacy);
18024
18024
  skip(`removed legacy ~/.augment/hooks/${name}`);
18025
18025
  }
18026
- } catch {
18026
+ } catch (err) {
18027
+ warn(`could not remove legacy ${legacy}: ${err instanceof Error ? err.message : String(err)}`);
18027
18028
  }
18028
18029
  }
18029
18030
  }
@@ -21072,8 +21073,10 @@ function _main_project_install(opts, project_root, parsed_tools, is_first_run) {
21072
21073
  const tools = parsed_tools;
21073
21074
  const merged_keys_by_tool = {};
21074
21075
  if (!opts.skip_bridges) {
21075
- ensure_vscode_bridge(project_root, package_type, opts.force);
21076
- merged_keys_by_tool["augment"] = ensure_augment_bridge(project_root, opts.force);
21076
+ merged_keys_by_tool["augment"] = [
21077
+ ...ensure_vscode_bridge(project_root, package_type, opts.force),
21078
+ ...ensure_augment_bridge(project_root, opts.force)
21079
+ ];
21077
21080
  if (_is_tool_enabled(tools, "claude-code")) {
21078
21081
  merged_keys_by_tool["claude-code"] = ensure_claude_bridge(project_root, opts.force);
21079
21082
  }
@@ -3,13 +3,13 @@
3
3
  "artefact_count": 603,
4
4
  "scanner_version": "c24312e116f8"
5
5
  },
6
- "generated_at": "2026-08-10",
6
+ "generated_at": "2026-08-11",
7
7
  "package": {
8
8
  "description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including \"zero runtime daemon\".",
9
9
  "homepage": "https://event4u-app.github.io/agent-config",
10
10
  "name": "@event4u/agent-config",
11
11
  "repository": "https://github.com/event4u-app/agent-config",
12
- "version": "9.32.0"
12
+ "version": "9.33.0"
13
13
  },
14
14
  "registries": [
15
15
  {
@@ -9,12 +9,12 @@
9
9
  "transport": {
10
10
  "type": "stdio"
11
11
  },
12
- "version": "9.32.0"
12
+ "version": "9.33.0"
13
13
  }
14
14
  ],
15
15
  "repository": {
16
16
  "source": "github",
17
17
  "url": "https://github.com/event4u-app/agent-config"
18
18
  },
19
- "version": "9.32.0"
19
+ "version": "9.33.0"
20
20
  }