wyrm-mcp 7.3.2 → 7.4.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 (200) hide show
  1. package/README.md +12 -18
  2. package/dist/activation.js +59 -1
  3. package/dist/agent-daemon.js +281 -4
  4. package/dist/agent-loop.js +332 -7
  5. package/dist/analytics.js +236 -13
  6. package/dist/attribution.js +49 -1
  7. package/dist/audit.js +457 -2
  8. package/dist/auto-capture.js +138 -3
  9. package/dist/auto-orchestrator.js +325 -1
  10. package/dist/autoconfig.d.ts +51 -0
  11. package/dist/autoconfig.d.ts.map +1 -1
  12. package/dist/autoconfig.js +1121 -39
  13. package/dist/autoconfig.js.map +1 -1
  14. package/dist/buddy-runner.js +109 -1
  15. package/dist/buddy.js +564 -14
  16. package/dist/build-flags.js +15 -1
  17. package/dist/capabilities.js +183 -3
  18. package/dist/capture.js +56 -1
  19. package/dist/causality.js +148 -8
  20. package/dist/cli.js +281 -20
  21. package/dist/cloud/cli.js +541 -5
  22. package/dist/cloud/client.js +221 -1
  23. package/dist/cloud/crypto.js +85 -1
  24. package/dist/cloud/machine-id.js +113 -2
  25. package/dist/cloud/recovery.js +60 -1
  26. package/dist/cloud/sync-engine.js +543 -7
  27. package/dist/cloud-backup.js +579 -5
  28. package/dist/cloud-profile.js +138 -1
  29. package/dist/cloud-sync-entrypoint.js +47 -1
  30. package/dist/cloud-sync.js +309 -2
  31. package/dist/connectors/bridge-source.d.ts +46 -0
  32. package/dist/connectors/bridge-source.d.ts.map +1 -0
  33. package/dist/connectors/bridge-source.js +77 -0
  34. package/dist/connectors/bridge-source.js.map +1 -0
  35. package/dist/connectors/index.d.ts +24 -0
  36. package/dist/connectors/index.d.ts.map +1 -0
  37. package/dist/connectors/index.js +69 -0
  38. package/dist/connectors/index.js.map +1 -0
  39. package/dist/connectors/ingest.d.ts +16 -0
  40. package/dist/connectors/ingest.d.ts.map +1 -0
  41. package/dist/connectors/ingest.js +116 -0
  42. package/dist/connectors/ingest.js.map +1 -0
  43. package/dist/connectors/types.d.ts +99 -0
  44. package/dist/connectors/types.d.ts.map +1 -0
  45. package/dist/connectors/types.js +17 -0
  46. package/dist/connectors/types.js.map +1 -0
  47. package/dist/constellation.js +168 -12
  48. package/dist/content-signature.js +45 -1
  49. package/dist/context-build-budgeted.js +144 -4
  50. package/dist/context-ranking.js +69 -1
  51. package/dist/crypto.js +179 -1
  52. package/dist/daemon-write-endpoint.js +290 -1
  53. package/dist/daemon-writer.js +406 -2
  54. package/dist/database.js +1278 -53
  55. package/dist/deprecations.js +162 -2
  56. package/dist/design.js +141 -13
  57. package/dist/event-replication.js +112 -1
  58. package/dist/events-sse.js +43 -7
  59. package/dist/events.js +238 -6
  60. package/dist/failure-patterns.d.ts +107 -0
  61. package/dist/failure-patterns.d.ts.map +1 -1
  62. package/dist/failure-patterns.js +924 -43
  63. package/dist/failure-patterns.js.map +1 -1
  64. package/dist/federation.js +236 -12
  65. package/dist/goals.js +101 -13
  66. package/dist/golden.js +355 -3
  67. package/dist/handlers/agent.js +165 -4
  68. package/dist/handlers/alias-adapters.js +129 -1
  69. package/dist/handlers/aliases.js +171 -1
  70. package/dist/handlers/audit.js +87 -1
  71. package/dist/handlers/boundary.js +221 -1
  72. package/dist/handlers/capture.js +1114 -73
  73. package/dist/handlers/causality.js +119 -9
  74. package/dist/handlers/cloud.js +382 -85
  75. package/dist/handlers/companion.js +459 -28
  76. package/dist/handlers/datalake.js +187 -7
  77. package/dist/handlers/dispatch-context.js +22 -0
  78. package/dist/handlers/entity.js +256 -25
  79. package/dist/handlers/events.js +335 -16
  80. package/dist/handlers/failure.d.ts +1 -0
  81. package/dist/handlers/failure.d.ts.map +1 -1
  82. package/dist/handlers/failure.js +458 -13
  83. package/dist/handlers/failure.js.map +1 -1
  84. package/dist/handlers/goals.js +296 -4
  85. package/dist/handlers/intelligence.d.ts.map +1 -1
  86. package/dist/handlers/intelligence.js +690 -126
  87. package/dist/handlers/intelligence.js.map +1 -1
  88. package/dist/handlers/invoicing.js +70 -1
  89. package/dist/handlers/mcpclient.js +137 -6
  90. package/dist/handlers/orchestration.js +125 -40
  91. package/dist/handlers/output-schemas.js +24 -1
  92. package/dist/handlers/presence.js +99 -3
  93. package/dist/handlers/project.js +182 -28
  94. package/dist/handlers/prompts.js +157 -6
  95. package/dist/handlers/quest.js +224 -4
  96. package/dist/handlers/recall.js +237 -13
  97. package/dist/handlers/registry.js +167 -1
  98. package/dist/handlers/resources.js +288 -1
  99. package/dist/handlers/review.js +74 -11
  100. package/dist/handlers/run.js +498 -16
  101. package/dist/handlers/search.js +338 -15
  102. package/dist/handlers/session.js +643 -31
  103. package/dist/handlers/share.js +184 -8
  104. package/dist/handlers/shims.js +464 -1
  105. package/dist/handlers/skill.js +449 -67
  106. package/dist/handlers/survivors.js +120 -1
  107. package/dist/handlers/symbols.js +109 -8
  108. package/dist/handlers/syncops.js +302 -4
  109. package/dist/handlers/types.js +27 -1
  110. package/dist/harvest.js +191 -5
  111. package/dist/hours.js +156 -7
  112. package/dist/http-auth.js +321 -3
  113. package/dist/http-fast.d.ts.map +1 -1
  114. package/dist/http-fast.js +1308 -22
  115. package/dist/http-fast.js.map +1 -1
  116. package/dist/icons.js +47 -1
  117. package/dist/importers.js +268 -1
  118. package/dist/index.js +844 -2
  119. package/dist/index.js.map +1 -1
  120. package/dist/indexer.js +145 -4
  121. package/dist/intelligence.d.ts +16 -0
  122. package/dist/intelligence.d.ts.map +1 -1
  123. package/dist/intelligence.js +283 -31
  124. package/dist/intelligence.js.map +1 -1
  125. package/dist/internal-dispatch.js +212 -3
  126. package/dist/keyset.js +110 -1
  127. package/dist/knowledge-graph.js +176 -12
  128. package/dist/license.js +441 -2
  129. package/dist/logger.js +199 -2
  130. package/dist/maintenance.js +148 -2
  131. package/dist/mcp-client.js +262 -6
  132. package/dist/memory-artifacts.js +596 -32
  133. package/dist/migrate-prompt.js +124 -2
  134. package/dist/migrations.d.ts.map +1 -1
  135. package/dist/migrations.js +799 -42
  136. package/dist/migrations.js.map +1 -1
  137. package/dist/performance.js +228 -1
  138. package/dist/presence.js +140 -11
  139. package/dist/priority-embed.js +164 -5
  140. package/dist/providers/embedding-provider.js +196 -1
  141. package/dist/readonly-gate.js +29 -1
  142. package/dist/receipt.js +43 -1
  143. package/dist/rehydration.js +157 -9
  144. package/dist/reindex.js +88 -1
  145. package/dist/render-target.js +544 -21
  146. package/dist/render.js +280 -4
  147. package/dist/repl-guard.js +173 -1
  148. package/dist/replication-daemon-entrypoint.js +31 -1
  149. package/dist/replication-daemon.js +262 -2
  150. package/dist/rerank.js +142 -1
  151. package/dist/resilience.js +591 -1
  152. package/dist/reverse-bridge.js +360 -5
  153. package/dist/security.js +244 -1
  154. package/dist/session-seen.js +51 -3
  155. package/dist/setup.js +260 -1
  156. package/dist/skill-author.js +168 -5
  157. package/dist/spec-kit.js +191 -1
  158. package/dist/sqlite-busy.js +154 -1
  159. package/dist/statusline.js +315 -11
  160. package/dist/sub-agent.js +262 -13
  161. package/dist/summarizer.js +139 -13
  162. package/dist/symbols.js +283 -7
  163. package/dist/sync.js +359 -5
  164. package/dist/tasks-dispatch.js +84 -1
  165. package/dist/tasks.js +282 -1
  166. package/dist/token-budget.js +143 -1
  167. package/dist/tool-analytics.js +129 -7
  168. package/dist/tool-annotations.js +365 -1
  169. package/dist/tool-manifest-v2.json +1 -1
  170. package/dist/tool-manifest.json +1 -1
  171. package/dist/tool-profiles.js +75 -1
  172. package/dist/trace-harvest.js +244 -6
  173. package/dist/truth-cascade.d.ts +13 -0
  174. package/dist/truth-cascade.d.ts.map +1 -0
  175. package/dist/truth-cascade.js +4 -0
  176. package/dist/truth-cascade.js.map +1 -0
  177. package/dist/types.js +30 -1
  178. package/dist/ui-dashboard.js +50 -41
  179. package/dist/ulid.js +81 -1
  180. package/dist/usage-tracker.js +66 -1
  181. package/dist/validate.js +129 -1
  182. package/dist/vault.js +534 -1
  183. package/dist/vector-init.js +67 -1
  184. package/dist/vectors.js +184 -3
  185. package/dist/version-check.d.ts.map +1 -1
  186. package/dist/version-check.js +145 -4
  187. package/dist/version-check.js.map +1 -1
  188. package/dist/visibility.js +155 -19
  189. package/dist/wyrm-cli.js +2849 -101
  190. package/dist/wyrm-cli.js.map +1 -1
  191. package/dist/wyrm-guard.d.ts.map +1 -1
  192. package/dist/wyrm-guard.js +475 -14
  193. package/dist/wyrm-guard.js.map +1 -1
  194. package/dist/wyrm-loop.js +174 -3
  195. package/dist/wyrm-loop.js.map +1 -1
  196. package/dist/wyrm-manifest.json +1 -1
  197. package/dist/wyrm-statusline-daemon.js +11 -1
  198. package/dist/wyrm-statusline.js +56 -4
  199. package/dist/wyrm-ui.js +77 -9
  200. package/package.json +3 -2
