add-coder 0.3.33 → 0.3.35

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 (98) hide show
  1. package/dist/index.js +21 -3
  2. package/package.json +3 -3
  3. package/templates/.add-coder-src-hash.json +95 -41
  4. package/templates/adapters/claude/hooks/doc-format-guard.mjs +172 -84
  5. package/templates/adapters/claude/hooks/post-tool-use.mjs +59 -1
  6. package/templates/adapters/claude/hooks/prompt-submit.mjs +72 -0
  7. package/templates/adapters/claude/hooks/session-start.mjs +65 -1
  8. package/templates/adapters/codex/hooks/doc-format-guard.mjs +172 -84
  9. package/templates/adapters/codex/hooks/post-tool-use.mjs +59 -1
  10. package/templates/adapters/codex/hooks/prompt-submit.mjs +72 -0
  11. package/templates/adapters/codex/hooks/session-start.mjs +65 -1
  12. package/templates/adapters/qoder/hooks/doc-format-guard.mjs +172 -84
  13. package/templates/adapters/qoder/hooks/post-tool-use.mjs +59 -1
  14. package/templates/adapters/qoder/hooks/prompt-submit.mjs +72 -0
  15. package/templates/adapters/qoder/hooks/session-start.mjs +67 -1
  16. package/templates/adapters/trae/hooks/doc-format-guard.mjs +172 -84
  17. package/templates/adapters/trae/hooks/post-tool-use.mjs +59 -1
  18. package/templates/adapters/trae/hooks/prompt-submit.mjs +72 -0
  19. package/templates/adapters/trae/hooks/session-start.mjs +65 -1
  20. package/templates/adapters/vscode/hooks/doc-format-guard.mjs +172 -84
  21. package/templates/adapters/vscode/hooks/post-tool-use.mjs +59 -1
  22. package/templates/adapters/vscode/hooks/prompt-submit.mjs +72 -0
  23. package/templates/adapters/vscode/hooks/session-start.mjs +65 -1
  24. package/templates/core/governance/doc-format-guard.ts +29 -112
  25. package/templates/core/governance/post-tool-router.ts +33 -1
  26. package/templates/core/governance/prompt-router.ts +47 -0
  27. package/templates/core/governance/session-start-guard.ts +48 -1
  28. package/templates/core/prisma/add.prisma +203 -0
  29. package/templates/core/scripts/db-ensure.sh +61 -2
  30. package/templates/core/scripts/mcp-server/shared/db-types.ts +119 -0
  31. package/templates/core/scripts/mcp-server/shared/hitl-create-policy.ts +27 -0
  32. package/templates/core/scripts/mcp-server/shared/hitl-proposal-content.ts +110 -0
  33. package/templates/core/scripts/mcp-server/shared/hitl-widget-instance.ts +85 -0
  34. package/templates/core/scripts/mcp-server/shared/memory/calibration/batch-fit.ts +250 -0
  35. package/templates/core/scripts/mcp-server/shared/memory/calibration/feedback-stats.ts +101 -0
  36. package/templates/core/scripts/mcp-server/shared/memory/calibration/unit-state.ts +224 -0
  37. package/templates/core/scripts/mcp-server/shared/memory/domain/conflicts.ts +59 -0
  38. package/templates/core/scripts/mcp-server/shared/memory/domain/dedup.ts +45 -0
  39. package/templates/core/scripts/mcp-server/shared/memory/domain/errors.ts +33 -0
  40. package/templates/core/scripts/mcp-server/shared/memory/domain/handoff-digest.ts +92 -0
  41. package/templates/core/scripts/mcp-server/shared/memory/domain/metric-candidate.ts +79 -0
  42. package/templates/core/scripts/mcp-server/shared/memory/domain/scope.ts +94 -0
  43. package/templates/core/scripts/mcp-server/shared/memory/domain/secrets.ts +50 -0
  44. package/templates/core/scripts/mcp-server/shared/memory/domain/state-machine.ts +90 -0
  45. package/templates/core/scripts/mcp-server/shared/memory/embedding/index.ts +117 -0
  46. package/templates/core/scripts/mcp-server/shared/memory/embedding/local-onnx.ts +105 -0
  47. package/templates/core/scripts/mcp-server/shared/memory/embedding/openai-compatible.ts +87 -0
  48. package/templates/core/scripts/mcp-server/shared/memory/jobs/consolidation.ts +226 -0
  49. package/templates/core/scripts/mcp-server/shared/memory/jobs/evidence-collector.ts +153 -0
  50. package/templates/core/scripts/mcp-server/shared/memory/jobs/snapshot.ts +114 -0
  51. package/templates/core/scripts/mcp-server/shared/memory/metrics/gate-recall.ts +134 -0
  52. package/templates/core/scripts/mcp-server/shared/memory/metrics/gate-writer.ts +217 -0
  53. package/templates/core/scripts/mcp-server/shared/memory/metrics/stage-words.ts +69 -0
  54. package/templates/core/scripts/mcp-server/shared/memory/retrieval/context-builder.ts +89 -0
  55. package/templates/core/scripts/mcp-server/shared/memory/retrieval/fts/pg.ts +139 -0
  56. package/templates/core/scripts/mcp-server/shared/memory/retrieval/fts/sqlite-fts5.sql +29 -0
  57. package/templates/core/scripts/mcp-server/shared/memory/retrieval/fts/sqlite.ts +106 -0
  58. package/templates/core/scripts/mcp-server/shared/memory/retrieval/fusion.ts +43 -0
  59. package/templates/core/scripts/mcp-server/shared/memory/retrieval/pipeline.ts +285 -0
  60. package/templates/core/scripts/mcp-server/shared/memory/retrieval/query-terms.ts +31 -0
  61. package/templates/core/scripts/mcp-server/shared/memory/retrieval/recall-writer.ts +87 -0
  62. package/templates/core/scripts/mcp-server/shared/memory/retrieval/reranker.ts +116 -0
  63. package/templates/core/scripts/mcp-server/shared/memory/retrieval/types.ts +52 -0
  64. package/templates/core/scripts/mcp-server/shared/memory/retrieval/vector/pgvector.ts +143 -0
  65. package/templates/core/scripts/mcp-server/shared/memory/retrieval/vector/sqlite-vec.ts +118 -0
  66. package/templates/core/scripts/mcp-server/shared/memory/switches.ts +39 -0
  67. package/templates/core/scripts/mcp-server/shared/review-files.ts +22 -0
  68. package/templates/core/scripts/mcp-server/shared/runtime-freshness.ts +235 -0
  69. package/templates/core/scripts/mcp-server/tools/gateway/check_dps.ts +41 -3
  70. package/templates/core/scripts/mcp-server/tools/gateway/check_rahs.ts +40 -1
  71. package/templates/core/scripts/mcp-server/tools/gateway/check_spec_sync.ts +2 -2
  72. package/templates/core/scripts/mcp-server/tools/hitl.ts +108 -42
  73. package/templates/core/scripts/mcp-server/tools/index.ts +7 -1
  74. package/templates/core/scripts/mcp-server/tools/memory-compat.ts +258 -0
  75. package/templates/core/scripts/mcp-server/tools/memory.ts +654 -0
  76. package/templates/core/scripts/mcp-server/tools/plan.ts +8 -3
  77. package/templates/core/scripts/mcp-server/tools/review.ts +10 -7
  78. package/templates/core/scripts/mcp-server.ts +36 -0
  79. package/templates/core/templates/checklist-template.md +13 -0
  80. package/templates/core/templates/review-implementation-template.md +24 -0
  81. package/templates/core/templates/review-template.md +16 -0
  82. package/templates/core/validation/index.ts +136 -0
  83. package/templates/core/validation/policy.ts +91 -0
  84. package/templates/core/validation/registry.ts +61 -0
  85. package/templates/core/validation/schema-validator.ts +277 -0
  86. package/templates/core/validation/validators/add-route.ts +32 -0
  87. package/templates/core/validation/validators/checklist.ts +48 -0
  88. package/templates/core/validation/validators/handoff.ts +46 -0
  89. package/templates/core/validation/validators/hitl.ts +22 -0
  90. package/templates/core/validation/validators/index.ts +52 -0
  91. package/templates/core/validation/validators/plan.ts +20 -0
  92. package/templates/core/validation/validators/report.ts +16 -0
  93. package/templates/core/validation/validators/review.ts +30 -0
  94. package/templates/core/validation/validators/spec.ts +25 -0
  95. package/templates/core/validation/validators/tasks.ts +40 -0
  96. package/templates/core/validation/validators/types.ts +32 -0
  97. package/templates/core/vocabulary/add-governance-vocabulary.md +18 -0
  98. package/templates/core/scripts/mcp-server/shared/dps-spec-ref.ts +0 -17
