daftari 1.29.0 → 1.31.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 (369) hide show
  1. package/CHANGELOG.md +281 -0
  2. package/README.md +263 -9
  3. package/dist/access/rbac.d.ts +1 -0
  4. package/dist/access/rbac.d.ts.map +1 -1
  5. package/dist/access/rbac.js +7 -0
  6. package/dist/access/rbac.js.map +1 -1
  7. package/dist/asof/git-read.d.ts +17 -0
  8. package/dist/asof/git-read.d.ts.map +1 -0
  9. package/dist/asof/git-read.js +163 -0
  10. package/dist/asof/git-read.js.map +1 -0
  11. package/dist/asof/index.d.ts +2 -0
  12. package/dist/asof/index.d.ts.map +1 -0
  13. package/dist/asof/index.js +151 -0
  14. package/dist/asof/index.js.map +1 -0
  15. package/dist/asof/report.d.ts +11 -0
  16. package/dist/asof/report.d.ts.map +1 -0
  17. package/dist/asof/report.js +119 -0
  18. package/dist/asof/report.js.map +1 -0
  19. package/dist/asof/snapshot.d.ts +72 -0
  20. package/dist/asof/snapshot.d.ts.map +1 -0
  21. package/dist/asof/snapshot.js +207 -0
  22. package/dist/asof/snapshot.js.map +1 -0
  23. package/dist/audit/checks/broken_refs.d.ts +1 -1
  24. package/dist/audit/checks/broken_refs.d.ts.map +1 -1
  25. package/dist/audit/checks/broken_refs.js +77 -22
  26. package/dist/audit/checks/broken_refs.js.map +1 -1
  27. package/dist/audit/collect.d.ts +1 -0
  28. package/dist/audit/collect.d.ts.map +1 -1
  29. package/dist/audit/collect.js +22 -2
  30. package/dist/audit/collect.js.map +1 -1
  31. package/dist/audit/index.d.ts.map +1 -1
  32. package/dist/audit/index.js +9 -3
  33. package/dist/audit/index.js.map +1 -1
  34. package/dist/audit/links.d.ts.map +1 -1
  35. package/dist/audit/links.js +9 -3
  36. package/dist/audit/links.js.map +1 -1
  37. package/dist/audit/report.d.ts.map +1 -1
  38. package/dist/audit/report.js +2 -0
  39. package/dist/audit/report.js.map +1 -1
  40. package/dist/audit/types.d.ts +4 -1
  41. package/dist/audit/types.d.ts.map +1 -1
  42. package/dist/audit/types.js.map +1 -1
  43. package/dist/backfill/apply.js +2 -2
  44. package/dist/backfill/apply.js.map +1 -1
  45. package/dist/backfill/derive.d.ts.map +1 -1
  46. package/dist/backfill/derive.js +1 -0
  47. package/dist/backfill/derive.js.map +1 -1
  48. package/dist/backfill/plan.js +2 -2
  49. package/dist/backfill/plan.js.map +1 -1
  50. package/dist/cli.d.ts.map +1 -1
  51. package/dist/cli.js +36 -0
  52. package/dist/cli.js.map +1 -1
  53. package/dist/consolidate/call-budget.d.ts +3 -0
  54. package/dist/consolidate/call-budget.d.ts.map +1 -0
  55. package/dist/consolidate/call-budget.js +37 -0
  56. package/dist/consolidate/call-budget.js.map +1 -0
  57. package/dist/consolidate/constants.d.ts +1 -0
  58. package/dist/consolidate/constants.d.ts.map +1 -1
  59. package/dist/consolidate/constants.js +5 -0
  60. package/dist/consolidate/constants.js.map +1 -1
  61. package/dist/consolidate/index.d.ts.map +1 -1
  62. package/dist/consolidate/index.js +96 -27
  63. package/dist/consolidate/index.js.map +1 -1
  64. package/dist/court/docket.d.ts +39 -0
  65. package/dist/court/docket.d.ts.map +1 -0
  66. package/dist/court/docket.js +103 -0
  67. package/dist/court/docket.js.map +1 -0
  68. package/dist/court/index.d.ts +2 -0
  69. package/dist/court/index.d.ts.map +1 -0
  70. package/dist/court/index.js +169 -0
  71. package/dist/court/index.js.map +1 -0
  72. package/dist/court/precedent.d.ts +18 -0
  73. package/dist/court/precedent.d.ts.map +1 -0
  74. package/dist/court/precedent.js +89 -0
  75. package/dist/court/precedent.js.map +1 -0
  76. package/dist/court/report.d.ts +10 -0
  77. package/dist/court/report.d.ts.map +1 -0
  78. package/dist/court/report.js +77 -0
  79. package/dist/court/report.js.map +1 -0
  80. package/dist/curation/consumes.d.ts +24 -0
  81. package/dist/curation/consumes.d.ts.map +1 -0
  82. package/dist/curation/consumes.js +122 -0
  83. package/dist/curation/consumes.js.map +1 -0
  84. package/dist/curation/edge-staleness.d.ts +47 -0
  85. package/dist/curation/edge-staleness.d.ts.map +1 -0
  86. package/dist/curation/edge-staleness.js +258 -0
  87. package/dist/curation/edge-staleness.js.map +1 -0
  88. package/dist/curation/edges.d.ts.map +1 -1
  89. package/dist/curation/edges.js +164 -10
  90. package/dist/curation/edges.js.map +1 -1
  91. package/dist/curation/lint.d.ts +4 -1
  92. package/dist/curation/lint.d.ts.map +1 -1
  93. package/dist/curation/lint.js +61 -6
  94. package/dist/curation/lint.js.map +1 -1
  95. package/dist/curation/provenance.d.ts +2 -0
  96. package/dist/curation/provenance.d.ts.map +1 -1
  97. package/dist/curation/provenance.js +2 -0
  98. package/dist/curation/provenance.js.map +1 -1
  99. package/dist/curation/read-log.d.ts +19 -0
  100. package/dist/curation/read-log.d.ts.map +1 -0
  101. package/dist/curation/read-log.js +120 -0
  102. package/dist/curation/read-log.js.map +1 -0
  103. package/dist/curation/review-throughput.d.ts +24 -0
  104. package/dist/curation/review-throughput.d.ts.map +1 -0
  105. package/dist/curation/review-throughput.js +102 -0
  106. package/dist/curation/review-throughput.js.map +1 -0
  107. package/dist/curation/staged-actions.d.ts +11 -1
  108. package/dist/curation/staged-actions.d.ts.map +1 -1
  109. package/dist/curation/staged-actions.js +117 -30
  110. package/dist/curation/staged-actions.js.map +1 -1
  111. package/dist/curation/staleness.js +1 -1
  112. package/dist/curation/staleness.js.map +1 -1
  113. package/dist/curation/structural.d.ts +16 -0
  114. package/dist/curation/structural.d.ts.map +1 -0
  115. package/dist/curation/structural.js +64 -0
  116. package/dist/curation/structural.js.map +1 -0
  117. package/dist/curation/tension-access.d.ts +7 -0
  118. package/dist/curation/tension-access.d.ts.map +1 -0
  119. package/dist/curation/tension-access.js +44 -0
  120. package/dist/curation/tension-access.js.map +1 -0
  121. package/dist/curation/tension-blast.d.ts +6 -1
  122. package/dist/curation/tension-blast.d.ts.map +1 -1
  123. package/dist/curation/tension-blast.js +11 -2
  124. package/dist/curation/tension-blast.js.map +1 -1
  125. package/dist/curation/tension-clusters.d.ts +1 -1
  126. package/dist/curation/tension-clusters.d.ts.map +1 -1
  127. package/dist/curation/tension-clusters.js +5 -2
  128. package/dist/curation/tension-clusters.js.map +1 -1
  129. package/dist/curation/tension.d.ts +6 -2
  130. package/dist/curation/tension.d.ts.map +1 -1
  131. package/dist/curation/tension.js +86 -35
  132. package/dist/curation/tension.js.map +1 -1
  133. package/dist/curation/tier0.d.ts +27 -0
  134. package/dist/curation/tier0.d.ts.map +1 -0
  135. package/dist/curation/tier0.js +196 -0
  136. package/dist/curation/tier0.js.map +1 -0
  137. package/dist/curation/tier1.d.ts +30 -0
  138. package/dist/curation/tier1.d.ts.map +1 -0
  139. package/dist/curation/tier1.js +142 -0
  140. package/dist/curation/tier1.js.map +1 -0
  141. package/dist/curation/tier2.d.ts +43 -0
  142. package/dist/curation/tier2.d.ts.map +1 -0
  143. package/dist/curation/tier2.js +182 -0
  144. package/dist/curation/tier2.js.map +1 -0
  145. package/dist/curation/vault-docs.d.ts +5 -1
  146. package/dist/curation/vault-docs.d.ts.map +1 -1
  147. package/dist/curation/vault-docs.js +15 -1
  148. package/dist/curation/vault-docs.js.map +1 -1
  149. package/dist/eval/generate.js +22 -5
  150. package/dist/eval/generate.js.map +1 -1
  151. package/dist/eval/index.d.ts.map +1 -1
  152. package/dist/eval/index.js +173 -25
  153. package/dist/eval/index.js.map +1 -1
  154. package/dist/eval/llm-openrouter.d.ts +9 -0
  155. package/dist/eval/llm-openrouter.d.ts.map +1 -0
  156. package/dist/eval/llm-openrouter.js +171 -0
  157. package/dist/eval/llm-openrouter.js.map +1 -0
  158. package/dist/eval/llm.js +1 -1
  159. package/dist/eval/llm.js.map +1 -1
  160. package/dist/eval/prune.d.ts +24 -0
  161. package/dist/eval/prune.d.ts.map +1 -0
  162. package/dist/eval/prune.js +83 -0
  163. package/dist/eval/prune.js.map +1 -0
  164. package/dist/eval/storage.d.ts +3 -0
  165. package/dist/eval/storage.d.ts.map +1 -1
  166. package/dist/eval/storage.js +14 -0
  167. package/dist/eval/storage.js.map +1 -1
  168. package/dist/frontmatter/parser.d.ts +1 -0
  169. package/dist/frontmatter/parser.d.ts.map +1 -1
  170. package/dist/frontmatter/parser.js +12 -0
  171. package/dist/frontmatter/parser.js.map +1 -1
  172. package/dist/frontmatter/schema.d.ts.map +1 -1
  173. package/dist/frontmatter/schema.js +38 -3
  174. package/dist/frontmatter/schema.js.map +1 -1
  175. package/dist/frontmatter/types.d.ts +4 -1
  176. package/dist/frontmatter/types.d.ts.map +1 -1
  177. package/dist/frontmatter/types.js +8 -0
  178. package/dist/frontmatter/types.js.map +1 -1
  179. package/dist/import/index.d.ts.map +1 -1
  180. package/dist/import/index.js +44 -9
  181. package/dist/import/index.js.map +1 -1
  182. package/dist/import/langgraph-store.d.ts +53 -0
  183. package/dist/import/langgraph-store.d.ts.map +1 -0
  184. package/dist/import/langgraph-store.js +292 -0
  185. package/dist/import/langgraph-store.js.map +1 -0
  186. package/dist/index.d.ts +5 -0
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +56 -18
  189. package/dist/index.js.map +1 -1
  190. package/dist/lifecycle/lock.d.ts +9 -1
  191. package/dist/lifecycle/lock.d.ts.map +1 -1
  192. package/dist/lifecycle/lock.js +34 -9
  193. package/dist/lifecycle/lock.js.map +1 -1
  194. package/dist/okf/export.d.ts +12 -0
  195. package/dist/okf/export.d.ts.map +1 -0
  196. package/dist/okf/export.js +115 -0
  197. package/dist/okf/export.js.map +1 -0
  198. package/dist/okf/import.d.ts +24 -0
  199. package/dist/okf/import.d.ts.map +1 -0
  200. package/dist/okf/import.js +107 -0
  201. package/dist/okf/import.js.map +1 -0
  202. package/dist/okf/index.d.ts +2 -0
  203. package/dist/okf/index.d.ts.map +1 -0
  204. package/dist/okf/index.js +147 -0
  205. package/dist/okf/index.js.map +1 -0
  206. package/dist/okf/map.d.ts +16 -0
  207. package/dist/okf/map.d.ts.map +1 -0
  208. package/dist/okf/map.js +149 -0
  209. package/dist/okf/map.js.map +1 -0
  210. package/dist/okf/types.d.ts +9 -0
  211. package/dist/okf/types.d.ts.map +1 -0
  212. package/dist/okf/types.js +48 -0
  213. package/dist/okf/types.js.map +1 -0
  214. package/dist/search/contested.d.ts +18 -0
  215. package/dist/search/contested.d.ts.map +1 -0
  216. package/dist/search/contested.js +119 -0
  217. package/dist/search/contested.js.map +1 -0
  218. package/dist/search/coverage.d.ts.map +1 -1
  219. package/dist/search/coverage.js +1 -1
  220. package/dist/search/coverage.js.map +1 -1
  221. package/dist/search/hybrid.d.ts +23 -0
  222. package/dist/search/hybrid.d.ts.map +1 -1
  223. package/dist/search/hybrid.js +75 -15
  224. package/dist/search/hybrid.js.map +1 -1
  225. package/dist/search/reindex.d.ts +1 -0
  226. package/dist/search/reindex.d.ts.map +1 -1
  227. package/dist/search/reindex.js +57 -24
  228. package/dist/search/reindex.js.map +1 -1
  229. package/dist/search/watcher.d.ts +2 -0
  230. package/dist/search/watcher.d.ts.map +1 -1
  231. package/dist/search/watcher.js +23 -12
  232. package/dist/search/watcher.js.map +1 -1
  233. package/dist/serve/index.d.ts +36 -0
  234. package/dist/serve/index.d.ts.map +1 -0
  235. package/dist/serve/index.js +507 -0
  236. package/dist/serve/index.js.map +1 -0
  237. package/dist/server.d.ts +10 -1
  238. package/dist/server.d.ts.map +1 -1
  239. package/dist/server.js +91 -12
  240. package/dist/server.js.map +1 -1
  241. package/dist/sleep/cycle.d.ts +59 -0
  242. package/dist/sleep/cycle.d.ts.map +1 -0
  243. package/dist/sleep/cycle.js +127 -0
  244. package/dist/sleep/cycle.js.map +1 -0
  245. package/dist/sleep/index.d.ts +5 -0
  246. package/dist/sleep/index.d.ts.map +1 -0
  247. package/dist/sleep/index.js +320 -0
  248. package/dist/sleep/index.js.map +1 -0
  249. package/dist/sleep/report.d.ts +14 -0
  250. package/dist/sleep/report.d.ts.map +1 -0
  251. package/dist/sleep/report.js +139 -0
  252. package/dist/sleep/report.js.map +1 -0
  253. package/dist/sleep/tension-scan-state.d.ts +19 -0
  254. package/dist/sleep/tension-scan-state.d.ts.map +1 -0
  255. package/dist/sleep/tension-scan-state.js +0 -0
  256. package/dist/sleep/tension-scan-state.js.map +1 -0
  257. package/dist/sleep/tension-scan.d.ts +44 -0
  258. package/dist/sleep/tension-scan.d.ts.map +1 -0
  259. package/dist/sleep/tension-scan.js +0 -0
  260. package/dist/sleep/tension-scan.js.map +1 -0
  261. package/dist/storage/backend.d.ts +12 -0
  262. package/dist/storage/backend.d.ts.map +1 -0
  263. package/dist/storage/backend.js +231 -0
  264. package/dist/storage/backend.js.map +1 -0
  265. package/dist/storage/backends/fs.d.ts +4 -0
  266. package/dist/storage/backends/fs.d.ts.map +1 -0
  267. package/dist/storage/backends/fs.js +99 -0
  268. package/dist/storage/backends/fs.js.map +1 -0
  269. package/dist/storage/fs-walk.d.ts +5 -0
  270. package/dist/storage/fs-walk.d.ts.map +1 -0
  271. package/dist/storage/fs-walk.js +28 -0
  272. package/dist/storage/fs-walk.js.map +1 -0
  273. package/dist/storage/index-db.d.ts +18 -0
  274. package/dist/storage/index-db.d.ts.map +1 -1
  275. package/dist/storage/index-db.js +159 -22
  276. package/dist/storage/index-db.js.map +1 -1
  277. package/dist/storage/local.d.ts +7 -1
  278. package/dist/storage/local.d.ts.map +1 -1
  279. package/dist/storage/local.js +42 -4
  280. package/dist/storage/local.js.map +1 -1
  281. package/dist/storage/sync.d.ts +25 -0
  282. package/dist/storage/sync.d.ts.map +1 -0
  283. package/dist/storage/sync.js +308 -0
  284. package/dist/storage/sync.js.map +1 -0
  285. package/dist/sync/index.d.ts +2 -0
  286. package/dist/sync/index.d.ts.map +1 -0
  287. package/dist/sync/index.js +136 -0
  288. package/dist/sync/index.js.map +1 -0
  289. package/dist/themes/clustering.d.ts +6 -11
  290. package/dist/themes/clustering.d.ts.map +1 -1
  291. package/dist/themes/clustering.js +76 -84
  292. package/dist/themes/clustering.js.map +1 -1
  293. package/dist/tools/consumes.d.ts +14 -0
  294. package/dist/tools/consumes.d.ts.map +1 -0
  295. package/dist/tools/consumes.js +99 -0
  296. package/dist/tools/consumes.js.map +1 -0
  297. package/dist/tools/curation.d.ts +2 -0
  298. package/dist/tools/curation.d.ts.map +1 -1
  299. package/dist/tools/curation.js +102 -7
  300. package/dist/tools/curation.js.map +1 -1
  301. package/dist/tools/edge-staleness.d.ts +28 -0
  302. package/dist/tools/edge-staleness.d.ts.map +1 -0
  303. package/dist/tools/edge-staleness.js +205 -0
  304. package/dist/tools/edge-staleness.js.map +1 -0
  305. package/dist/tools/edges.d.ts.map +1 -1
  306. package/dist/tools/edges.js +28 -22
  307. package/dist/tools/edges.js.map +1 -1
  308. package/dist/tools/read.d.ts +15 -1
  309. package/dist/tools/read.d.ts.map +1 -1
  310. package/dist/tools/read.js +144 -31
  311. package/dist/tools/read.js.map +1 -1
  312. package/dist/tools/receipt.d.ts +65 -0
  313. package/dist/tools/receipt.d.ts.map +1 -0
  314. package/dist/tools/receipt.js +257 -0
  315. package/dist/tools/receipt.js.map +1 -0
  316. package/dist/tools/search.d.ts +1 -0
  317. package/dist/tools/search.d.ts.map +1 -1
  318. package/dist/tools/search.js +186 -12
  319. package/dist/tools/search.js.map +1 -1
  320. package/dist/tools/staged-actions.d.ts +3 -0
  321. package/dist/tools/staged-actions.d.ts.map +1 -1
  322. package/dist/tools/staged-actions.js +228 -23
  323. package/dist/tools/staged-actions.js.map +1 -1
  324. package/dist/tools/themes.d.ts +9 -0
  325. package/dist/tools/themes.d.ts.map +1 -1
  326. package/dist/tools/themes.js +333 -133
  327. package/dist/tools/themes.js.map +1 -1
  328. package/dist/tools/tier1.d.ts +14 -0
  329. package/dist/tools/tier1.d.ts.map +1 -0
  330. package/dist/tools/tier1.js +169 -0
  331. package/dist/tools/tier1.js.map +1 -0
  332. package/dist/tools/tier2.d.ts +27 -0
  333. package/dist/tools/tier2.d.ts.map +1 -0
  334. package/dist/tools/tier2.js +344 -0
  335. package/dist/tools/tier2.js.map +1 -0
  336. package/dist/tools/witness.d.ts +9 -0
  337. package/dist/tools/witness.d.ts.map +1 -0
  338. package/dist/tools/witness.js +66 -0
  339. package/dist/tools/witness.js.map +1 -0
  340. package/dist/tools/write.d.ts +9 -1
  341. package/dist/tools/write.d.ts.map +1 -1
  342. package/dist/tools/write.js +593 -59
  343. package/dist/tools/write.js.map +1 -1
  344. package/dist/utils/config.d.ts +54 -0
  345. package/dist/utils/config.d.ts.map +1 -1
  346. package/dist/utils/config.js +420 -4
  347. package/dist/utils/config.js.map +1 -1
  348. package/dist/utils/paths.d.ts +2 -0
  349. package/dist/utils/paths.d.ts.map +1 -0
  350. package/dist/utils/paths.js +15 -0
  351. package/dist/utils/paths.js.map +1 -0
  352. package/dist/utils/redos.d.ts +2 -0
  353. package/dist/utils/redos.d.ts.map +1 -0
  354. package/dist/utils/redos.js +101 -0
  355. package/dist/utils/redos.js.map +1 -0
  356. package/dist/utils/run-id.d.ts +3 -0
  357. package/dist/utils/run-id.d.ts.map +1 -0
  358. package/dist/utils/run-id.js +19 -0
  359. package/dist/utils/run-id.js.map +1 -0
  360. package/dist/utils/vault-gitignore.d.ts +1 -1
  361. package/dist/utils/vault-gitignore.d.ts.map +1 -1
  362. package/dist/utils/vault-gitignore.js +6 -1
  363. package/dist/utils/vault-gitignore.js.map +1 -1
  364. package/dist/witness/track-record.d.ts +42 -0
  365. package/dist/witness/track-record.d.ts.map +1 -0
  366. package/dist/witness/track-record.js +189 -0
  367. package/dist/witness/track-record.js.map +1 -0
  368. package/package.json +27 -2
  369. package/templates/config.yaml +8 -0
