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,320 @@
1
+ // Top-level entry for `daftari sleep` — the vault's dreams.
2
+ //
3
+ // Scheduling is the operating system's job (cron, launchd, a CI schedule);
4
+ // daftari ships the cycle, not a daemon. Two dream types:
5
+ //
6
+ // circadian (default) — deterministic and LLM-FREE: measures decay, ranks
7
+ // the wake list by blast radius, sweeps expired proposals, writes the wake
8
+ // queue for an external agent, renders the Morning Report. The default
9
+ // dream stays free: no flag combination on the default path can spend.
10
+ //
11
+ // tension-scan — the LLM contradiction pass (explicit opt-in, costs
12
+ // money): retrieves related docs per candidate, judges one pair of claims
13
+ // per call, logs conflicts to the tension ledger. Hard call budget from
14
+ // .daftari/config.yaml (tension_scan.max_llm_calls); judged pairs persist
15
+ // across runs so unchanged content is never paid for twice.
16
+ //
17
+ // Exit codes (the audit convention):
18
+ // 0 — pass ran, report produced
19
+ // 2 — config/usage error
20
+ // 3 — runtime error (IO failure)
21
+ import { mkdir, writeFile } from "node:fs/promises";
22
+ import { dirname, join, resolve } from "node:path";
23
+ import { resolveAccess } from "../access/rbac.js";
24
+ import { sourceReadable } from "../curation/tension-access.js";
25
+ import { createAnthropicClient } from "../eval/llm.js";
26
+ import { createOpenRouterClient, resolveTransport, } from "../eval/llm-openrouter.js";
27
+ import { ok } from "../frontmatter/types.js";
28
+ import { openIndexForActiveProvider, vaultSearchRelated } from "../tools/search.js";
29
+ import { loadConfig } from "../utils/config.js";
30
+ import { runSleepCycle } from "./cycle.js";
31
+ import { renderJson, renderMarkdown, renderTensionScanJson, renderTensionScanMarkdown, } from "./report.js";
32
+ import { runTensionScan } from "./tension-scan.js";
33
+ const DEFAULT_WAKE_LIMIT = 20;
34
+ // Judge model defaults. Sonnet, not haiku: the demo's false-positive rate
35
+ // (0-1 borderline flags per run over ~30 benign notes) was measured with a
36
+ // frontier judge; the conservatism clause needs one to hold.
37
+ export const TENSION_SCAN_DEFAULT_MODEL = "claude-sonnet-4-6";
38
+ export const TENSION_SCAN_DEFAULT_MODEL_OPENROUTER = "anthropic/claude-sonnet-4.6";
39
+ const DREAM_TYPES = ["circadian", "tension-scan"];
40
+ const HELP = `daftari sleep — the vault's nightly metabolic pass.
41
+
42
+ Usage:
43
+ daftari sleep [--vault <path>] [options]
44
+ daftari sleep --dream tension-scan [--vault <path>] [options]
45
+ daftari sleep --help
46
+
47
+ Dream types (--dream, default 'circadian'):
48
+ circadian The free pass (deterministic, no LLM, no document writes):
49
+ 1. sweep expired staged actions (housekeeping)
50
+ 2. score every document's decay; honor the domain split (generative docs
51
+ going stale is expected — counted, never woken)
52
+ 3. build the WAKE LIST: canonical accumulation docs past TTL with
53
+ downstream dependents, ranked by blast radius — and write it to
54
+ .daftari/wake-queue.jsonl for an external agent to re-verify each
55
+ against its sources and stage diffs for ratification
56
+ 4. surface tension aging and the court docket head
57
+ 5. render the Morning Report, ending at the ratification queue — with the
58
+ rubber-stamp monitor (zero rejections over a long history is a warning,
59
+ not a compliment)
60
+
61
+ tension-scan The contradiction pass (CALLS AN LLM — explicit opt-in):
62
+ for each candidate doc (never-scanned first, then changed since the last
63
+ scan, capped at --max-docs), retrieve related docs and judge ONE pair of
64
+ claims per LLM call. Conservative: related-but-compatible is not a
65
+ conflict; an unparseable verdict defaults to no-conflict. Conflicts land
66
+ on the tension ledger (kind factual|temporal|interpretive), attributed to
67
+ the scan agent. Judged pairs persist in .daftari/tension-scan-state.json
68
+ — unchanged pairs are never re-judged; open tensions are never re-logged.
69
+
70
+ Flags (circadian):
71
+ --vault <path> Vault root (default: current directory).
72
+ --wake-limit <n> Wake-list rows shown in the report (default: ${DEFAULT_WAKE_LIMIT}).
73
+ The queue file always carries the full list.
74
+ --no-queue Do not write .daftari/wake-queue.jsonl.
75
+ --output <md> Markdown report destination (default: stdout).
76
+ --output-json <json> JSON report destination (default: not written).
77
+
78
+ Flags (tension-scan):
79
+ --vault <path> Vault root (default: current directory).
80
+ --max-llm-calls <n> Hard cap on pairwise judgments this pass
81
+ (default: config tension_scan.max_llm_calls, else 200).
82
+ --max-docs <n> Candidate docs per pass
83
+ (default: config tension_scan.max_docs, else 50).
84
+ --model <id> Judge model (default: ${TENSION_SCAN_DEFAULT_MODEL}).
85
+ --transport <t> anthropic (default, ANTHROPIC_API_KEY) or
86
+ openrouter (OPENROUTER_API_KEY); env fallback
87
+ DAFTARI_LLM_TRANSPORT.
88
+ --agent <id> loggedBy identity for logged tensions
89
+ (default: config tension_scan.agent, else
90
+ agent:sleep-tension-scan).
91
+ --user <u> --role <r> RBAC identity. Tension writes obey the
92
+ vault_tension_log rule: both sides readable, or the
93
+ pair is neither judged nor logged. Omitted =>
94
+ unrestricted (the RBAC-unconfigured posture).
95
+ --output <md> Markdown report destination (default: stdout).
96
+ --output-json <json> JSON report destination (default: not written).
97
+
98
+ Scheduling is yours (cron shown; any scheduler works):
99
+ 0 3 * * * cd /path/to/vault && npx daftari sleep --output .daftari/morning-report.md
100
+
101
+ Exit codes:
102
+ 0 — pass ran, report produced
103
+ 2 — config/usage error
104
+ 3 — runtime error (IO failure)
105
+ `;
106
+ function readStringArg(argv, flag) {
107
+ const raw = argv.find((a) => a === flag || a.startsWith(`${flag}=`));
108
+ if (raw === undefined)
109
+ return undefined;
110
+ const idx = argv.indexOf(raw);
111
+ return raw.includes("=") ? raw.slice(raw.indexOf("=") + 1) : argv[idx + 1];
112
+ }
113
+ export function wakeQueuePath(vaultRoot) {
114
+ return join(vaultRoot, ".daftari", "wake-queue.jsonl");
115
+ }
116
+ export async function runSleep(argv) {
117
+ if (argv.includes("--help") || argv.includes("-h")) {
118
+ process.stdout.write(HELP);
119
+ return 0;
120
+ }
121
+ const vaultRoot = resolve(readStringArg(argv, "--vault") ?? ".");
122
+ const dream = readStringArg(argv, "--dream") ?? "circadian";
123
+ if (!DREAM_TYPES.includes(dream)) {
124
+ process.stderr.write(`daftari sleep: --dream must be one of ${DREAM_TYPES.join("|")}, got ${dream}\n`);
125
+ return 2;
126
+ }
127
+ if (dream === "tension-scan") {
128
+ return runTensionScanCli(argv, vaultRoot);
129
+ }
130
+ let wakeLimit = DEFAULT_WAKE_LIMIT;
131
+ const rawLimit = readStringArg(argv, "--wake-limit");
132
+ if (rawLimit !== undefined) {
133
+ const n = Number(rawLimit);
134
+ if (!Number.isInteger(n) || n < 1) {
135
+ process.stderr.write(`daftari sleep: --wake-limit must be a positive integer\n`);
136
+ return 2;
137
+ }
138
+ wakeLimit = n;
139
+ }
140
+ const cycle = await runSleepCycle(vaultRoot);
141
+ if (!cycle.ok) {
142
+ process.stderr.write(`daftari sleep: ${cycle.error.message}\n`);
143
+ return 3;
144
+ }
145
+ // The wake queue: one JSON line per task, overwritten each cycle — a
146
+ // snapshot for tonight's agent, not a log. Gitignored (local curation
147
+ // state, like the provenance log).
148
+ let queuePath = null;
149
+ if (!argv.includes("--no-queue")) {
150
+ queuePath = wakeQueuePath(vaultRoot);
151
+ try {
152
+ await mkdir(dirname(queuePath), { recursive: true });
153
+ const lines = cycle.value.wake.map((w) => JSON.stringify(w)).join("\n");
154
+ await writeFile(queuePath, lines.length > 0 ? `${lines}\n` : "", "utf-8");
155
+ }
156
+ catch (e) {
157
+ const reason = e instanceof Error ? e.message : String(e);
158
+ process.stderr.write(`daftari sleep: wake-queue write failed: ${reason}\n`);
159
+ return 3;
160
+ }
161
+ }
162
+ const report = {
163
+ generatedAt: new Date().toISOString(),
164
+ vault: vaultRoot,
165
+ cycle: cycle.value,
166
+ wakeQueuePath: queuePath,
167
+ wakeLimit,
168
+ };
169
+ const md = renderMarkdown(report);
170
+ const outputMd = readStringArg(argv, "--output");
171
+ const outputJson = readStringArg(argv, "--output-json");
172
+ try {
173
+ if (outputMd) {
174
+ await writeFile(resolve(outputMd), md, "utf-8");
175
+ }
176
+ else {
177
+ process.stdout.write(md);
178
+ }
179
+ if (outputJson) {
180
+ await writeFile(resolve(outputJson), renderJson(report), "utf-8");
181
+ }
182
+ }
183
+ catch (e) {
184
+ const reason = e instanceof Error ? e.message : String(e);
185
+ process.stderr.write(`daftari sleep: write failed: ${reason}\n`);
186
+ return 3;
187
+ }
188
+ return 0;
189
+ }
190
+ // --- the tension-scan dream ---------------------------------------------------
191
+ // Positive-integer flag parse shared by the two budget flags. Undefined means
192
+ // "not given" (fall back to config); anything non-integer or < 1 is a usage
193
+ // error.
194
+ function readPositiveInt(argv, flagName) {
195
+ const raw = readStringArg(argv, flagName);
196
+ if (raw === undefined)
197
+ return { value: undefined };
198
+ const n = Number(raw);
199
+ if (!Number.isInteger(n) || n < 1) {
200
+ return { value: undefined, error: `${flagName} must be a positive integer` };
201
+ }
202
+ return { value: n };
203
+ }
204
+ // Transport-aware LLM construction (the consolidate loop's pattern): the key
205
+ // check runs before the constructor so a missing key fails fast with a clear
206
+ // message instead of the client's terse internal throw.
207
+ function constructLlm(transport) {
208
+ const keyVar = transport === "openrouter" ? "OPENROUTER_API_KEY" : "ANTHROPIC_API_KEY";
209
+ if (!process.env[keyVar]) {
210
+ return { error: `${keyVar} env var is required (transport: ${transport})` };
211
+ }
212
+ try {
213
+ return {
214
+ llm: transport === "openrouter" ? createOpenRouterClient() : createAnthropicClient(),
215
+ };
216
+ }
217
+ catch (e) {
218
+ return { error: e instanceof Error ? e.message : String(e) };
219
+ }
220
+ }
221
+ async function runTensionScanCli(argv, vaultRoot) {
222
+ const cfg = loadConfig(vaultRoot);
223
+ if (!cfg.ok) {
224
+ process.stderr.write(`daftari sleep: ${cfg.error.message}\n`);
225
+ return 2;
226
+ }
227
+ const maxLlmCalls = readPositiveInt(argv, "--max-llm-calls");
228
+ if (maxLlmCalls.error) {
229
+ process.stderr.write(`daftari sleep: ${maxLlmCalls.error}\n`);
230
+ return 2;
231
+ }
232
+ const maxDocs = readPositiveInt(argv, "--max-docs");
233
+ if (maxDocs.error) {
234
+ process.stderr.write(`daftari sleep: ${maxDocs.error}\n`);
235
+ return 2;
236
+ }
237
+ const transportRes = resolveTransport(readStringArg(argv, "--transport"));
238
+ if (!transportRes.ok) {
239
+ process.stderr.write(`daftari sleep: ${transportRes.error.message}\n`);
240
+ return 2;
241
+ }
242
+ const transport = transportRes.value;
243
+ const model = readStringArg(argv, "--model") ??
244
+ (transport === "openrouter"
245
+ ? TENSION_SCAN_DEFAULT_MODEL_OPENROUTER
246
+ : TENSION_SCAN_DEFAULT_MODEL);
247
+ const llmRes = constructLlm(transport);
248
+ if ("error" in llmRes) {
249
+ process.stderr.write(`daftari sleep: ${llmRes.error}\n`);
250
+ return 2;
251
+ }
252
+ // RBAC: --role builds the same gate vault_tension_log enforces —
253
+ // sourceReadable over both sides of every pair, resolved against the index
254
+ // when it opens (fail-closed to the first-segment rule when it does not).
255
+ // No --role ⇒ unrestricted, matching every read surface when RBAC is off.
256
+ const roleName = readStringArg(argv, "--role");
257
+ const user = readStringArg(argv, "--user");
258
+ let sourceVisible;
259
+ let accessDb;
260
+ let access;
261
+ if (roleName !== undefined) {
262
+ access = resolveAccess(cfg.value, user ?? `agent:${roleName}`, roleName);
263
+ accessDb = openIndexForActiveProvider(vaultRoot);
264
+ const db = accessDb.ok ? accessDb.value : null;
265
+ const ctx = access;
266
+ sourceVisible = (path) => sourceReadable(db, ctx, path);
267
+ }
268
+ const deps = {
269
+ llm: llmRes.llm,
270
+ searchNeighbors: async (path, limit) => {
271
+ const r = await vaultSearchRelated(vaultRoot, { path, limit }, access);
272
+ if (!r.ok)
273
+ return r;
274
+ return ok(r.value.hits.map((h) => h.path));
275
+ },
276
+ ...(sourceVisible ? { sourceVisible } : {}),
277
+ };
278
+ try {
279
+ const scan = await runTensionScan({
280
+ vaultRoot,
281
+ agent: readStringArg(argv, "--agent") ?? cfg.value.tensionScan.agent,
282
+ model,
283
+ maxLlmCalls: maxLlmCalls.value ?? cfg.value.tensionScan.maxLlmCalls,
284
+ maxDocs: maxDocs.value ?? cfg.value.tensionScan.maxDocs,
285
+ }, deps);
286
+ if (!scan.ok) {
287
+ process.stderr.write(`daftari sleep: ${scan.error.message}\n`);
288
+ return 3;
289
+ }
290
+ if (scan.value.stateWriteError) {
291
+ process.stderr.write(`daftari sleep: tension-scan state write failed: ${scan.value.stateWriteError} — ` +
292
+ "the next pass re-baselines (some budget will be re-spent)\n");
293
+ }
294
+ const md = renderTensionScanMarkdown(vaultRoot, model, scan.value);
295
+ const outputMd = readStringArg(argv, "--output");
296
+ const outputJson = readStringArg(argv, "--output-json");
297
+ try {
298
+ if (outputMd) {
299
+ await writeFile(resolve(outputMd), md, "utf-8");
300
+ }
301
+ else {
302
+ process.stdout.write(md);
303
+ }
304
+ if (outputJson) {
305
+ await writeFile(resolve(outputJson), renderTensionScanJson(scan.value), "utf-8");
306
+ }
307
+ }
308
+ catch (e) {
309
+ const reason = e instanceof Error ? e.message : String(e);
310
+ process.stderr.write(`daftari sleep: write failed: ${reason}\n`);
311
+ return 3;
312
+ }
313
+ return 0;
314
+ }
315
+ finally {
316
+ if (accessDb?.ok)
317
+ accessDb.value.close();
318
+ }
319
+ }
320
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sleep/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,2EAA2E;AAC3E,0DAA0D;AAC1D,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,yEAAyE;AACzE,EAAE;AACF,sEAAsE;AACtE,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,8DAA8D;AAC9D,EAAE;AACF,qCAAqC;AACrC,kCAAkC;AAClC,2BAA2B;AAC3B,mCAAmC;AAEnC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAkB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,sBAAsB,EAEtB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,yBAAyB,GAE1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AAEzE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,0EAA0E;AAC1E,2EAA2E;AAC3E,6DAA6D;AAC7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,mBAAmB,CAAC;AAC9D,MAAM,CAAC,MAAM,qCAAqC,GAAG,6BAA6B,CAAC;AAEnF,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,cAAc,CAAU,CAAC;AAG3D,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAgC2D,kBAAkB;;;;;;;;;;;;iDAYzC,0BAA0B;;;;;;;;;;;;;;;;;;;;;CAqB1E,CAAC;AAEF,SAAS,aAAa,CAAC,IAAc,EAAE,IAAY;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,WAAW,CAAC;IAC5D,IAAI,CAAE,WAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yCAAyC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,CACjF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAK,KAAmB,KAAK,cAAc,EAAE,CAAC;QAC5C,OAAO,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,SAAS,GAAG,kBAAkB,CAAC;IACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACjF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,SAAS,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,qEAAqE;IACrE,sEAAsE;IACtE,mCAAmC;IACnC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,MAAM,IAAI,CAAC,CAAC;YAC5E,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAgB;QAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,SAAS;QACxB,SAAS;KACV,CAAC;IAEF,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,MAAM,IAAI,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,iFAAiF;AAEjF,8EAA8E;AAC9E,4EAA4E;AAC5E,SAAS;AACT,SAAS,eAAe,CACtB,IAAc,EACd,QAAgB;IAEhB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,QAAQ,6BAA6B,EAAE,CAAC;IAC/E,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACtB,CAAC;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,wDAAwD;AACxD,SAAS,YAAY,CAAC,SAAuB;IAC3C,MAAM,MAAM,GAAG,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACvF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,oCAAoC,SAAS,GAAG,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC;QACH,OAAO;YACL,GAAG,EAAE,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE;SACrF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAc,EAAE,SAAiB;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC7D,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,YAAY,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;IACrC,MAAM,KAAK,GACT,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;QAC9B,CAAC,SAAS,KAAK,YAAY;YACzB,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,0BAA0B,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iEAAiE;IACjE,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,aAAsD,CAAC;IAC3D,IAAI,QAAmE,CAAC;IACxE,IAAI,MAAoD,CAAC;IACzD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,SAAS,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzE,QAAQ,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC;QACnB,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,IAAI,GAAoB;QAC5B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAC/B;YACE,SAAS;YACT,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK;YACpE,KAAK;YACL,WAAW,EAAE,WAAW,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW;YACnE,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO;SACxD,EACD,IAAI,CACL,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK;gBAChF,6DAA6D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,MAAM,IAAI,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,IAAI,QAAQ,EAAE,EAAE;YAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { SleepCycleResult } from "./cycle.js";
2
+ import type { TensionScanOutcome } from "./tension-scan.js";
3
+ export interface SleepReport {
4
+ generatedAt: string;
5
+ vault: string;
6
+ cycle: SleepCycleResult;
7
+ wakeQueuePath: string | null;
8
+ wakeLimit: number;
9
+ }
10
+ export declare function renderMarkdown(report: SleepReport): string;
11
+ export declare function renderJson(report: SleepReport): string;
12
+ export declare function renderTensionScanMarkdown(vault: string, model: string, s: TensionScanOutcome): string;
13
+ export declare function renderTensionScanJson(s: TensionScanOutcome): string;
14
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/sleep/report.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAY,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA2F1D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEtD;AASD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,CAAC,EAAE,kBAAkB,GACpB,MAAM,CAqDR;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,139 @@
1
+ // The Morning Report — what the vault metabolized overnight, rendered for
2
+ // the human who ratifies. Same conventions as the audit and court reports:
3
+ // markdown to stdout by default, JSON with full detail, capped lists with an
4
+ // explicit "+n more" so truncation is visible, never silent.
5
+ function wakeLine(w) {
6
+ return (`| ${w.path} | ${w.ageDays}d / ${w.ttlDays ?? "—"}d | ` +
7
+ `${w.blastTotal} (${w.blastPrimary}p/${w.blastAdvisory}a) | ${w.sources.join(", ") || "—"} |`);
8
+ }
9
+ export function renderMarkdown(report) {
10
+ const c = report.cycle;
11
+ const lines = [];
12
+ lines.push("# Morning Report");
13
+ lines.push("");
14
+ lines.push(`Overnight pass of ${report.vault} — decay measured, nothing resolved. ` +
15
+ `The vault proposes; you ratify.`);
16
+ lines.push("");
17
+ lines.push("## Freshness");
18
+ lines.push(`- ${c.staleness.fresh} fresh · ${c.staleness.aging} aging · ` +
19
+ `**${c.staleness.stale} stale** of ${c.staleness.total} documents`);
20
+ if (c.generativeStale > 0) {
21
+ lines.push(`- generative docs past TTL: ${c.generativeStale} (expected for the domain — not woken)`);
22
+ }
23
+ lines.push("");
24
+ lines.push(`## Wake list — ${c.wake.length} load-bearing decayed document(s)`);
25
+ if (c.wake.length === 0) {
26
+ lines.push("Nothing needs waking. Every canonical document with dependents is inside TTL.");
27
+ }
28
+ else {
29
+ lines.push("Canonical, past TTL, with downstream dependents. Point an agent at the " +
30
+ "wake queue to re-verify each against its sources and stage diffs for " +
31
+ "ratification — the vault never re-verifies on its own.");
32
+ lines.push("");
33
+ lines.push("| doc | age / TTL | blast | sources |");
34
+ lines.push("|-----|-----------|-------|---------|");
35
+ for (const w of c.wake.slice(0, report.wakeLimit))
36
+ lines.push(wakeLine(w));
37
+ if (c.wake.length > report.wakeLimit) {
38
+ lines.push(`| …and ${c.wake.length - report.wakeLimit} more (full list in the queue) | | | |`);
39
+ }
40
+ if (report.wakeQueuePath) {
41
+ lines.push("");
42
+ lines.push(`Queue written to \`${report.wakeQueuePath}\`.`);
43
+ }
44
+ }
45
+ lines.push("");
46
+ if (c.decayedQuiet.length > 0) {
47
+ lines.push(`## Quiet decay — ${c.decayedQuiet.length} expired doc(s) with no dependents`);
48
+ for (const q of c.decayedQuiet.slice(0, 10))
49
+ lines.push(`- ${q.path} (${q.ageDays}d)`);
50
+ if (c.decayedQuiet.length > 10)
51
+ lines.push(`- …and ${c.decayedQuiet.length - 10} more`);
52
+ lines.push("");
53
+ }
54
+ lines.push("## Tensions");
55
+ lines.push(`- open: ${c.tensions.open} · stale tier: ${c.tensions.stale.length}`);
56
+ if (c.tensions.docketTop.length > 0) {
57
+ lines.push("- docket head (see `daftari court` for full briefs):");
58
+ for (const d of c.tensions.docketTop) {
59
+ lines.push(` - [${d.tier}] ${d.title} — blast ${d.blastTotal}${d.id ? ` (${d.id})` : ""}`);
60
+ }
61
+ }
62
+ lines.push("");
63
+ lines.push("## Ratification queue");
64
+ lines.push(`- pending: ${c.ratification.pending}`);
65
+ if (c.ratification.expiringSoon.length > 0) {
66
+ lines.push("- expiring within 3 days:");
67
+ for (const a of c.ratification.expiringSoon) {
68
+ lines.push(` - ${a.id} · ${a.actionType} · ${a.targetPath} · ${a.daysLeft}d left`);
69
+ }
70
+ }
71
+ if (c.sweptExpired.length > 0) {
72
+ lines.push(`- expired overnight (swept): ${c.sweptExpired.length}`);
73
+ }
74
+ const h = c.ratification.history;
75
+ lines.push(`- decision history: ${h.ratified} ratified · ${h.rejected} rejected · ${h.expired} expired`);
76
+ // The circadian kill-condition monitor, stated where the human will see it.
77
+ if (h.ratified + h.rejected >= 10 && h.rejected === 0) {
78
+ lines.push("- ⚠ zero rejections on record — if everything staged gets approved, " +
79
+ "ratification may be rubber-stamping. Sample a few approvals and check.");
80
+ }
81
+ lines.push("");
82
+ return `${lines.join("\n")}\n`;
83
+ }
84
+ export function renderJson(report) {
85
+ return `${JSON.stringify(report, null, 2)}\n`;
86
+ }
87
+ // --- tension-scan dream report --------------------------------------------
88
+ //
89
+ // Same posture as the Morning Report: the scan records, it never resolves.
90
+ // Every count is machine-derived from the pass — the anti-theatre
91
+ // instrumentation the demo established (searches, judgments, tensions all
92
+ // counted; no eyeball verification).
93
+ export function renderTensionScanMarkdown(vault, model, s) {
94
+ const lines = [];
95
+ lines.push("# Dream Report — tension scan");
96
+ lines.push("");
97
+ lines.push(`Contradiction pass of ${vault} (judge: ${model}) — conflicts recorded ` +
98
+ `on the tension ledger, nothing resolved. The vault proposes; you ratify.`);
99
+ lines.push("");
100
+ lines.push("## Spend");
101
+ lines.push(`- ${s.candidates} candidate doc(s), ${s.docsScanned} fully scanned · ` +
102
+ `${s.searchCalls} related-doc searches`);
103
+ lines.push(`- ${s.pairsJudged} pairwise LLM judgment(s)` +
104
+ (s.budgetExhausted ? " · **budget exhausted — pass short-circuited**" : ""));
105
+ lines.push(`- skipped without spend: ${s.pairsSkippedJudged} already judged · ` +
106
+ `${s.pairsSkippedExistingTension} already on the ledger · ` +
107
+ `${s.pairsSkippedAccess} access-denied`);
108
+ if (s.parseFailures > 0) {
109
+ lines.push(`- unparseable verdicts (defaulted to no-conflict): ${s.parseFailures}`);
110
+ }
111
+ lines.push("");
112
+ lines.push(`## Tensions logged — ${s.tensionsLogged}`);
113
+ if (s.tensions.length === 0) {
114
+ lines.push("No conflicts found among the judged pairs.");
115
+ }
116
+ else {
117
+ for (const t of s.tensions) {
118
+ lines.push(`- [${t.kind}] ${t.sourceA} <-> ${t.sourceB}` +
119
+ `${t.id ? ` (${t.id})` : ""}${t.reason ? ` — ${t.reason}` : ""}`);
120
+ }
121
+ lines.push("");
122
+ lines.push("Review with `daftari court`; resolve with `vault_tension_resolve`.");
123
+ }
124
+ if (s.tensionLogFailures > 0) {
125
+ lines.push("");
126
+ lines.push(`⚠ ${s.tensionLogFailures} tension write(s) failed — see stderr.`);
127
+ }
128
+ if (s.budgetExhausted) {
129
+ lines.push("");
130
+ lines.push("Budget exhausted before every candidate was scanned — the remainder " +
131
+ "re-enters the next pass's queue (judged pairs are not re-billed).");
132
+ }
133
+ lines.push("");
134
+ return `${lines.join("\n")}\n`;
135
+ }
136
+ export function renderTensionScanJson(s) {
137
+ return `${JSON.stringify(s, null, 2)}\n`;
138
+ }
139
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/sleep/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type Result } from "../frontmatter/types.js";
2
+ export interface TensionScanState {
3
+ lastScanCommit: string | null;
4
+ scanned: Record<string, string>;
5
+ judgedPairs: string[];
6
+ }
7
+ export declare function emptyTensionScanState(): TensionScanState;
8
+ export declare function tensionScanStatePath(vaultRoot: string): string;
9
+ export declare function scanContentHash(content: string): string;
10
+ export declare function pairHash(a: {
11
+ path: string;
12
+ contentHash: string;
13
+ }, b: {
14
+ path: string;
15
+ contentHash: string;
16
+ }): string;
17
+ export declare function readTensionScanState(vaultRoot: string): TensionScanState;
18
+ export declare function writeTensionScanState(vaultRoot: string, state: TensionScanState): Result<void, Error>;
19
+ //# sourceMappingURL=tension-scan-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tension-scan-state.d.ts","sourceRoot":"","sources":["../../src/sleep/tension-scan-state.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,qBAAqB,IAAI,gBAAgB,CAExD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAKD,wBAAgB,QAAQ,CACtB,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvC,MAAM,CAGR;AAGD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAkBxE;AAID,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAarB"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tension-scan-state.js","sourceRoot":"","sources":["../../src/sleep/tension-scan-state.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,wBAAwB;AACxB,qEAAqE;AACrE,uDAAuD;AACvD,4EAA4E;AAC5E,4EAA4E;AAC5E,kCAAkC;AAClC,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,wCAAwC;AACxC,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAE3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAU7C,MAAM,UAAU,qBAAqB;IACnC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAC;AAChE,CAAC;AAED,6EAA6E;AAC7E,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CACtB,CAAwC,EACxC,CAAwC;IAExC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,qBAAqB,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAA8B,CAAC;QAC9E,OAAO;YACL,cAAc,EAAE,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;YAClF,OAAO,EACL,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC3E,CAAC,CAAE,GAAG,CAAC,OAAkC;gBACzC,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;gBACzC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBACnE,CAAC,CAAC,EAAE;SACP,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,KAAuB;IAEvB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC1C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,aAAa,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { type LoggableTensionKind } from "../curation/tension.js";
2
+ import type { LlmClient } from "../eval/llm.js";
3
+ import { type Result } from "../frontmatter/types.js";
4
+ export declare const TENSION_SCAN_RELATED_LIMIT = 6;
5
+ export interface TensionScanDeps {
6
+ llm: LlmClient;
7
+ searchNeighbors: (path: string, limit: number) => Promise<Result<string[], Error>>;
8
+ sourceVisible?: (path: string) => boolean;
9
+ }
10
+ export interface TensionScanOpts {
11
+ vaultRoot: string;
12
+ agent: string;
13
+ model: string;
14
+ maxLlmCalls: number;
15
+ maxDocs: number;
16
+ relatedLimit?: number;
17
+ now?: Date;
18
+ }
19
+ export interface LoggedTension {
20
+ id: string | null;
21
+ kind: LoggableTensionKind;
22
+ sourceA: string;
23
+ sourceB: string;
24
+ reason: string;
25
+ }
26
+ export interface TensionScanOutcome {
27
+ candidates: number;
28
+ docsScanned: number;
29
+ searchCalls: number;
30
+ pairsConsidered: number;
31
+ pairsJudged: number;
32
+ pairsSkippedJudged: number;
33
+ pairsSkippedExistingTension: number;
34
+ pairsSkippedAccess: number;
35
+ parseFailures: number;
36
+ tensionsLogged: number;
37
+ tensionLogFailures: number;
38
+ budgetExhausted: boolean;
39
+ tensions: LoggedTension[];
40
+ stateWriteError?: string;
41
+ }
42
+ export declare function claimText(body: string): string;
43
+ export declare function runTensionScan(opts: TensionScanOpts, deps: TensionScanDeps): Promise<Result<TensionScanOutcome, Error>>;
44
+ //# sourceMappingURL=tension-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tension-scan.d.ts","sourceRoot":"","sources":["../../src/sleep/tension-scan.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAc,KAAK,mBAAmB,EAAgB,MAAM,wBAAwB,CAAC;AAE5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAY1D,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAyB5C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IAIf,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAInF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B,EAAE,MAAM,CAAC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAsCD,wBAAsB,cAAc,CAClC,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CA+L5C"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tension-scan.js","sourceRoot":"","sources":["../../src/sleep/tension-scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type Result } from "../frontmatter/types.js";
2
+ import type { StorageConfig } from "../utils/config.js";
3
+ export interface StorageBackend {
4
+ id: string;
5
+ get(key: string): Promise<Result<Buffer | null, Error>>;
6
+ put(key: string, data: Buffer): Promise<Result<void, Error>>;
7
+ list(prefix: string): Promise<Result<string[], Error>>;
8
+ delete(key: string): Promise<Result<void, Error>>;
9
+ }
10
+ export declare function validateEndpoint(endpoint: string): Result<void, Error>;
11
+ export declare function createBackend(config: StorageConfig): Promise<Result<StorageBackend, Error>>;
12
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/storage/backend.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,cAAc;IAE7B,EAAE,EAAE,MAAM,CAAC;IAEX,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAEvD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;CACnD;AASD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAiBtE;AA6MD,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CA6BjG"}