@@ -1,13 +1,458 @@
1
- import{TOOL_ANNOTATIONS as _}from"../tool-annotations.js";import{renderResult as f,withGlyph as g}from"../render.js";import{asEnum as j,ValidationError as w}from"../validate.js";import{daemonOr as v}from"../daemon-writer.js";const x={type:"object",properties:{blocked:{type:"boolean"},matches:{type:"array",items:{type:"object",properties:{id:{type:"integer"},pattern:{type:"string"},scope:{type:"string"},quarantine_scope:{type:"string"},target:{type:"string"},description:{type:"string"},why_failed:{type:["string","null"]},severity:{type:"string"},occurrences:{type:"integer"},last_seen:{type:"string"},recorded_by_agent:{type:"string"},run_id:{type:["string","null"]},match:{type:"string",enum:["exact","fuzzy","target"]},confidence:{type:"number",minimum:0,maximum:1}},required:["id","pattern","scope","quarantine_scope","target","description","why_failed","severity","occurrences","last_seen","recorded_by_agent","run_id","match","confidence"]}},recorded_by_agent:{type:["string","null"]},run_id:{type:["string","null"]},confidence:{type:"number",minimum:0,maximum:1}},required:["blocked","matches","recorded_by_agent","run_id","confidence"]},b={type:["object","null"],properties:{requested:{type:"string"},authorized:{type:"boolean"},changed:{type:"boolean"}},required:["requested","authorized","changed"]};function k(n,p){return n?n.authorized?n.changed?"":` - promote:'${n.requested}' was a no-op (already ${p}-scoped)`:` - promote:'${n.requested}' IGNORED -- caller carries no explicit identity (pass actor/run_id, _meta['wyrm/actor'], or WYRM_AGENT_ID/WYRM_RUN_ID)`:""}const P=[{name:"wyrm_failure_record",description:"Use when an approach failed or something broke - log the dead end so nobody tries it again. Identical (scope, target, description) coalesces with occurrences++; when the root cause is fixed, stop flagging it via wyrm_failure_resolve. Run-scoped failures quarantine until confirmed.",inputSchema:{type:"object",properties:{projectPath:{type:"string",description:"Global if omitted"},scope:{type:"string",enum:["file","symbol","command","prompt","edit"]},target:{type:"string",description:"File, symbol, command, or prompt"},description:{type:"string",description:"What was tried"},why_failed:{type:"string",description:"Diagnosis if known"},severity:{type:"string",enum:["low","medium","high","critical"]},promote:{type:"string",enum:["project","global"],description:"Widen the tier (explicitly attributed callers only)"}},required:["scope","target","description"]},outputSchema:{type:"object",properties:{id:{type:"integer"},occurrences:{type:"integer"},scope:{type:"string"},target:{type:"string"},quarantine_scope:{type:"string"},run_id:{type:["string","null"]},promote:b},required:["id","occurrences","scope","target","quarantine_scope","run_id","promote"]},annotations:_.wyrm_failure_record,aliases:[],handler:async(n,{store:p,failures:c})=>{const{projectPath:d,scope:s,target:a,description:l,why_failed:u,severity:o,promote:t}=n,i=j("severity",o,["low","medium","high","critical"]),y=d?p.getProject(d):null;let r=await v("failure_record",y?.id??null,{scope:s,target:a,description:l,why_failed:u,severity:i},()=>c.record({project_id:y?.id??null,scope:s,target:a,description:l,why_failed:u,severity:i})),m=null;if(t==="project"||t==="global"){const e=c.promote(r.id,t);e.authorized&&(r=e.row??r),m={requested:t,authorized:e.authorized,changed:e.changed,quarantine_scope:e.row?.quarantine_scope??r.quarantine_scope??null}}const h={id:r.id,occurrences:r.occurrences,scope:s,target:a,quarantine_scope:r.quarantine_scope,run_id:r.run_id??null,promote:m};return f(h,(e,$)=>{const q=e.run_id?` - ${e.quarantine_scope}-scoped (run ${e.run_id})`:` - ${e.quarantine_scope}-scoped`;return g($.brand,`Failure #${e.id} recorded (x${e.occurrences}) -- ${e.scope}:${e.target}${q}`+k(e.promote,e.quarantine_scope))})}},{name:"wyrm_failure_check",description:"Use before proposing or executing any fix, command, or approach - did this fail before? Is it a known landmine? Counter-pattern memory: returns unresolved matching failures (empty = safe to proceed); show the mistakes already made on a project with wyrm_failure_list. Subagents: check before retrying anything flagged.",inputSchema:{type:"object",properties:{projectPath:{type:"string"},scope:{type:"string",enum:["file","symbol","command","prompt","edit"]},target:{type:"string"},description:{type:"string"},run_scope:{type:"string",enum:["run","project","global"],description:"Quarantine tier filter (run = same-run only)"}},required:["scope","target","description"]},outputSchema:x,annotations:_.wyrm_failure_check,aliases:[],handler:async(n,{store:p,raw:c,failures:d})=>{const{projectPath:s,scope:a,target:l,description:u,run_scope:o}=n;if(typeof a!="string"||!a)throw new w("scope","is required (e.g. command, edit, approach)");if(typeof l!="string"||!l)throw new w("target","is required (the action/command/code about to run)");if(typeof u!="string"||!u)throw new w("description","is required (what the action does)");const t=s?p.getProject(s):null,i=o==="run"||o==="project"||o==="global"?o:"any",y=d.checkVerdict(a,l,u,t?.id??null,{runScope:i});if(y.blocked){d.recordBlock(y,t?.id??null);try{const{logSavings:r}=await import("../statusline.js"),m=c(),h=t?m.prepare("SELECT id FROM sessions WHERE project_id = ? ORDER BY created_at DESC LIMIT 1").get(t.id):void 0;r(m,"wyrm_failure_check","blocked_retry",1500*y.matches.length,h?.id)}catch{}}return f(y,(r,m)=>{if(!r.blocked)return g(m.ok,"No matching failures -- safe to proceed.");const h=r.matches.map(e=>`${g(m.fail,`#${e.id} ${e.scope}:${e.target}`)} -- tried ${e.occurrences}x (${e.severity}); last ${e.last_seen}
2
- ${e.description}`+(e.why_failed?`
3
- Why: ${e.why_failed}`:"")+(e.run_id?`
4
- Recorded by ${e.recorded_by_agent} in run ${e.run_id} (${e.quarantine_scope}-scoped)`:"")).join(`
5
-
6
- `);return`${g(m.brand,`${r.matches.length} failure(s) match this action:`)}
7
-
8
- ${h}`})}},{name:"wyrm_failure_list",description:"List unresolved failures for a project (or globally), most-recent-first.",inputSchema:{type:"object",properties:{projectPath:{type:"string",description:"Project path (omit for global)"},limit:{type:"number",description:"Max rows (default 20, max 200)"}}},outputSchema:{type:"object",properties:{count:{type:"integer"},failures:{type:"array",items:{type:"object",properties:{id:{type:"integer"},severity:{type:"string",enum:["low","medium","high","critical"]},scope:{type:"string"},target:{type:"string"},occurrences:{type:"integer"},last_seen:{type:"string"},description:{type:"string"}},required:["id","severity","scope","target","occurrences","last_seen","description"]}}},required:["count","failures"]},annotations:_.wyrm_failure_list,aliases:[],handler:(n,{store:p,failures:c})=>{const{projectPath:d,limit:s}=n,a=d?p.getProject(d):null,l=Math.min(Math.max(1,s??20),200),u=c.list(a?.id??null,l),o={count:u.length,failures:u.map(t=>({id:t.id,severity:t.severity,scope:t.scope,target:t.target,occurrences:t.occurrences,last_seen:t.last_seen,description:t.description}))};return f(o,(t,i)=>{if(t.count===0)return g(i.brand,"No unresolved failures.");const y=t.failures.map(r=>`#${r.id} [${r.severity}] ${r.scope}:${r.target} x${r.occurrences} (last ${r.last_seen})
9
- ${r.description}`).join(`
10
-
11
- `);return`${g(i.brand,`${t.count} unresolved failure(s):`)}
12
-
13
- ${y}`},{summary:(t,i)=>t.count===0?g(i.brand,"No unresolved failures."):g(i.brand,`${t.count} unresolved failure(s):`)})}},{name:"wyrm_failure_resolve",description:"Mark a failure as resolved (the underlying issue was fixed). Keeps history but excludes from check() results.",inputSchema:{type:"object",properties:{id:{type:"number",description:"Failure pattern ID"},note:{type:"string",description:"How it was resolved"},promote:{type:"string",enum:["project","global"],description:"Widen the tier before resolving (same authority rule as wyrm_failure_record)."}},required:["id"]},outputSchema:{type:"object",properties:{id:{type:"integer"},resolved:{type:"boolean",enum:[!0]},promote:b},required:["id","resolved","promote"]},annotations:_.wyrm_failure_resolve,aliases:[],handler:(n,{failures:p})=>{const{id:c,note:d,promote:s}=n;let a=null;if(s==="project"||s==="global"){const o=p.promote(c,s);a={requested:s,authorized:o.authorized,changed:o.changed,quarantine_scope:o.row?.quarantine_scope??null}}return p.resolve(c,d)?f({id:c,resolved:!0,promote:a},(o,t)=>{let i="";return o.promote&&!o.promote.authorized?i=` promote:'${o.promote.requested}' IGNORED -- caller carries no explicit identity.`:o.promote?.changed&&(i=` Promoted to ${o.promote.quarantine_scope}-scoped.`),g(t.ok,`Failure #${o.id} resolved.${i}`)}):{content:[{type:"text",text:`Failure #${c} not found.`}],isError:!0}}}];export{x as FAILURE_CHECK_OUTPUT_SCHEMA,P as failureToolSpecs};
1
+ /**
2
+ * Failure domain — ToolSpec contract v2 (v7 F3 T026, hot-path extraction).
3
+ *
4
+ * wyrm_failure_check / wyrm_failure_record / wyrm_failure_list /
5
+ * wyrm_failure_resolve, moved VERBATIM from the index.ts dispatch switch +
6
+ * buildAllTools(). The T012 daemonOr write seam, the T014 verdict dual-emit,
7
+ * the T015 ambient-gated promote flag (Article VII: unauthorized promotion is
8
+ * reported, never silent) and the T017 recordBlock ledger all moved with
9
+ * their handlers unchanged.
10
+ *
11
+ * FAILURE_CHECK_OUTPUT_SCHEMA moved here from handlers/output-schemas.ts per
12
+ * the T018 contract ("when T026 extracts the owning domain, the schema moves
13
+ * onto the domain's ToolSpec and the entry there is deleted"). Its field
14
+ * descriptions were dropped in the same commit: the schema is advertised on
15
+ * the frozen default surface and the ≤8K-token pin (spec §7 criterion 1) now
16
+ * also funds the six NEW hot-path outputSchemas — structure is the contract,
17
+ * prose was advisory (the T022/T025 schema-chars-fund-the-surface trade).
18
+ *
19
+ * @copyright 2026 Ghost Protocol (Pvt) Ltd.
20
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
21
+ */
22
+ import { readFileSync } from 'fs';
23
+ import { homedir } from 'os';
24
+ import { join } from 'path';
25
+ import { STALE_ANCHOR_FLAG } from '../failure-patterns.js';
26
+ import { TOOL_ANNOTATIONS } from '../tool-annotations.js';
27
+ import { renderResult, withGlyph } from '../render.js';
28
+ import { asEnum, ValidationError } from '../validate.js';
29
+ import { daemonOr } from '../daemon-writer.js';
30
+ /**
31
+ * 7.4.0 — enforcement transparency for blocked verdicts. Reports whether the
32
+ * wyrm-guard PreToolUse hook is actually installed AND not downgraded, so a
33
+ * "blocked" verdict is never mistaken for harness-level enforcement on a
34
+ * machine where it is advisory-only. Cached 60s (one settings-file read),
35
+ * fail-quiet: if status cannot be determined, say nothing rather than claim
36
+ * either world. ASCII-only per the render contract.
37
+ */
38
+ let _guardEnfCache = null;
39
+ export function _resetGuardEnforcementCache() { _guardEnfCache = null; }
40
+ function guardHookInstalled() {
41
+ // Same file + pattern wyrmGuardHookStatus (autoconfig.ts) scans, inlined so
42
+ // the hot path stays free of autoconfig's import.meta/child_process weight.
43
+ const settingsPath = process.env.CLAUDE_SETTINGS ?? join(homedir(), '.claude', 'settings.json');
44
+ try {
45
+ const settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
46
+ for (const groups of Object.values(settings.hooks ?? {})) {
47
+ if (!Array.isArray(groups))
48
+ continue;
49
+ for (const g of groups) {
50
+ for (const h of g?.hooks ?? []) {
51
+ if (h?.command && /wyrm-guard/.test(h.command))
52
+ return true;
53
+ }
54
+ }
55
+ }
56
+ }
57
+ catch { /* missing/invalid settings -> not installed */ }
58
+ return false;
59
+ }
60
+ function guardEnforcementLine() {
61
+ const now = Date.now();
62
+ if (_guardEnfCache && now - _guardEnfCache.at < 60_000)
63
+ return _guardEnfCache.line;
64
+ const mode = (process.env.WYRM_GUARD_MODE ?? 'block').toLowerCase();
65
+ const line = guardHookInstalled() && mode === 'block'
66
+ ? '\n\nEnforcement: wyrm-guard hook ACTIVE -- identity-matching repeats of these are hard-blocked at the harness (PreToolUse).'
67
+ : '\n\nEnforcement: ADVISORY ONLY on this machine -- the wyrm-guard PreToolUse hook is not enforcing (not installed, or WYRM_GUARD_MODE=warn/off). Treat this as a hard stop; run `wyrm guard` to enforce it.';
68
+ _guardEnfCache = { at: now, line };
69
+ return line;
70
+ }
71
+ /** Canonical wyrm_failure_check verdict shape (FailureCheckVerdict, T014). */
72
+ export const FAILURE_CHECK_OUTPUT_SCHEMA = {
73
+ type: "object",
74
+ properties: {
75
+ blocked: { type: "boolean" },
76
+ matches: {
77
+ type: "array",
78
+ items: {
79
+ type: "object",
80
+ properties: {
81
+ id: { type: "integer" },
82
+ pattern: { type: "string" },
83
+ scope: { type: "string" },
84
+ quarantine_scope: { type: "string" },
85
+ target: { type: "string" },
86
+ description: { type: "string" },
87
+ why_failed: { type: ["string", "null"] },
88
+ severity: { type: "string" },
89
+ occurrences: { type: "integer" },
90
+ last_seen: { type: "string" },
91
+ recorded_by_agent: { type: "string" },
92
+ run_id: { type: ["string", "null"] },
93
+ match: { type: "string", enum: ["exact", "fuzzy", "target"] },
94
+ confidence: { type: "number", minimum: 0, maximum: 1 },
95
+ },
96
+ required: [
97
+ "id", "pattern", "scope", "quarantine_scope", "target", "description",
98
+ "why_failed", "severity", "occurrences", "last_seen",
99
+ "recorded_by_agent", "run_id", "match", "confidence",
100
+ ],
101
+ },
102
+ },
103
+ recorded_by_agent: { type: ["string", "null"] },
104
+ run_id: { type: ["string", "null"] },
105
+ confidence: { type: "number", minimum: 0, maximum: 1 },
106
+ },
107
+ required: ["blocked", "matches", "recorded_by_agent", "run_id", "confidence"],
108
+ };
109
+ /** Structured outcome of a promote flag (failure_record / failure_resolve). */
110
+ const PROMOTE_OUTCOME_SCHEMA = {
111
+ type: ["object", "null"],
112
+ properties: {
113
+ requested: { type: "string" },
114
+ authorized: { type: "boolean" },
115
+ changed: { type: "boolean" },
116
+ // T027 budget trim: quarantine_scope still rides the body undeclared.
117
+ },
118
+ required: ["requested", "authorized", "changed"],
119
+ };
120
+ /** The unauthorized-promotion note (Article VII: reported, never silent). */
121
+ function promoteNoteFor(p, quarantineScope) {
122
+ if (!p)
123
+ return '';
124
+ if (!p.authorized) {
125
+ return ` - promote:'${p.requested}' IGNORED -- caller carries no explicit identity (pass actor/run_id, _meta['wyrm/actor'], or WYRM_AGENT_ID/WYRM_RUN_ID)`;
126
+ }
127
+ if (!p.changed)
128
+ return ` - promote:'${p.requested}' was a no-op (already ${quarantineScope}-scoped)`;
129
+ return '';
130
+ }
131
+ export const failureToolSpecs = [
132
+ {
133
+ name: "wyrm_failure_record",
134
+ description: "Use when an approach failed or something broke - log the dead end so nobody tries it again. Identical (scope, target, description) coalesces with occurrences++; when the root cause is fixed, stop flagging it via wyrm_failure_resolve. Run-scoped failures quarantine until confirmed.",
135
+ inputSchema: {
136
+ type: "object",
137
+ properties: {
138
+ // v7 F3 (T026): property prose compressed to fund the hot-path
139
+ // outputSchemas under the 8K default-surface pin (T022/T025 trade).
140
+ projectPath: { type: "string", description: "Global if omitted" },
141
+ scope: { type: "string", enum: ["file", "symbol", "command", "prompt", "edit"] },
142
+ target: { type: "string", description: "File, symbol, command, or prompt" },
143
+ description: { type: "string", description: "What was tried" },
144
+ why_failed: { type: "string", description: "Diagnosis if known" },
145
+ severity: { type: "string", enum: ["low", "medium", "high", "critical"] },
146
+ promote: { type: "string", enum: ["project", "global"], description: "Widen the tier (explicitly attributed callers only)" },
147
+ },
148
+ required: ["scope", "target", "description"],
149
+ },
150
+ outputSchema: {
151
+ type: "object",
152
+ properties: {
153
+ id: { type: "integer" },
154
+ occurrences: { type: "integer" },
155
+ scope: { type: "string" },
156
+ target: { type: "string" },
157
+ quarantine_scope: { type: "string" },
158
+ run_id: { type: ["string", "null"] },
159
+ promote: PROMOTE_OUTCOME_SCHEMA,
160
+ },
161
+ required: ["id", "occurrences", "scope", "target", "quarantine_scope", "run_id", "promote"],
162
+ },
163
+ annotations: TOOL_ANNOTATIONS.wyrm_failure_record,
164
+ aliases: [],
165
+ handler: async (args, { store, failures }) => {
166
+ // `files` rides UNDECLARED (the content-param precedent near
167
+ // failure-patterns.ts record(), the T022 lean-union rule): the
168
+ // advertised inputSchema — and therefore the ListTools wire the 8K pin
169
+ // measures — does not change. Callers that know the staleness oracle
170
+ // pass the source files this failure is about; everyone else is
171
+ // byte-identical to before.
172
+ const { projectPath, scope, target, description, why_failed, severity, promote, files } = args;
173
+ // Closed enum, mirrors the failure_patterns.severity schema CHECK:
174
+ // boundary-enforced (the MCP SDK treats inputSchema as advisory) so a
175
+ // one-token model typo ('normal', 'sev1') is a clean structured
176
+ // client error here — never a daemon-side SQLITE_CONSTRAINT round
177
+ // trip on the forwarded write.
178
+ const safeSeverity = asEnum('severity', severity, ['low', 'medium', 'high', 'critical']);
179
+ const project = projectPath ? store.getProject(projectPath) : null;
180
+ // v7 F2 (T012): canonical write seam — failure_record (project_id may
181
+ // legitimately be null: global cross-project failures).
182
+ let rec = await daemonOr('failure_record', project?.id ?? null, { scope, target, description, why_failed, severity: safeSeverity }, () => failures.record({
183
+ project_id: project?.id ?? null,
184
+ scope, target, description, why_failed, severity: safeSeverity,
185
+ }));
186
+ // Staleness oracle (migration 30): anchor the failure to the source
187
+ // files it is about, so a later check can tell a still-true block from
188
+ // one whose source has since changed. Requires a resolved project (the
189
+ // root anchors resolve against); traversal-escaping paths are rejected
190
+ // and at most 8 anchors are kept — all inside recordAnchors, which is
191
+ // best-effort by contract (never throws, incl. daemon-mode contention).
192
+ let anchored = 0;
193
+ if (Array.isArray(files) && files.length > 0 && project?.path) {
194
+ // SECURITY: only a FRESHLY-created failure (occurrences === 1, i.e. this
195
+ // call inserted the row) may introduce new anchor paths. record()
196
+ // coalesces a repeat signature onto one id, so a re-record that matched
197
+ // an EXISTING failure (occurrences > 1) can only REFRESH paths already
198
+ // anchored to it — never attach a new (decoy) anchor to a block it does
199
+ // not own and drift it to bypass the firewall (crucible CRIT 2026-07-03).
200
+ anchored = failures.recordAnchors(rec.id, project.path, files.filter((f) => typeof f === 'string'), rec.occurrences === 1);
201
+ }
202
+ // v7 F2 (T015): orchestrator promote flag. Boundary-validated to the
203
+ // closed enum and applied OUTSIDE the daemon hop on purpose — the
204
+ // authority decision must read THIS caller's envelope, not the
205
+ // daemon's. promote() is ambient-gated (Article VII): an unattributed
206
+ // caller's flag is reported as ignored, never honored and NEVER
207
+ // silent.
208
+ let promoteOutcome = null;
209
+ if (promote === 'project' || promote === 'global') {
210
+ const p = failures.promote(rec.id, promote);
211
+ if (p.authorized)
212
+ rec = p.row ?? rec;
213
+ promoteOutcome = {
214
+ requested: promote, authorized: p.authorized, changed: p.changed,
215
+ quarantine_scope: p.row?.quarantine_scope ?? rec.quarantine_scope ?? null,
216
+ };
217
+ }
218
+ const body = {
219
+ id: rec.id,
220
+ occurrences: rec.occurrences,
221
+ scope,
222
+ target,
223
+ // v7 F2 (T014): surface the run-tag. record() defaults quarantine to
224
+ // 'run' when the envelope carries a run_id (same-run siblings see it
225
+ // instantly; everyone else after T015 promotion), else project/global.
226
+ quarantine_scope: rec.quarantine_scope,
227
+ run_id: rec.run_id ?? null,
228
+ promote: promoteOutcome,
229
+ // Staleness oracle: ADDITIVE and rides the body undeclared (the T027
230
+ // quarantine_scope precedent) — present ONLY when anchors were
231
+ // stored, so every anchor-less record stays byte-identical.
232
+ ...(anchored > 0 ? { anchors: anchored } : {}),
233
+ };
234
+ return renderResult(body, (b, g) => {
235
+ const tag = b.run_id
236
+ ? ` - ${b.quarantine_scope}-scoped (run ${b.run_id})`
237
+ : ` - ${b.quarantine_scope}-scoped`;
238
+ const anchorNote = b.anchors ? ` - anchored to ${b.anchors} file(s)` : '';
239
+ return withGlyph(g.brand, `Failure #${b.id} recorded (x${b.occurrences}) -- ${b.scope}:${b.target}${tag}${anchorNote}` +
240
+ promoteNoteFor(b.promote, b.quarantine_scope));
241
+ });
242
+ },
243
+ },
244
+ {
245
+ name: "wyrm_failure_check",
246
+ description: "Use before proposing or executing any fix, command, or approach - did this fail before? Is it a known landmine? Counter-pattern memory: returns unresolved matching failures (empty = safe to proceed); show the mistakes already made on a project with wyrm_failure_list. Subagents: check before retrying anything flagged.",
247
+ inputSchema: {
248
+ type: "object",
249
+ properties: {
250
+ projectPath: { type: "string" },
251
+ scope: { type: "string", enum: ["file", "symbol", "command", "prompt", "edit"] },
252
+ target: { type: "string" },
253
+ description: { type: "string" },
254
+ run_scope: { type: "string", enum: ["run", "project", "global"], description: "Quarantine tier filter (run = same-run only)" },
255
+ },
256
+ required: ["scope", "target", "description"],
257
+ },
258
+ outputSchema: FAILURE_CHECK_OUTPUT_SCHEMA,
259
+ annotations: TOOL_ANNOTATIONS.wyrm_failure_check,
260
+ aliases: [],
261
+ handler: async (args, { store, raw, failures }) => {
262
+ const { projectPath, scope, target, description, run_scope } = args;
263
+ // The MCP SDK treats inputSchema as advisory — validate required inputs
264
+ // here so a missing field is a clean, named ValidationError rather than a
265
+ // raw TypeError deep in checkVerdict's normalizer (.toLowerCase on undefined).
266
+ if (typeof scope !== 'string' || !scope)
267
+ throw new ValidationError('scope', 'is required (e.g. command, edit, approach)');
268
+ if (typeof target !== 'string' || !target)
269
+ throw new ValidationError('target', 'is required (the action/command/code about to run)');
270
+ if (typeof description !== 'string' || !description)
271
+ throw new ValidationError('description', 'is required (what the action does)');
272
+ const project = projectPath ? store.getProject(projectPath) : null;
273
+ // v7 F2 (T014): the structured verdict is the canonical shape; the 6.x
274
+ // prose is DERIVED from the same verdict by the T019 renderer (drift
275
+ // impossible by construction). Boundary-validate run_scope to the
276
+ // closed enum — anything else means 'any'.
277
+ const runScope = run_scope === 'run' || run_scope === 'project' || run_scope === 'global'
278
+ ? run_scope : 'any';
279
+ let verdict = failures.checkVerdict(scope, target, description, project?.id ?? null, { runScope });
280
+ // STALENESS ORACLE (migration 30, PROTOCOL.md §10.2.5) — the SHARED
281
+ // helper (FailurePatterns.staleAnchorIds) both this handler and the
282
+ // wyrm-guard block tiers inherit: a file/symbol-scoped match whose
283
+ // anchored source has POSITIVELY drifted since recording downgrades
284
+ // from hard block to advisory, carrying the stale_anchor flag; an
285
+ // exact-signature match for the current attempt NEVER downgrades.
286
+ // Fail-open by construction (missing files / no root / any fs error ⇒
287
+ // empty set ⇒ this whole branch is skipped and the result — including
288
+ // both wire channels — is byte-identical to before).
289
+ const staleIds = failures.staleAnchorIds(verdict.matches, project?.path ?? null);
290
+ if (staleIds.size > 0) {
291
+ const matches = verdict.matches.map((m) => staleIds.has(m.id) ? { ...m, stale_anchor: STALE_ANCHOR_FLAG } : m);
292
+ // Re-point the top-level attribution (recorded_by_agent/run_id, set by
293
+ // checkVerdict from matches[0]) at the first FIRM match — matches[0] may
294
+ // now be a downgraded advisory, which would mis-credit the block.
295
+ const firm = matches.find((m) => !m.stale_anchor);
296
+ verdict = {
297
+ ...verdict,
298
+ // Only non-downgraded matches keep the refuse-to-repeat signal.
299
+ blocked: matches.some((m) => !m.stale_anchor),
300
+ matches,
301
+ ...(firm ? { recorded_by_agent: firm.recorded_by_agent, run_id: firm.run_id } : {}),
302
+ };
303
+ }
304
+ // 7.4.0 audit fix: say WHERE enforcement actually happens. This tool's
305
+ // verdict is advisory by nature (an MCP result cannot stop the model);
306
+ // the hard gate is the wyrm-guard PreToolUse hook. Surface which world
307
+ // this machine is in so "blocked" is never mistaken for enforced when
308
+ // the hook is absent (or downgraded via WYRM_GUARD_MODE).
309
+ const enforcementLine = verdict.blocked ? guardEnforcementLine() : '';
310
+ if (verdict.blocked) {
311
+ // v7 F2 (T017): count the prevented repeat — one blocked verdict files
312
+ // ONE failure_blocks row attributed to the CHECKING agent/run (ambient
313
+ // envelope), feeding wyrm_stats view=failures. recordBlock is
314
+ // failure-isolated inside (never throws): a read tool must never fail
315
+ // because analytics could not be written.
316
+ failures.recordBlock(verdict, project?.id ?? null);
317
+ // Spec 018: log blocked-retry savings. Each blocked retry saves
318
+ // ~1500 tokens of failed exploration (conservative estimate).
319
+ try {
320
+ const { logSavings } = await import('../statusline.js');
321
+ const rawDb = raw();
322
+ const lastSession = project ? rawDb.prepare(`SELECT id FROM sessions WHERE project_id = ? ORDER BY created_at DESC LIMIT 1`).get(project.id) : undefined;
323
+ logSavings(rawDb, 'wyrm_failure_check', 'blocked_retry', 1500 * verdict.matches.length, lastSession?.id);
324
+ }
325
+ catch { /* best-effort */ }
326
+ }
327
+ return renderResult(verdict, (b, g) => {
328
+ // blocked=false with matches present can ONLY arise from the staleness
329
+ // downgrade above (checkVerdict itself sets blocked ⇔ matches.length>0),
330
+ // so the anchor-less text wire stays byte-identical to before.
331
+ if (!b.blocked && b.matches.length === 0)
332
+ return withGlyph(g.ok, 'No matching failures -- safe to proceed.');
333
+ const list = b.matches.map(m => `${withGlyph(g.fail, `#${m.id} ${m.scope}:${m.target}`)} -- tried ${m.occurrences}x (${m.severity}); last ${m.last_seen}\n ${m.description}` +
334
+ (m.why_failed ? `\n Why: ${m.why_failed}` : '') +
335
+ (m.run_id ? `\n Recorded by ${m.recorded_by_agent} in run ${m.run_id} (${m.quarantine_scope}-scoped)` : '') +
336
+ (m.stale_anchor ? `\n STALE ANCHOR: ${m.stale_anchor}` : '')).join('\n\n');
337
+ if (!b.blocked) {
338
+ return `${withGlyph(g.warn, `${b.matches.length} recorded failure(s) match, but their anchored source changed since -- advisory only, re-verify before trusting or dismissing them:`)}\n\n${list}`;
339
+ }
340
+ return `${withGlyph(g.brand, `${b.matches.length} failure(s) match this action:`)}\n\n${list}${enforcementLine}`;
341
+ });
342
+ },
343
+ },
344
+ {
345
+ name: "wyrm_failure_list",
346
+ description: "List unresolved failures for a project (or globally), most-recent-first.",
347
+ inputSchema: {
348
+ type: "object",
349
+ properties: {
350
+ projectPath: { type: "string", description: "Project path (omit for global)" },
351
+ limit: { type: "number", description: "Max rows (default 20, max 200)" },
352
+ },
353
+ },
354
+ outputSchema: {
355
+ type: "object",
356
+ properties: {
357
+ count: { type: "integer" },
358
+ failures: {
359
+ type: "array",
360
+ items: {
361
+ type: "object",
362
+ properties: {
363
+ id: { type: "integer" },
364
+ severity: { type: "string", enum: ["low", "medium", "high", "critical"] },
365
+ scope: { type: "string" },
366
+ target: { type: "string" },
367
+ occurrences: { type: "integer" },
368
+ last_seen: { type: "string" },
369
+ description: { type: "string" },
370
+ },
371
+ required: ["id", "severity", "scope", "target", "occurrences", "last_seen", "description"],
372
+ },
373
+ },
374
+ },
375
+ required: ["count", "failures"],
376
+ },
377
+ annotations: TOOL_ANNOTATIONS.wyrm_failure_list,
378
+ aliases: [],
379
+ handler: (args, { store, failures }) => {
380
+ const { projectPath, limit } = args;
381
+ const project = projectPath ? store.getProject(projectPath) : null;
382
+ const cap = Math.min(Math.max(1, limit ?? 20), 200);
383
+ const rows = failures.list(project?.id ?? null, cap);
384
+ const body = {
385
+ count: rows.length,
386
+ failures: rows.map((r) => ({
387
+ id: r.id, severity: r.severity, scope: r.scope, target: r.target,
388
+ occurrences: r.occurrences, last_seen: r.last_seen, description: r.description,
389
+ })),
390
+ };
391
+ return renderResult(body, (b, g) => {
392
+ if (b.count === 0)
393
+ return withGlyph(g.brand, 'No unresolved failures.');
394
+ const list = b.failures.map(r => `#${r.id} [${r.severity}] ${r.scope}:${r.target} x${r.occurrences} (last ${r.last_seen})\n ${r.description}`).join('\n\n');
395
+ return `${withGlyph(g.brand, `${b.count} unresolved failure(s):`)}\n\n${list}`;
396
+ }, {
397
+ // WYRM_CHANNEL=structured: the per-row failure detail rides the body;
398
+ // the text channel keeps the count roll-up.
399
+ summary: (b, g) => b.count === 0
400
+ ? withGlyph(g.brand, 'No unresolved failures.')
401
+ : withGlyph(g.brand, `${b.count} unresolved failure(s):`),
402
+ });
403
+ },
404
+ },
405
+ {
406
+ name: "wyrm_failure_resolve",
407
+ description: "Mark a failure as resolved (the underlying issue was fixed). Keeps history but excludes from check() results.",
408
+ inputSchema: {
409
+ type: "object",
410
+ properties: {
411
+ id: { type: "number", description: "Failure pattern ID" },
412
+ note: { type: "string", description: "How it was resolved" },
413
+ promote: { type: "string", enum: ["project", "global"], description: "Widen the tier before resolving (same authority rule as wyrm_failure_record)." },
414
+ },
415
+ required: ["id"],
416
+ },
417
+ outputSchema: {
418
+ type: "object",
419
+ properties: {
420
+ id: { type: "integer" },
421
+ resolved: { type: "boolean", enum: [true] },
422
+ promote: PROMOTE_OUTCOME_SCHEMA,
423
+ },
424
+ required: ["id", "resolved", "promote"],
425
+ },
426
+ annotations: TOOL_ANNOTATIONS.wyrm_failure_resolve,
427
+ aliases: [],
428
+ handler: (args, { failures }) => {
429
+ const { id, note, promote } = args;
430
+ // v7 F2 (T015): optional promote-before-resolve. The lesson keeps the
431
+ // widened tier in history, and if the failure ever RECURS (record()'s
432
+ // dedup path sets resolved=0 again) it is instantly visible at the
433
+ // promoted tier instead of re-quarantining to a dead run. Same
434
+ // ambient authority rule as wyrm_failure_record.
435
+ let promoteOutcome = null;
436
+ if (promote === 'project' || promote === 'global') {
437
+ const p = failures.promote(id, promote);
438
+ promoteOutcome = {
439
+ requested: promote, authorized: p.authorized, changed: p.changed,
440
+ quarantine_scope: p.row?.quarantine_scope ?? null,
441
+ };
442
+ }
443
+ const row = failures.resolve(id, note);
444
+ if (!row)
445
+ return { content: [{ type: "text", text: `Failure #${id} not found.` }], isError: true };
446
+ const body = { id, resolved: true, promote: promoteOutcome };
447
+ return renderResult(body, (b, g) => {
448
+ let note2 = '';
449
+ if (b.promote && !b.promote.authorized)
450
+ note2 = ` promote:'${b.promote.requested}' IGNORED -- caller carries no explicit identity.`;
451
+ else if (b.promote?.changed)
452
+ note2 = ` Promoted to ${b.promote.quarantine_scope}-scoped.`;
453
+ return withGlyph(g.ok, `Failure #${b.id} resolved.${note2}`);
454
+ });
455
+ },
456
+ },
457
+ ];
458
+ //# sourceMappingURL=failure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"failure.js","sourceRoot":"","sources":["../../src/handlers/failure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"failure.js","sourceRoot":"","sources":["../../src/handlers/failure.ts"],"names":[],"mappings":"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"}