@@ -0,0 +1,344 @@
1
+ // vault_tier2_queue / vault_tier2_verdict — the tier-2 protocol surface
2
+ // (#232). The server does NOT run an LLM: the calling agent is the judge.
3
+ // The queue tool prepares the constrained judgments (specific claim against
4
+ // specific usage — never "do these two documents conflict"); the verdict
5
+ // tool records the typed answer and, for a break, logs a real tension
6
+ // through the existing taxonomy. See src/curation/tier2.ts for the model.
7
+ //
8
+ // RBAC (#217): any-read gate on both tools. A queue item names two
9
+ // documents, so it is listed only when the caller can read BOTH — omission,
10
+ // no counts, no coarse remainder (lists omit; only summaries coarsen). A
11
+ // verdict on a pair the caller cannot fully read is refused with the SAME
12
+ // error a pair with nothing pending produces — no existence signal.
13
+ import { hasAnyRead } from "../access/rbac.js";
14
+ import { upstreamStaleness } from "../curation/edge-staleness.js";
15
+ import { listEdges } from "../curation/edges.js";
16
+ import { readProvenanceLog } from "../curation/provenance.js";
17
+ import { addTension, LOGGABLE_TENSION_KINDS, } from "../curation/tension.js";
18
+ import { sourceReadable } from "../curation/tension-access.js";
19
+ import { accumulateFieldChanges, extractUsageSpan, latestUnitChangeTs, NO_CHANGE_TS, readTier2Verdicts, recordTier2Verdict, } from "../curation/tier2.js";
20
+ import { loadDocuments } from "../curation/vault-docs.js";
21
+ import { err, ok } from "../frontmatter/types.js";
22
+ import { canonicalVaultRelPath } from "../storage/local.js";
23
+ import { readRunId } from "../utils/run-id.js";
24
+ import { openIndexForAccessOrNull } from "./search.js";
25
+ async function loadQueueSources(vaultRoot) {
26
+ const provenance = await readProvenanceLog(vaultRoot);
27
+ if (!provenance.ok)
28
+ return provenance;
29
+ const verdicts = await readTier2Verdicts(vaultRoot);
30
+ if (!verdicts.ok)
31
+ return verdicts;
32
+ const docs = await loadDocuments(vaultRoot);
33
+ if (!docs.ok)
34
+ return docs;
35
+ const edges = await listEdges(vaultRoot);
36
+ if (!edges.ok)
37
+ return edges;
38
+ const earnedByFrom = new Map();
39
+ for (const e of edges.value) {
40
+ if (e.status === "revoked")
41
+ continue;
42
+ const list = earnedByFrom.get(e.fromPath) ?? [];
43
+ list.push({ unit: e.toPath, lastRederived: e.lastRederived });
44
+ earnedByFrom.set(e.fromPath, list);
45
+ }
46
+ return ok({
47
+ provenance: provenance.value,
48
+ verdicts: verdicts.value,
49
+ docs: docs.value,
50
+ earnedByFrom,
51
+ });
52
+ }
53
+ // The artifact's pending-unchecked rows — the tier-2 residual. Compiled
54
+ // edges are excluded at the source (consumes: []): tier 1 decides them
55
+ // mechanically and they never queue.
56
+ function residualRows(sources, doc) {
57
+ return upstreamStaleness({
58
+ artifact: doc.path,
59
+ consumes: [],
60
+ provenance: sources.provenance,
61
+ declaredUnits: doc.frontmatter.sources,
62
+ earned: sources.earnedByFrom.get(doc.path) ?? [],
63
+ verdicts: sources.verdicts,
64
+ }).filter((r) => r.staleness === "pending-unchecked");
65
+ }
66
+ function workItem(sources, doc, row) {
67
+ const unitDoc = sources.docs.find((d) => d.path === row.unit);
68
+ const fieldChanges = row.baseline === null
69
+ ? accumulateFieldChanges(sources.provenance, row.unit, NO_CHANGE_TS)
70
+ : accumulateFieldChanges(sources.provenance, row.unit, row.baseline);
71
+ const span = extractUsageSpan(doc.content, {
72
+ path: row.unit,
73
+ title: unitDoc?.frontmatter.title,
74
+ });
75
+ const changeDesc = row.changed_fields.length > 0
76
+ ? `changed [${row.changed_fields.join(", ")}]`
77
+ : "has never been checked against this dependent";
78
+ return {
79
+ artifact: doc.path,
80
+ unit: row.unit,
81
+ edge_class: row.edge_class,
82
+ baseline: row.baseline,
83
+ changed_fields: row.changed_fields,
84
+ field_changes: fieldChanges,
85
+ usage_span: span,
86
+ question: `${row.unit} ${changeDesc}` +
87
+ `${row.baseline ? ` since ${row.baseline}` : ""}. ${doc.path} depends on it via a ` +
88
+ `${row.edge_class} edge. Given field_changes and the dependent's usage ` +
89
+ `(usage_span, or read the documents), does the dependent's claim still hold? ` +
90
+ `Record the judgment with vault_tier2_verdict: 'still-valid', or 'broken' with a ` +
91
+ `tension_kind (${LOGGABLE_TENSION_KINDS.join(" | ")}) and both claims.`,
92
+ };
93
+ }
94
+ export async function vaultTier2Queue(vaultRoot, args, access) {
95
+ if (access && !hasAnyRead(access.role)) {
96
+ return err(new Error(`access denied: role '${access.roleName}' cannot use vault_tier2_queue`));
97
+ }
98
+ let unitFilter = null;
99
+ if (args.unit !== undefined && args.unit !== null) {
100
+ if (typeof args.unit !== "string" || args.unit.trim().length === 0) {
101
+ return err(new Error("vault_tier2_queue 'unit' must be a non-empty string"));
102
+ }
103
+ const canon = canonicalVaultRelPath(vaultRoot, args.unit);
104
+ if (!canon.ok)
105
+ return canon;
106
+ unitFilter = canon.value;
107
+ }
108
+ const sources = await loadQueueSources(vaultRoot);
109
+ if (!sources.ok)
110
+ return sources;
111
+ const db = access ? openIndexForAccessOrNull(vaultRoot) : null;
112
+ try {
113
+ const items = [];
114
+ for (const doc of sources.value.docs) {
115
+ // #217 omission: an item names both endpoints, so both must be
116
+ // readable. An unreadable artifact drops with all its rows; an
117
+ // unreadable unit drops that row. No counts, no remainder.
118
+ if (access && !sourceReadable(db, access, doc.path))
119
+ continue;
120
+ for (const row of residualRows(sources.value, doc)) {
121
+ if (unitFilter !== null && row.unit !== unitFilter)
122
+ continue;
123
+ if (access && !sourceReadable(db, access, row.unit))
124
+ continue;
125
+ items.push(workItem(sources.value, doc, row));
126
+ }
127
+ }
128
+ items.sort((a, b) => a.unit.localeCompare(b.unit) || a.artifact.localeCompare(b.artifact));
129
+ return ok({ items, total: items.length });
130
+ }
131
+ finally {
132
+ db?.close();
133
+ }
134
+ }
135
+ export async function vaultTier2Verdict(vaultRoot, args, access) {
136
+ if (access && !hasAnyRead(access.role)) {
137
+ return err(new Error(`access denied: role '${access.roleName}' cannot use vault_tier2_verdict`));
138
+ }
139
+ const str = (field) => {
140
+ const v = args[field];
141
+ if (typeof v !== "string" || v.trim().length === 0) {
142
+ return err(new Error(`vault_tier2_verdict requires a non-empty '${field}' argument`));
143
+ }
144
+ return ok(v.trim());
145
+ };
146
+ const artifactRaw = str("artifact");
147
+ if (!artifactRaw.ok)
148
+ return artifactRaw;
149
+ const unitRaw = str("unit");
150
+ if (!unitRaw.ok)
151
+ return unitRaw;
152
+ const reasoning = str("reasoning");
153
+ if (!reasoning.ok)
154
+ return reasoning;
155
+ const agent = str("agent");
156
+ if (!agent.ok)
157
+ return agent;
158
+ const verdict = args.verdict;
159
+ if (verdict !== "still-valid" && verdict !== "broken") {
160
+ return err(new Error("vault_tier2_verdict 'verdict' must be 'still-valid' or 'broken'"));
161
+ }
162
+ const runId = readRunId(args, "vault_tier2_verdict");
163
+ if (!runId.ok)
164
+ return runId;
165
+ let tensionKind = null;
166
+ let claimArtifact = null;
167
+ let claimUnit = null;
168
+ if (verdict === "broken") {
169
+ const kind = args.tension_kind;
170
+ if (typeof kind !== "string" || !LOGGABLE_TENSION_KINDS.includes(kind)) {
171
+ return err(new Error(`a 'broken' verdict requires 'tension_kind' — one of: ${LOGGABLE_TENSION_KINDS.join(", ")}`));
172
+ }
173
+ tensionKind = kind;
174
+ const ca = str("claim_artifact");
175
+ if (!ca.ok)
176
+ return ca;
177
+ const cu = str("claim_unit");
178
+ if (!cu.ok)
179
+ return cu;
180
+ claimArtifact = ca.value;
181
+ claimUnit = cu.value;
182
+ }
183
+ else if (args.tension_kind !== undefined) {
184
+ return err(new Error("'tension_kind' applies only to a 'broken' verdict"));
185
+ }
186
+ const artifact = canonicalVaultRelPath(vaultRoot, artifactRaw.value);
187
+ if (!artifact.ok)
188
+ return artifact;
189
+ const unit = canonicalVaultRelPath(vaultRoot, unitRaw.value);
190
+ if (!unit.ok)
191
+ return unit;
192
+ const noPendingError = () => err(new Error(`vault_tier2_verdict: no pending semantic review for ${artifact.value} ← ${unit.value}` +
193
+ ` — see vault_tier2_queue`));
194
+ // Disclosure: a pair the caller cannot fully read is refused with the
195
+ // exact error a pair with nothing pending produces — decided BEFORE any
196
+ // queue state is computed, so the response cannot depend on it.
197
+ if (access) {
198
+ const db = openIndexForAccessOrNull(vaultRoot);
199
+ try {
200
+ if (!sourceReadable(db, access, artifact.value) || !sourceReadable(db, access, unit.value)) {
201
+ return noPendingError();
202
+ }
203
+ }
204
+ finally {
205
+ db?.close();
206
+ }
207
+ }
208
+ const sources = await loadQueueSources(vaultRoot);
209
+ if (!sources.ok)
210
+ return sources;
211
+ const doc = sources.value.docs.find((d) => d.path === artifact.value);
212
+ const candidates = doc
213
+ ? residualRows(sources.value, doc).filter((r) => r.unit === unit.value)
214
+ : [];
215
+ if (candidates.length === 0)
216
+ return noPendingError();
217
+ let row;
218
+ if (args.edge_class !== undefined && args.edge_class !== null) {
219
+ const match = candidates.find((r) => r.edge_class === args.edge_class);
220
+ if (!match)
221
+ return noPendingError();
222
+ row = match;
223
+ }
224
+ else if (candidates.length === 1) {
225
+ row = candidates[0];
226
+ }
227
+ else {
228
+ return err(new Error(`vault_tier2_verdict: ${artifact.value} ← ${unit.value} is pending on several edge ` +
229
+ `classes (${candidates.map((r) => r.edge_class).join(", ")}) — pass 'edge_class'`));
230
+ }
231
+ // A break is a real tension, logged through the existing taxonomy — the
232
+ // durable, caller-visible artifact of the judgment.
233
+ let tensionId = null;
234
+ if (verdict === "broken" && tensionKind && claimArtifact && claimUnit) {
235
+ const tension = await addTension(vaultRoot, {
236
+ title: `tier-2: ${unit.value} change breaks ${artifact.value}`,
237
+ kind: tensionKind,
238
+ sourceA: artifact.value,
239
+ claimA: claimArtifact,
240
+ sourceB: unit.value,
241
+ claimB: claimUnit,
242
+ loggedBy: agent.value,
243
+ });
244
+ if (!tension.ok)
245
+ return tension;
246
+ tensionId = tension.value.id ?? null;
247
+ }
248
+ const recorded = await recordTier2Verdict(vaultRoot, {
249
+ artifact: artifact.value,
250
+ unit: unit.value,
251
+ edge_class: row.edge_class,
252
+ judged_change_ts: latestUnitChangeTs(sources.value.provenance, unit.value) ?? NO_CHANGE_TS,
253
+ verdict,
254
+ ...(tensionKind ? { tension_kind: tensionKind } : {}),
255
+ ...(tensionId ? { tension_id: tensionId } : {}),
256
+ reasoning: reasoning.value,
257
+ agent: agent.value,
258
+ ...(access?.user != null ? { principal: access.user } : {}),
259
+ ...(runId.value ? { run_id: runId.value } : {}),
260
+ });
261
+ if (!recorded.ok) {
262
+ return err(new Error(`${recorded.error.message}${tensionId ? ` (tension ${tensionId} was already logged)` : ""}`));
263
+ }
264
+ return ok({ recorded: recorded.value, tension_id: tensionId });
265
+ }
266
+ export const tier2Tools = [
267
+ {
268
+ name: "vault_tier2_queue",
269
+ title: "Semantic-review queue (tier 2)",
270
+ annotations: { readOnlyHint: true },
271
+ description: "The tier-2 semantic-review queue (#232): every declared/earned " +
272
+ "dependency whose upstream changed but whose compatibility the " +
273
+ "structure could not decide (tier 1's residual — #234's " +
274
+ "pending-unchecked class), minus pairs an existing verdict already " +
275
+ "covers. Each item is a CONSTRAINED judgment: the net per-field " +
276
+ "before/after since the edge's baseline, the dependent's usage span, " +
277
+ "and the specific question to answer — never 'do these documents " +
278
+ "conflict'. YOU are the judge: answer items with vault_tier2_verdict. " +
279
+ "Pass 'unit' to scope the queue to one changed document. Compiled " +
280
+ "edges never appear — tier 1 decides them mechanically.",
281
+ inputSchema: {
282
+ type: "object",
283
+ properties: {
284
+ unit: {
285
+ type: "string",
286
+ description: "Optional vault-relative path: only items judging this changed document",
287
+ },
288
+ },
289
+ additionalProperties: false,
290
+ },
291
+ handler: (vaultRoot, args, access) => vaultTier2Queue(vaultRoot, args, access),
292
+ },
293
+ {
294
+ name: "vault_tier2_verdict",
295
+ title: "Record a tier-2 semantic verdict",
296
+ annotations: { readOnlyHint: false, idempotentHint: false },
297
+ description: "Record the answer to a vault_tier2_queue item (#232 tier 2). " +
298
+ "verdict 'still-valid' certifies the dependent's use of the changed " +
299
+ "unit still holds; 'broken' requires a tension_kind from the tension " +
300
+ "taxonomy plus claim_artifact/claim_unit, and logs a real tension via " +
301
+ "the existing machinery (the tension id is returned). The verdict " +
302
+ "covers the unit's CURRENT change only — a later write to the unit " +
303
+ "re-queues the pair automatically. Refused when the pair has nothing " +
304
+ "pending. Staleness surfaces (vault_staleness) read verdicts: a " +
305
+ "covered pair reports pending-compatible or pending-broken instead " +
306
+ "of pending-unchecked.",
307
+ inputSchema: {
308
+ type: "object",
309
+ properties: {
310
+ artifact: { type: "string", description: "The dependent document being judged" },
311
+ unit: { type: "string", description: "The changed upstream it was judged against" },
312
+ edge_class: {
313
+ type: "string",
314
+ enum: ["declared", "earned"],
315
+ description: "Required only when the pair is pending on both classes",
316
+ },
317
+ verdict: { type: "string", enum: ["still-valid", "broken"] },
318
+ tension_kind: {
319
+ type: "string",
320
+ enum: [...LOGGABLE_TENSION_KINDS],
321
+ description: "Required for 'broken': the tension taxonomy kind",
322
+ },
323
+ claim_artifact: {
324
+ type: "string",
325
+ description: "For 'broken': what the dependent asserts (becomes the tension's claimA)",
326
+ },
327
+ claim_unit: {
328
+ type: "string",
329
+ description: "For 'broken': what the changed unit now says (becomes claimB)",
330
+ },
331
+ reasoning: { type: "string", description: "The judgment's reasoning, recorded verbatim" },
332
+ agent: {
333
+ type: "string",
334
+ description: "Judging agent's identity, e.g. agent:curation-loop",
335
+ },
336
+ run_id: { type: "string", description: "Optional trace/run identifier of the calling run" },
337
+ },
338
+ required: ["artifact", "unit", "verdict", "reasoning", "agent"],
339
+ additionalProperties: false,
340
+ },
341
+ handler: (vaultRoot, args, access) => vaultTier2Verdict(vaultRoot, args, access),
342
+ },
343
+ ];
344
+ //# sourceMappingURL=tier2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier2.js","sourceRoot":"","sources":["../../src/tools/tier2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type AccessContext } from "../access/rbac.js";
2
+ import { type Result } from "../frontmatter/types.js";
3
+ import { type WitnessResult } from "../witness/track-record.js";
4
+ import type { ToolDefinition } from "./read.js";
5
+ export declare function vaultWitness(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WitnessResult | {
6
+ principal: unknown;
7
+ }, Error>>;
8
+ export declare const witnessTools: ToolDefinition[];
9
+ //# sourceMappingURL=witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../../src/tools/witness.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,CAAC,CAAC,CAwBhE;AAED,eAAO,MAAM,YAAY,EAAE,cAAc,EAkCxC,CAAC"}
@@ -0,0 +1,66 @@
1
+ // vault_witness — per-principal track records from the ledger, priced by
2
+ // the wager schedule. Read-only: the witness testifies from what the vault
3
+ // already recorded (provenance, tensions, staged actions); it never grades
4
+ // beyond deterministic arithmetic on exported provisional constants, and it
5
+ // never enforces — routing a write by a track record is the caller's
6
+ // judgment, not the vault's.
7
+ import { hasAnyRead } from "../access/rbac.js";
8
+ import { err, ok } from "../frontmatter/types.js";
9
+ import { buildWitness } from "../witness/track-record.js";
10
+ export async function vaultWitness(vaultRoot, args, access) {
11
+ if (access && !hasAnyRead(access.role)) {
12
+ return err(new Error(`access denied: role '${access.roleName}' cannot use vault_witness`));
13
+ }
14
+ const witness = await buildWitness(vaultRoot, new Date(), access);
15
+ if (!witness.ok)
16
+ return witness;
17
+ if (args.principal !== undefined) {
18
+ if (typeof args.principal !== "string" || args.principal.length === 0) {
19
+ return err(new Error("vault_witness 'principal' must be a non-empty string"));
20
+ }
21
+ const match = witness.value.principals.find((p) => p.principal === args.principal);
22
+ if (!match) {
23
+ return err(new Error(`vault_witness: no record for principal '${args.principal}'`));
24
+ }
25
+ return ok({
26
+ principal: match,
27
+ concentration: witness.value.concentration,
28
+ flatCurveWarning: witness.value.flatCurveWarning,
29
+ });
30
+ }
31
+ return witness;
32
+ }
33
+ export const witnessTools = [
34
+ {
35
+ name: "vault_witness",
36
+ title: "Per-principal track records",
37
+ annotations: { readOnlyHint: true },
38
+ description: "Per-principal track records aggregated from the vault's own ledgers " +
39
+ "(provenance log, tension log, staged actions), priced by the wager " +
40
+ "schedule: writing a claim at a confidence level stakes points " +
41
+ "(low 0 / medium 1 / high 3, provisional); a claim later corrected or " +
42
+ "retired burns the stake; a claim maintained through a full TTL cycle " +
43
+ "earns credit. Returns, per principal: write volume and span, docs " +
44
+ "authored, live claims with open exposure, contested claims with " +
45
+ "stake at risk, the settled book (lost/burned vs survived/credited, " +
46
+ "balance), proposal outcomes (ratified/rejected/expired), and tensions " +
47
+ "logged. Includes the flat-curve monitor: when one principal holds " +
48
+ "≥95% of writes, track records are declared uninformative rather than " +
49
+ "reported as signal. Read-only, deterministic, advisory — nothing is " +
50
+ "enforced and no document is touched. Pass 'principal' to fetch one " +
51
+ "record.",
52
+ inputSchema: {
53
+ type: "object",
54
+ properties: {
55
+ principal: {
56
+ type: "string",
57
+ description: "Optional identity to fetch a single record for, e.g. " +
58
+ "agent:claude-code or human:mihir.",
59
+ },
60
+ },
61
+ additionalProperties: false,
62
+ },
63
+ handler: (vaultRoot, args, access) => vaultWitness(vaultRoot, args, access),
64
+ },
65
+ ];
66
+ //# sourceMappingURL=witness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"witness.js","sourceRoot":"","sources":["../../src/tools/witness.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,qEAAqE;AACrE,6BAA6B;AAE7B,OAAO,EAAsB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAsB,MAAM,4BAA4B,CAAC;AAG9E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,IAA6B,EAC7B,MAAsB;IAEtB,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,QAAQ,4BAA4B,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAEhC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,EAAE,CAAC;YACR,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa;YAC1C,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB;SACZ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EACT,sEAAsE;YACtE,qEAAqE;YACrE,gEAAgE;YAChE,uEAAuE;YACvE,uEAAuE;YACvE,oEAAoE;YACpE,kEAAkE;YAClE,qEAAqE;YACrE,wEAAwE;YACxE,oEAAoE;YACpE,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,SAAS;QACX,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,uDAAuD;wBACvD,mCAAmC;iBACtC;aACF;YACD,oBAAoB,EAAE,KAAK;SAC5B;QACD,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;KAC5E;CACF,CAAC"}
@@ -6,7 +6,7 @@ export declare function applyExtensionDefaults(raw: Record<string, unknown>, ext
6
6
  export declare function serializeDocument(fm: Frontmatter, body: string, extensions?: SchemaExtension[], raw?: Record<string, unknown>): string;
7
7
  export interface WriteResult {
8
8
  path: string;
9
- action: "create" | "update" | "append" | "promote" | "deprecate" | "supersede" | "merge" | "confidence-set";
9
+ action: "create" | "update" | "append" | "promote" | "deprecate" | "supersede" | "merge" | "confidence-set" | "tier-set" | "staged";
10
10
  commit: string | null;
11
11
  committed: boolean;
12
12
  status: string;
@@ -14,12 +14,20 @@ export interface WriteResult {
14
14
  validation: ValidationReport;
15
15
  indexUpdated: boolean;
16
16
  shadow?: boolean;
17
+ supersede_hint?: string;
18
+ domain_warnings?: string[];
19
+ staged_id?: string;
20
+ expires_at?: string;
21
+ conflicts_with?: string[];
22
+ tension_id?: string | null;
23
+ tension_error?: string;
17
24
  }
18
25
  export declare function vaultWrite(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
19
26
  export declare function vaultAppend(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
20
27
  export declare function vaultPromote(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
21
28
  export declare function vaultDeprecate(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
22
29
  export declare function vaultSetConfidence(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
30
+ export declare function vaultSetTier(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
23
31
  export declare function vaultSupersede(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
24
32
  export declare function vaultMerge(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
25
33
  export declare const writeTools: ToolDefinition[];
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AAK7E,OAAO,EAKL,KAAK,WAAW,EAGhB,KAAK,MAAM,EAGX,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAqDhD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,UAAU,EAAE,eAAe,EAAE,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAMD,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,eAAe,EAAO,EAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAChC,MAAM,CA6CR;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EACF,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,gBAAgB,CAAC;IAGrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IAItB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqMD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAoLrC;AAQD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CA+FrC;AASD,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CA8ErC;AASD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CA0ErC;AAUD,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CA4FrC;AAUD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAuFrC;AA2BD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAmRrC;AAqHD,eAAO,MAAM,UAAU,EAAE,cAAc,EA6NtC,CAAC"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"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"}