package/dist/index.js CHANGED
@@ -748,27 +748,36 @@ import { existsSync as existsSync7 } from "fs";
748
748
  import { resolve as resolve2 } from "path";
749
749
  var pipeQueue = null;
750
750
  var pipeReady = null;
751
- function collectPipeAnswers(input) {
751
+ var PIPE_ANSWER_GRACE_MS = 3e3;
752
+ function collectPipeAnswers(input, graceMs = PIPE_ANSWER_GRACE_MS) {
752
753
  return new Promise((resolveAnswers) => {
753
754
  const answers = [];
754
755
  let buffer = "";
755
756
  let settled = false;
757
+ let timer = null;
756
758
  const finish = () => {
757
759
  if (settled) return;
758
760
  settled = true;
761
+ if (timer) clearTimeout(timer);
759
762
  if (buffer.trim()) answers.push(buffer.trim());
760
763
  resolveAnswers(answers);
761
764
  };
765
+ const armGrace = () => {
766
+ if (timer) clearTimeout(timer);
767
+ timer = setTimeout(finish, graceMs);
768
+ };
762
769
  input.setEncoding("utf-8");
763
770
  input.on("data", (chunk) => {
764
771
  buffer += chunk;
765
772
  const lines = buffer.split("\n");
766
773
  buffer = lines.pop() ?? "";
767
774
  answers.push(...lines.filter((line) => line.trim() !== ""));
775
+ armGrace();
768
776
  });
769
777
  input.once("end", finish);
770
778
  input.once("error", finish);
771
779
  input.resume();
780
+ armGrace();
772
781
  });
773
782
  }
774
783
  function takePipeAnswer(queue) {
@@ -785,7 +794,11 @@ function ensurePipeQueue() {
785
794
  async function ask(q) {
786
795
  await ensurePipeQueue();
787
796
  if (pipeQueue) {
788
- return takePipeAnswer(pipeQueue);
797
+ const a = takePipeAnswer(pipeQueue);
798
+ process.stderr.write(a === "" ? `${q.trim()}\uFF08\u975E\u4EA4\u4E92\u65E0\u8F93\u5165 \u2192 \u53D6\u9ED8\u8BA4\uFF09
799
+ ` : `${q.trim()} \u2192 ${a}
800
+ `);
801
+ return a;
789
802
  }
790
803
  const rl = createInterface2({ input: process.stdin, output: process.stdout });
791
804
  return new Promise((r) => {
@@ -2094,7 +2107,12 @@ function finalize(ctx, result, dbFail) {
2094
2107
  const installArgs = pm === "pnpm" ? ["add", ...peerNames] : ["install", ...peerNames];
2095
2108
  try {
2096
2109
  const ir = runCommand(pm, installArgs, { cwd: projectRoot });
2097
- if (ir.status !== 0) console.warn(`\u26A0\uFE0F peer \u4F9D\u8D56\u5B89\u88C5\u5931\u8D25\uFF08\u9000\u51FA\u7801: ${ir.status}\uFF09\uFF0C\u540E\u7EED MCP \u542F\u52A8\u53EF\u80FD\u62A5\u9519`);
2110
+ if (ir.status !== 0) {
2111
+ const why = (ir.stderr || "").trim().split("\n").slice(0, 3).join(" | ");
2112
+ console.warn(`\u26A0\uFE0F peer \u4F9D\u8D56\u5B89\u88C5\u5931\u8D25\uFF08\u9000\u51FA\u7801: ${ir.status}\uFF09\uFF0C\u540E\u7EED MCP \u542F\u52A8\u53EF\u80FD\u62A5\u9519`);
2113
+ if (why) console.warn(` \u539F\u56E0: ${why}`);
2114
+ else console.warn(` \u539F\u56E0: \u65E0 stderr \u8F93\u51FA\uFF08\u53EF\u624B\u5DE5\u6267\u884C ${pm} ${installArgs.join(" ")} \u590D\u73B0\uFF09`);
2115
+ }
2098
2116
  } catch (e) {
2099
2117
  console.warn(`\u26A0\uFE0F peer \u4F9D\u8D56\u5B89\u88C5\u5931\u8D25: ${e instanceof Error ? e.message : String(e)}`);
2100
2118
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "add-coder",
3
- "version": "0.3.33",
3
+ "version": "0.3.35",
4
4
  "private": false,
5
5
  "description": "[codein2027](https://github.com/xiaomingming92/codein2027) - A complete scaffolding for building the ADD programming paradigm, the implementation layer for AI code governance. Core principle: Audit as Infrastructure. Breaks the black-box programming process and cross-session amnesia, evolving programming paradigms into an auditable, traceable, and convergent new era. npx-ready.\n\n[codein2027](https://github.com/xiaomingming92/codein2027) 快速构建 ADD 编程范式的完整脚手架——AI 代码治理的落地方案。以「审计即基础设施」为核心,彻底打破编程过程黑盒与跨轮失忆,让编程范式进化为可审计、可追溯、可收敛的新时代。npx 即用,人人可体验。",
6
6
  "repository": {
@@ -53,8 +53,8 @@
53
53
  "@prisma/client": "^7.0.0",
54
54
  "dotenv": "*",
55
55
  "find-up": "^8.0.0",
56
- "pg": "^8.16.0",
57
56
  "prisma": "^7.0.0",
57
+ "pg": "^8.16.0",
58
58
  "tsx": ">=4",
59
59
  "vector-cosine-similarity": "^1.8.0"
60
60
  },
@@ -106,7 +106,7 @@
106
106
  "dev": "tsup --watch",
107
107
  "prebuild": "tsx scripts/hook-bake.ts --publish",
108
108
  "db:ensure": "bash scripts/db-ensure.sh",
109
- "sync": "tsx scripts/sync-magic.ts",
109
+ "sync": "tsx scripts/sync-magic.ts && tsx scripts/mcp-restart-notice.ts",
110
110
  "sync:bash": "bash scripts/benchmark/sync-magic.sh",
111
111
  "benchmark": "tsx scripts/benchmark/benchmark-sync.ts",
112
112
  "lint": "eslint src/",
@@ -1,6 +1,6 @@
1
1
  {
2
- "_version": "0.3.33",
3
- "adapters/claude/hooks/doc-format-guard.mjs": "02fb1ed6",
2
+ "_version": "0.3.35",
3
+ "adapters/claude/hooks/doc-format-guard.mjs": "35e09959",
4
4
  "adapters/claude/hooks/doc-format-guard.ts": "2abf8013",
5
5
  "adapters/claude/hooks/lib/claude-env.ts": "170b40ca",
6
6
  "adapters/claude/hooks/notification.mjs": "5921b914",
@@ -11,19 +11,19 @@
11
11
  "adapters/claude/hooks/permission-gate.ts": "858f2dc6",
12
12
  "adapters/claude/hooks/post-tool-failure.mjs": "c1490184",
13
13
  "adapters/claude/hooks/post-tool-failure.ts": "8c53fdd4",
14
- "adapters/claude/hooks/post-tool-use.mjs": "c60eef27",
14
+ "adapters/claude/hooks/post-tool-use.mjs": "2cde4e78",
15
15
  "adapters/claude/hooks/post-tool-use.ts": "54c1840a",
16
16
  "adapters/claude/hooks/pre-compact.mjs": "83ae92d3",
17
17
  "adapters/claude/hooks/pre-compact.ts": "fdb49e54",
18
18
  "adapters/claude/hooks/pre-tool-use.mjs": "7c22b2d3",
19
19
  "adapters/claude/hooks/pre-tool-use.ts": "c47cc5d5",
20
- "adapters/claude/hooks/prompt-submit.mjs": "ba18ef0f",
20
+ "adapters/claude/hooks/prompt-submit.mjs": "28090728",
21
21
  "adapters/claude/hooks/prompt-submit.ts": "c3847e2a",
22
22
  "adapters/claude/hooks/review-checklist.mjs": "421384d5",
23
23
  "adapters/claude/hooks/review-checklist.ts": "94695330",
24
24
  "adapters/claude/hooks/session-end.mjs": "c0f71fd6",
25
25
  "adapters/claude/hooks/session-end.ts": "3c963eae",
26
- "adapters/claude/hooks/session-start.mjs": "897cc04a",
26
+ "adapters/claude/hooks/session-start.mjs": "196ee234",
27
27
  "adapters/claude/hooks/session-start.ts": "3f762d49",
28
28
  "adapters/claude/hooks/stop-check.mjs": "17d16a1d",
29
29
  "adapters/claude/hooks/stop-check.ts": "967fd318",
@@ -36,7 +36,7 @@
36
36
  "adapters/claude/mcp.json": "4ddc5120",
37
37
  "adapters/claude/settings.json": "9cf9603a",
38
38
  "adapters/codex/config.toml.example": "62c03d71",
39
- "adapters/codex/hooks/doc-format-guard.mjs": "ef1e8ac3",
39
+ "adapters/codex/hooks/doc-format-guard.mjs": "292560cd",
40
40
  "adapters/codex/hooks/doc-format-guard.ts": "566b835f",
41
41
  "adapters/codex/hooks/notification.mjs": "9357c801",
42
42
  "adapters/codex/hooks/notification.ts": "a4fd2749",
@@ -44,19 +44,19 @@
44
44
  "adapters/codex/hooks/permission-gate.ts": "15af671c",
45
45
  "adapters/codex/hooks/post-tool-failure.mjs": "7f49d8dd",
46
46
  "adapters/codex/hooks/post-tool-failure.ts": "bddd1f4e",
47
- "adapters/codex/hooks/post-tool-use.mjs": "1bfa590d",
47
+ "adapters/codex/hooks/post-tool-use.mjs": "a85a91cd",
48
48
  "adapters/codex/hooks/post-tool-use.ts": "a7a2fc6c",
49
49
  "adapters/codex/hooks/pre-compact.mjs": "658c8602",
50
50
  "adapters/codex/hooks/pre-compact.ts": "c0671f9b",
51
51
  "adapters/codex/hooks/pre-tool-use.mjs": "265f2a75",
52
52
  "adapters/codex/hooks/pre-tool-use.ts": "3750e60b",
53
- "adapters/codex/hooks/prompt-submit.mjs": "9bbf386d",
53
+ "adapters/codex/hooks/prompt-submit.mjs": "d32575ba",
54
54
  "adapters/codex/hooks/prompt-submit.ts": "625cdc5e",
55
55
  "adapters/codex/hooks/review-checklist.mjs": "f20c9bd7",
56
56
  "adapters/codex/hooks/review-checklist.ts": "9a664173",
57
57
  "adapters/codex/hooks/session-end.mjs": "f6518223",
58
58
  "adapters/codex/hooks/session-end.ts": "7fcb6f86",
59
- "adapters/codex/hooks/session-start.mjs": "32d714e4",
59
+ "adapters/codex/hooks/session-start.mjs": "28d8120d",
60
60
  "adapters/codex/hooks/session-start.ts": "4eacd44f",
61
61
  "adapters/codex/hooks/stop-check.mjs": "5ed61a37",
62
62
  "adapters/codex/hooks/stop-check.ts": "ee1801dd",
@@ -66,7 +66,7 @@
66
66
  "adapters/codex/hooks/subagent-stop.ts": "a27e6a9e",
67
67
  "adapters/codex/hooks.json": "3c78fb72",
68
68
  "adapters/codex/settings.json": "44136fa3",
69
- "adapters/qoder/hooks/doc-format-guard.mjs": "a357dcfa",
69
+ "adapters/qoder/hooks/doc-format-guard.mjs": "66745a4a",
70
70
  "adapters/qoder/hooks/doc-format-guard.ts": "12e360db",
71
71
  "adapters/qoder/hooks/lib/context-inject.ts": "aaee941a",
72
72
  "adapters/qoder/hooks/lib/qoder-env.ts": "ec8c3243",
@@ -77,19 +77,19 @@
77
77
  "adapters/qoder/hooks/permission-gate.ts": "8478e48e",
78
78
  "adapters/qoder/hooks/post-tool-failure.mjs": "41c2e733",
79
79
  "adapters/qoder/hooks/post-tool-failure.ts": "b9439d5c",
80
- "adapters/qoder/hooks/post-tool-use.mjs": "cb3d31c1",
80
+ "adapters/qoder/hooks/post-tool-use.mjs": "6416e6d5",
81
81
  "adapters/qoder/hooks/post-tool-use.ts": "c7e9ce26",
82
82
  "adapters/qoder/hooks/pre-compact.mjs": "c185b105",
83
83
  "adapters/qoder/hooks/pre-compact.ts": "70a8e8f8",
84
84
  "adapters/qoder/hooks/pre-tool-use.mjs": "14721c44",
85
85
  "adapters/qoder/hooks/pre-tool-use.ts": "2f0cab18",
86
- "adapters/qoder/hooks/prompt-submit.mjs": "d42ecfac",
86
+ "adapters/qoder/hooks/prompt-submit.mjs": "ffb77916",
87
87
  "adapters/qoder/hooks/prompt-submit.ts": "9050e0cb",
88
88
  "adapters/qoder/hooks/review-checklist.mjs": "ced90c89",
89
89
  "adapters/qoder/hooks/review-checklist.ts": "cf4ac191",
90
90
  "adapters/qoder/hooks/session-end.mjs": "69c0400b",
91
91
  "adapters/qoder/hooks/session-end.ts": "e9bf7cd4",
92
- "adapters/qoder/hooks/session-start.mjs": "f19c83f6",
92
+ "adapters/qoder/hooks/session-start.mjs": "861771bf",
93
93
  "adapters/qoder/hooks/session-start.ts": "eeb089e0",
94
94
  "adapters/qoder/hooks/stop-check.mjs": "d47fa96c",
95
95
  "adapters/qoder/hooks/stop-check.ts": "53447287",
@@ -100,7 +100,7 @@
100
100
  "adapters/qoder/mcp.json": "b2075957",
101
101
  "adapters/qoder/settings.json": "31799ee7",
102
102
  "adapters/qoder/sync-policy.json": "9cb6ff90",
103
- "adapters/trae/hooks/doc-format-guard.mjs": "98204517",
103
+ "adapters/trae/hooks/doc-format-guard.mjs": "8306251f",
104
104
  "adapters/trae/hooks/doc-format-guard.ts": "14968f12",
105
105
  "adapters/trae/hooks/notification.mjs": "0c2c2078",
106
106
  "adapters/trae/hooks/notification.ts": "f0b4b606",
@@ -108,19 +108,19 @@
108
108
  "adapters/trae/hooks/permission-gate.ts": "c53aedc7",
109
109
  "adapters/trae/hooks/post-tool-failure.mjs": "e5eef9fc",
110
110
  "adapters/trae/hooks/post-tool-failure.ts": "4cd97dac",
111
- "adapters/trae/hooks/post-tool-use.mjs": "56f8aca2",
111
+ "adapters/trae/hooks/post-tool-use.mjs": "714aac79",
112
112
  "adapters/trae/hooks/post-tool-use.ts": "7b1e2f4f",
113
113
  "adapters/trae/hooks/pre-compact.mjs": "cd8a8bd8",
114
114
  "adapters/trae/hooks/pre-compact.ts": "5de3b0fe",
115
115
  "adapters/trae/hooks/pre-tool-use.mjs": "1d5849ea",
116
116
  "adapters/trae/hooks/pre-tool-use.ts": "a7486c97",
117
- "adapters/trae/hooks/prompt-submit.mjs": "cdb47fbb",
117
+ "adapters/trae/hooks/prompt-submit.mjs": "3c43fa08",
118
118
  "adapters/trae/hooks/prompt-submit.ts": "95ebd771",
119
119
  "adapters/trae/hooks/review-checklist.mjs": "491dd85e",
120
120
  "adapters/trae/hooks/review-checklist.ts": "343bd699",
121
121
  "adapters/trae/hooks/session-end.mjs": "bdf745f3",
122
122
  "adapters/trae/hooks/session-end.ts": "64ce383f",
123
- "adapters/trae/hooks/session-start.mjs": "73af1ef0",
123
+ "adapters/trae/hooks/session-start.mjs": "f5efb933",
124
124
  "adapters/trae/hooks/session-start.ts": "d6b4fdc7",
125
125
  "adapters/trae/hooks/stop-check.mjs": "b390da8e",
126
126
  "adapters/trae/hooks/stop-check.ts": "b33ad5e4",
@@ -141,7 +141,7 @@
141
141
  "adapters/vscode/.github/hooks/subagent-stop.json": "47dbdd8d",
142
142
  "adapters/vscode/.github/hooks/user-prompt-submit.json": "3a608d62",
143
143
  "adapters/vscode/extensions.json": "0f4024c1",
144
- "adapters/vscode/hooks/doc-format-guard.mjs": "24113144",
144
+ "adapters/vscode/hooks/doc-format-guard.mjs": "999e6d23",
145
145
  "adapters/vscode/hooks/doc-format-guard.ts": "38e71c50",
146
146
  "adapters/vscode/hooks/notification.mjs": "11f4c51c",
147
147
  "adapters/vscode/hooks/notification.ts": "5eed547d",
@@ -149,19 +149,19 @@
149
149
  "adapters/vscode/hooks/permission-gate.ts": "ad096bc1",
150
150
  "adapters/vscode/hooks/post-tool-failure.mjs": "eb629fe3",
151
151
  "adapters/vscode/hooks/post-tool-failure.ts": "f7bc81b3",
152
- "adapters/vscode/hooks/post-tool-use.mjs": "90444411",
152
+ "adapters/vscode/hooks/post-tool-use.mjs": "f09c085c",
153
153
  "adapters/vscode/hooks/post-tool-use.ts": "42146851",
154
154
  "adapters/vscode/hooks/pre-compact.mjs": "50a50099",
155
155
  "adapters/vscode/hooks/pre-compact.ts": "15e4a043",
156
156
  "adapters/vscode/hooks/pre-tool-use.mjs": "ab9081f7",
157
157
  "adapters/vscode/hooks/pre-tool-use.ts": "8e8e588d",
158
- "adapters/vscode/hooks/prompt-submit.mjs": "27b1a944",
158
+ "adapters/vscode/hooks/prompt-submit.mjs": "4c238544",
159
159
  "adapters/vscode/hooks/prompt-submit.ts": "767b13d2",
160
160
  "adapters/vscode/hooks/review-checklist.mjs": "6061e7fb",
161
161
  "adapters/vscode/hooks/review-checklist.ts": "f5fb4557",
162
162
  "adapters/vscode/hooks/session-end.mjs": "4b3f7a5d",
163
163
  "adapters/vscode/hooks/session-end.ts": "acdd9f42",
164
- "adapters/vscode/hooks/session-start.mjs": "8b8a4591",
164
+ "adapters/vscode/hooks/session-start.mjs": "f3c18d47",
165
165
  "adapters/vscode/hooks/session-start.ts": "54b262b0",
166
166
  "adapters/vscode/hooks/stop-check.mjs": "42b5f912",
167
167
  "adapters/vscode/hooks/stop-check.ts": "7a69b075",
@@ -181,20 +181,20 @@
181
181
  "core/governance/audit-bridge.ts": "1a0d5ccd",
182
182
  "core/governance/common.ts": "37570397",
183
183
  "core/governance/context-inject.ts": "8ded8188",
184
- "core/governance/doc-format-guard.ts": "70978fc9",
184
+ "core/governance/doc-format-guard.ts": "90bcc306",
185
185
  "core/governance/notification-router.ts": "526ee71c",
186
186
  "core/governance/notify.ts": "b7e8543f",
187
187
  "core/governance/permission-gate-router.ts": "e4fa8376",
188
188
  "core/governance/post-tool-failure-router.ts": "7542b2a0",
189
- "core/governance/post-tool-router.ts": "556f9200",
189
+ "core/governance/post-tool-router.ts": "6dc1b65c",
190
190
  "core/governance/pre-compact-guard.ts": "e1c2b2e7",
191
191
  "core/governance/pre-tool-guard.ts": "c64b7382",
192
192
  "core/governance/preload-templates.ts": "cfd6d3ca",
193
- "core/governance/prompt-router.ts": "15ca2987",
193
+ "core/governance/prompt-router.ts": "4b2f55a3",
194
194
  "core/governance/review-checklist-guard.ts": "b24568b1",
195
195
  "core/governance/rules.ts": "ffd7b843",
196
196
  "core/governance/session-end.ts": "108fc3f6",
197
- "core/governance/session-start-guard.ts": "96666e11",
197
+ "core/governance/session-start-guard.ts": "8a91218e",
198
198
  "core/governance/state-detect.ts": "55afc935",
199
199
  "core/governance/stop-router.ts": "b59fb651",
200
200
  "core/governance/subagent-guard-router.ts": "398fb80e",
@@ -215,7 +215,7 @@
215
215
  "core/hooks/stop-check.ts": "0c3fc40a",
216
216
  "core/hooks/subagent-guard.ts": "37019300",
217
217
  "core/hooks/subagent-stop.ts": "9eebd61f",
218
- "core/prisma/add.prisma": "a543cd84",
218
+ "core/prisma/add.prisma": "a3365acc",
219
219
  "core/reports/REPORT-WORKFLOW.md": "03d39b21",
220
220
  "core/reports/boundary-runtime-report.md": "6fd8053f",
221
221
  "core/reports/code-review-combined-report.md": "195d52aa",
@@ -229,7 +229,7 @@
229
229
  "core/rules/profiles/webapp-profile.md": "e493ae7b",
230
230
  "core/rules/project_rules.md": "094821ad",
231
231
  "core/rules/theory-practice-map.toml": "b1db99fd",
232
- "core/scripts/db-ensure.sh": "94a5ff92",
232
+ "core/scripts/db-ensure.sh": "915c78b0",
233
233
  "core/scripts/gen-plan-index.sh": "47836bec",
234
234
  "core/scripts/mcp-server/elicitation/confirm.ts": "924857b8",
235
235
  "core/scripts/mcp-server/elicitation/index.ts": "44c5dc3f",
@@ -246,15 +246,50 @@
246
246
  "core/scripts/mcp-server/sampling/index.ts": "7ee26d92",
247
247
  "core/scripts/mcp-server/sampling/review.ts": "dd6e22ff",
248
248
  "core/scripts/mcp-server/shared/anchor.ts": "ab15ff22",
249
- "core/scripts/mcp-server/shared/db-types.ts": "bd97e8b6",
249
+ "core/scripts/mcp-server/shared/db-types.ts": "2d54cc72",
250
250
  "core/scripts/mcp-server/shared/dps-scoring.strategy.ts": "92ecf32b",
251
- "core/scripts/mcp-server/shared/dps-spec-ref.ts": "c2257e3a",
252
251
  "core/scripts/mcp-server/shared/env.ts": "f79ab09c",
253
252
  "core/scripts/mcp-server/shared/fs.ts": "be216ce3",
253
+ "core/scripts/mcp-server/shared/hitl-create-policy.ts": "654affef",
254
254
  "core/scripts/mcp-server/shared/hitl-interaction.strategy.ts": "dcfe946f",
255
255
  "core/scripts/mcp-server/shared/hitl-lifecycle-mutation.ts": "06952c62",
256
+ "core/scripts/mcp-server/shared/hitl-proposal-content.ts": "a7609204",
256
257
  "core/scripts/mcp-server/shared/hitl-proposal-mutation.ts": "87a7a372",
257
258
  "core/scripts/mcp-server/shared/hitl-ui.ts": "51d574f2",
259
+ "core/scripts/mcp-server/shared/hitl-widget-instance.ts": "fa750c56",
260
+ "core/scripts/mcp-server/shared/memory/calibration/batch-fit.ts": "d93af367",
261
+ "core/scripts/mcp-server/shared/memory/calibration/feedback-stats.ts": "525d18cb",
262
+ "core/scripts/mcp-server/shared/memory/calibration/unit-state.ts": "42f92007",
263
+ "core/scripts/mcp-server/shared/memory/domain/conflicts.ts": "3069087b",
264
+ "core/scripts/mcp-server/shared/memory/domain/dedup.ts": "4102da3d",
265
+ "core/scripts/mcp-server/shared/memory/domain/errors.ts": "23a907df",
266
+ "core/scripts/mcp-server/shared/memory/domain/handoff-digest.ts": "0f2b906a",
267
+ "core/scripts/mcp-server/shared/memory/domain/metric-candidate.ts": "5450fa45",
268
+ "core/scripts/mcp-server/shared/memory/domain/scope.ts": "137c23eb",
269
+ "core/scripts/mcp-server/shared/memory/domain/secrets.ts": "fd5376b3",
270
+ "core/scripts/mcp-server/shared/memory/domain/state-machine.ts": "e37e877a",
271
+ "core/scripts/mcp-server/shared/memory/embedding/index.ts": "ec6d09b8",
272
+ "core/scripts/mcp-server/shared/memory/embedding/local-onnx.ts": "21fbd890",
273
+ "core/scripts/mcp-server/shared/memory/embedding/openai-compatible.ts": "7a6a7429",
274
+ "core/scripts/mcp-server/shared/memory/jobs/consolidation.ts": "d724ec0d",
275
+ "core/scripts/mcp-server/shared/memory/jobs/evidence-collector.ts": "b44b4d62",
276
+ "core/scripts/mcp-server/shared/memory/jobs/snapshot.ts": "7c7923eb",
277
+ "core/scripts/mcp-server/shared/memory/metrics/gate-recall.ts": "dc41a0fc",
278
+ "core/scripts/mcp-server/shared/memory/metrics/gate-writer.ts": "47cd35b0",
279
+ "core/scripts/mcp-server/shared/memory/metrics/stage-words.ts": "a81db64b",
280
+ "core/scripts/mcp-server/shared/memory/retrieval/context-builder.ts": "ea83c131",
281
+ "core/scripts/mcp-server/shared/memory/retrieval/fts/pg.ts": "1275eef4",
282
+ "core/scripts/mcp-server/shared/memory/retrieval/fts/sqlite-fts5.sql": "8fade96f",
283
+ "core/scripts/mcp-server/shared/memory/retrieval/fts/sqlite.ts": "09a6cf59",
284
+ "core/scripts/mcp-server/shared/memory/retrieval/fusion.ts": "c3aa6a4f",
285
+ "core/scripts/mcp-server/shared/memory/retrieval/pipeline.ts": "dbe4a472",
286
+ "core/scripts/mcp-server/shared/memory/retrieval/query-terms.ts": "423a0054",
287
+ "core/scripts/mcp-server/shared/memory/retrieval/recall-writer.ts": "ed9cba51",
288
+ "core/scripts/mcp-server/shared/memory/retrieval/reranker.ts": "659ed2e8",
289
+ "core/scripts/mcp-server/shared/memory/retrieval/types.ts": "f9f9f8ad",
290
+ "core/scripts/mcp-server/shared/memory/retrieval/vector/pgvector.ts": "732e70c1",
291
+ "core/scripts/mcp-server/shared/memory/retrieval/vector/sqlite-vec.ts": "d6ad13ff",
292
+ "core/scripts/mcp-server/shared/memory/switches.ts": "b1561bef",
258
293
  "core/scripts/mcp-server/shared/package.json": "e3d5a4a2",
259
294
  "core/scripts/mcp-server/shared/plan-lifecycle-events.ts": "ae99b9a0",
260
295
  "core/scripts/mcp-server/shared/plan-lifecycle-mutation.ts": "303d9674",
@@ -271,8 +306,10 @@
271
306
  "core/scripts/mcp-server/shared/quant-recheck.strategy.ts": "12211d20",
272
307
  "core/scripts/mcp-server/shared/redact.ts": "22e008aa",
273
308
  "core/scripts/mcp-server/shared/response.ts": "0d1539a8",
309
+ "core/scripts/mcp-server/shared/review-files.ts": "863e9074",
274
310
  "core/scripts/mcp-server/shared/run-command.ts": "42caf972",
275
311
  "core/scripts/mcp-server/shared/runtime-context.ts": "51d0b45f",
312
+ "core/scripts/mcp-server/shared/runtime-freshness.ts": "de5f0fb9",
276
313
  "core/scripts/mcp-server/shared/schema-topology.ts": "a680b738",
277
314
  "core/scripts/mcp-server/tasks/index.ts": "c040eb75",
278
315
  "core/scripts/mcp-server/tasks/runner.ts": "d84bd35d",
@@ -284,21 +321,23 @@
284
321
  "core/scripts/mcp-server/tools/gateway/check_add_route_completeness.ts": "b58e76ee",
285
322
  "core/scripts/mcp-server/tools/gateway/check_add_route_status.ts": "4caf552c",
286
323
  "core/scripts/mcp-server/tools/gateway/check_doc_similarity.ts": "2cba51c5",
287
- "core/scripts/mcp-server/tools/gateway/check_dps.ts": "eb0fd12d",
288
- "core/scripts/mcp-server/tools/gateway/check_rahs.ts": "7091a262",
289
- "core/scripts/mcp-server/tools/gateway/check_spec_sync.ts": "75c0d1e3",
324
+ "core/scripts/mcp-server/tools/gateway/check_dps.ts": "4a784024",
325
+ "core/scripts/mcp-server/tools/gateway/check_rahs.ts": "88d2c549",
326
+ "core/scripts/mcp-server/tools/gateway/check_spec_sync.ts": "560a88ad",
290
327
  "core/scripts/mcp-server/tools/gateway/helpers.ts": "f8794a92",
291
328
  "core/scripts/mcp-server/tools/gateway/index.ts": "cffe9783",
292
329
  "core/scripts/mcp-server/tools/gateway.backup": "65eae393",
293
- "core/scripts/mcp-server/tools/hitl.ts": "04b6b807",
330
+ "core/scripts/mcp-server/tools/hitl.ts": "4488c338",
294
331
  "core/scripts/mcp-server/tools/hook-event-report.ts": "1d825b3f",
295
- "core/scripts/mcp-server/tools/index.ts": "443128c8",
296
- "core/scripts/mcp-server/tools/plan.ts": "d20b300c",
332
+ "core/scripts/mcp-server/tools/index.ts": "fcebff02",
333
+ "core/scripts/mcp-server/tools/memory-compat.ts": "8812c5b7",
334
+ "core/scripts/mcp-server/tools/memory.ts": "cf6a576d",
335
+ "core/scripts/mcp-server/tools/plan.ts": "edae2597",
297
336
  "core/scripts/mcp-server/tools/quality.ts": "c4634453",
298
337
  "core/scripts/mcp-server/tools/registrar.ts": "efd81b3a",
299
- "core/scripts/mcp-server/tools/review.ts": "65c35e31",
338
+ "core/scripts/mcp-server/tools/review.ts": "d114e522",
300
339
  "core/scripts/mcp-server/types.ts": "6c5e60bc",
301
- "core/scripts/mcp-server.ts": "0c9b0666",
340
+ "core/scripts/mcp-server.ts": "bcaead3c",
302
341
  "core/scripts/package.json": "5a065fe7",
303
342
  "core/scripts/plan-status-bridge.ts": "70c5d8b7",
304
343
  "core/skills/add-paradigm/SKILL.md": "55df369a",
@@ -311,7 +350,7 @@
311
350
  "core/templates/add-route-template-heavyweight.md": "0e107ac0",
312
351
  "core/templates/add-route-template.md": "da7022df",
313
352
  "core/templates/add-route-template.schema.json": "cca77a6e",
314
- "core/templates/checklist-template.md": "d6b73a5c",
353
+ "core/templates/checklist-template.md": "c1ea7aaf",
315
354
  "core/templates/checklist-template.schema.json": "fb3a73e8",
316
355
  "core/templates/collab-contract-template.md": "b8a52503",
317
356
  "core/templates/collab-contract-template.schema.json": "ae0f482c",
@@ -334,11 +373,11 @@
334
373
  "core/templates/prd-standard-template.schema.json": "2b76a919",
335
374
  "core/templates/report-template.md": "bc4602ac",
336
375
  "core/templates/report-template.schema.json": "44dd2bd0",
337
- "core/templates/review-implementation-template.md": "a8f8c748",
376
+ "core/templates/review-implementation-template.md": "6d7a46cb",
338
377
  "core/templates/review-implementation-template.schema.json": "d97b9eb6",
339
378
  "core/templates/review-runtime-template.md": "c5960af1",
340
379
  "core/templates/review-runtime-template.schema.json": "c346ea7d",
341
- "core/templates/review-template.md": "d5fd3323",
380
+ "core/templates/review-template.md": "644d2772",
342
381
  "core/templates/review-template.schema.json": "abc2ece6",
343
382
  "core/templates/runtime-report-template.md": "7b35208a",
344
383
  "core/templates/runtime-report-template.schema.json": "6c1143e6",
@@ -351,5 +390,20 @@
351
390
  "core/templates/tasks-template.md": "2b9d0d52",
352
391
  "core/templates/tasks-template.schema.json": "2e691c8a",
353
392
  "core/tools/README.md": "26a63460",
354
- "core/vocabulary/add-governance-vocabulary.md": "ee9e2bd2"
393
+ "core/validation/index.ts": "0a91bf6c",
394
+ "core/validation/policy.ts": "ff60b1ef",
395
+ "core/validation/registry.ts": "7d5c094a",
396
+ "core/validation/schema-validator.ts": "5f7cd2a8",
397
+ "core/validation/validators/add-route.ts": "241ff346",
398
+ "core/validation/validators/checklist.ts": "5adb68b2",
399
+ "core/validation/validators/handoff.ts": "5f7a3611",
400
+ "core/validation/validators/hitl.ts": "9f654cf3",
401
+ "core/validation/validators/index.ts": "a280de23",
402
+ "core/validation/validators/plan.ts": "ec69ae0b",
403
+ "core/validation/validators/report.ts": "ee1f4273",
404
+ "core/validation/validators/review.ts": "2da71463",
405
+ "core/validation/validators/spec.ts": "a7ad1d24",
406
+ "core/validation/validators/tasks.ts": "cae46ddc",
407
+ "core/validation/validators/types.ts": "dafcdbdc",
408
+ "core/vocabulary/add-governance-vocabulary.md": "37f2c301"
355
409
  }