clinkx 0.3.0 → 1.0.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 (555) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +10 -0
  3. package/README.md +82 -26
  4. package/clinkx-workflows/dist/allowed-roots.d.ts +1 -0
  5. package/clinkx-workflows/dist/allowed-roots.js +5 -0
  6. package/clinkx-workflows/dist/allowed-roots.js.map +1 -0
  7. package/clinkx-workflows/dist/artifacts.d.ts +20 -1
  8. package/clinkx-workflows/dist/artifacts.js +38 -9
  9. package/clinkx-workflows/dist/artifacts.js.map +1 -1
  10. package/clinkx-workflows/dist/backend.d.ts +4 -0
  11. package/clinkx-workflows/dist/citation-check.d.ts +40 -0
  12. package/clinkx-workflows/dist/citation-check.js +348 -0
  13. package/clinkx-workflows/dist/citation-check.js.map +1 -0
  14. package/clinkx-workflows/dist/clink-client.d.ts +2 -1
  15. package/clinkx-workflows/dist/clink-client.js +17 -4
  16. package/clinkx-workflows/dist/clink-client.js.map +1 -1
  17. package/clinkx-workflows/dist/config.d.ts +145 -16
  18. package/clinkx-workflows/dist/config.js +384 -26
  19. package/clinkx-workflows/dist/config.js.map +1 -1
  20. package/clinkx-workflows/dist/contained-file.d.ts +172 -0
  21. package/clinkx-workflows/dist/contained-file.js +483 -0
  22. package/clinkx-workflows/dist/contained-file.js.map +1 -0
  23. package/clinkx-workflows/dist/context-builder-lifecycle-contract.d.ts +416 -0
  24. package/clinkx-workflows/dist/context-builder-lifecycle-contract.js +328 -0
  25. package/clinkx-workflows/dist/context-builder-lifecycle-contract.js.map +1 -0
  26. package/clinkx-workflows/dist/context-builder-lifecycle-router.d.ts +24 -0
  27. package/clinkx-workflows/dist/context-builder-lifecycle-router.js +39 -0
  28. package/clinkx-workflows/dist/context-builder-lifecycle-router.js.map +1 -0
  29. package/clinkx-workflows/dist/context-cache-key.d.ts +53 -0
  30. package/clinkx-workflows/dist/context-cache-key.js +91 -0
  31. package/clinkx-workflows/dist/context-cache-key.js.map +1 -0
  32. package/clinkx-workflows/dist/context-mode-resolver.d.ts +27 -0
  33. package/clinkx-workflows/dist/context-mode-resolver.js +126 -0
  34. package/clinkx-workflows/dist/context-mode-resolver.js.map +1 -0
  35. package/clinkx-workflows/dist/context-preflight.d.ts +184 -0
  36. package/clinkx-workflows/dist/context-preflight.js +91 -0
  37. package/clinkx-workflows/dist/context-preflight.js.map +1 -0
  38. package/clinkx-workflows/dist/council-expander.d.ts +1 -1
  39. package/clinkx-workflows/dist/council-expander.js +2 -1
  40. package/clinkx-workflows/dist/council-expander.js.map +1 -1
  41. package/clinkx-workflows/dist/dashboard/activity-contract.d.ts +165 -0
  42. package/clinkx-workflows/dist/dashboard/activity-contract.js +105 -0
  43. package/clinkx-workflows/dist/dashboard/activity-contract.js.map +1 -0
  44. package/clinkx-workflows/dist/dashboard/activity-lease.d.ts +25 -0
  45. package/clinkx-workflows/dist/dashboard/activity-lease.js +34 -0
  46. package/clinkx-workflows/dist/dashboard/activity-lease.js.map +1 -0
  47. package/clinkx-workflows/dist/dashboard/activity-reader.d.ts +86 -0
  48. package/clinkx-workflows/dist/dashboard/activity-reader.js +480 -0
  49. package/clinkx-workflows/dist/dashboard/activity-reader.js.map +1 -0
  50. package/clinkx-workflows/dist/dashboard/api-routes.d.ts +36 -0
  51. package/clinkx-workflows/dist/dashboard/api-routes.js +1047 -0
  52. package/clinkx-workflows/dist/dashboard/api-routes.js.map +1 -0
  53. package/clinkx-workflows/dist/dashboard/artifact-index.d.ts +37 -0
  54. package/clinkx-workflows/dist/dashboard/artifact-index.js +145 -0
  55. package/clinkx-workflows/dist/dashboard/artifact-index.js.map +1 -0
  56. package/clinkx-workflows/dist/dashboard/auth/challenge-store.d.ts +31 -0
  57. package/clinkx-workflows/dist/dashboard/auth/challenge-store.js +65 -0
  58. package/clinkx-workflows/dist/dashboard/auth/challenge-store.js.map +1 -0
  59. package/clinkx-workflows/dist/dashboard/auth/controller.d.ts +26 -0
  60. package/clinkx-workflows/dist/dashboard/auth/controller.js +596 -0
  61. package/clinkx-workflows/dist/dashboard/auth/controller.js.map +1 -0
  62. package/clinkx-workflows/dist/dashboard/auth/credential-store.d.ts +60 -0
  63. package/clinkx-workflows/dist/dashboard/auth/credential-store.js +776 -0
  64. package/clinkx-workflows/dist/dashboard/auth/credential-store.js.map +1 -0
  65. package/clinkx-workflows/dist/dashboard/auth/enrollment-gate.d.ts +9 -0
  66. package/clinkx-workflows/dist/dashboard/auth/enrollment-gate.js +44 -0
  67. package/clinkx-workflows/dist/dashboard/auth/enrollment-gate.js.map +1 -0
  68. package/clinkx-workflows/dist/dashboard/auth/session-store.d.ts +17 -0
  69. package/clinkx-workflows/dist/dashboard/auth/session-store.js +77 -0
  70. package/clinkx-workflows/dist/dashboard/auth/session-store.js.map +1 -0
  71. package/clinkx-workflows/dist/dashboard/auth/webauthn-service.d.ts +25 -0
  72. package/clinkx-workflows/dist/dashboard/auth/webauthn-service.js +71 -0
  73. package/clinkx-workflows/dist/dashboard/auth/webauthn-service.js.map +1 -0
  74. package/clinkx-workflows/dist/dashboard/context-run-liveness.d.ts +37 -0
  75. package/clinkx-workflows/dist/dashboard/context-run-liveness.js +49 -0
  76. package/clinkx-workflows/dist/dashboard/context-run-liveness.js.map +1 -0
  77. package/clinkx-workflows/dist/dashboard/context-run-reader.d.ts +222 -0
  78. package/clinkx-workflows/dist/dashboard/context-run-reader.js +1178 -0
  79. package/clinkx-workflows/dist/dashboard/context-run-reader.js.map +1 -0
  80. package/clinkx-workflows/dist/dashboard/contracts.d.ts +8936 -0
  81. package/clinkx-workflows/dist/dashboard/contracts.js +1157 -0
  82. package/clinkx-workflows/dist/dashboard/contracts.js.map +1 -0
  83. package/clinkx-workflows/dist/dashboard/generation.d.ts +14 -0
  84. package/clinkx-workflows/dist/dashboard/generation.js +41 -0
  85. package/clinkx-workflows/dist/dashboard/generation.js.map +1 -0
  86. package/clinkx-workflows/dist/dashboard/index.d.ts +28 -0
  87. package/clinkx-workflows/dist/dashboard/index.js +16 -0
  88. package/clinkx-workflows/dist/dashboard/index.js.map +1 -0
  89. package/clinkx-workflows/dist/dashboard/lazy-content.d.ts +101 -0
  90. package/clinkx-workflows/dist/dashboard/lazy-content.js +748 -0
  91. package/clinkx-workflows/dist/dashboard/lazy-content.js.map +1 -0
  92. package/clinkx-workflows/dist/dashboard/progress-report-contract.d.ts +303 -0
  93. package/clinkx-workflows/dist/dashboard/progress-report-contract.js +221 -0
  94. package/clinkx-workflows/dist/dashboard/progress-report-contract.js.map +1 -0
  95. package/clinkx-workflows/dist/dashboard/progress-report-reader.d.ts +50 -0
  96. package/clinkx-workflows/dist/dashboard/progress-report-reader.js +581 -0
  97. package/clinkx-workflows/dist/dashboard/progress-report-reader.js.map +1 -0
  98. package/clinkx-workflows/dist/dashboard/progress-report-status-overlay.d.ts +89 -0
  99. package/clinkx-workflows/dist/dashboard/progress-report-status-overlay.js +71 -0
  100. package/clinkx-workflows/dist/dashboard/progress-report-status-overlay.js.map +1 -0
  101. package/clinkx-workflows/dist/dashboard/progress-report-status-store.d.ts +28 -0
  102. package/clinkx-workflows/dist/dashboard/progress-report-status-store.js +110 -0
  103. package/clinkx-workflows/dist/dashboard/progress-report-status-store.js.map +1 -0
  104. package/clinkx-workflows/dist/dashboard/read-model.d.ts +86 -0
  105. package/clinkx-workflows/dist/dashboard/read-model.js +440 -0
  106. package/clinkx-workflows/dist/dashboard/read-model.js.map +1 -0
  107. package/clinkx-workflows/dist/dashboard/request-admission.d.ts +31 -0
  108. package/clinkx-workflows/dist/dashboard/request-admission.js +126 -0
  109. package/clinkx-workflows/dist/dashboard/request-admission.js.map +1 -0
  110. package/clinkx-workflows/dist/dashboard/scanner.d.ts +75 -0
  111. package/clinkx-workflows/dist/dashboard/scanner.js +1110 -0
  112. package/clinkx-workflows/dist/dashboard/scanner.js.map +1 -0
  113. package/clinkx-workflows/dist/dashboard/server-factory.d.ts +50 -0
  114. package/clinkx-workflows/dist/dashboard/server-factory.js +431 -0
  115. package/clinkx-workflows/dist/dashboard/server-factory.js.map +1 -0
  116. package/clinkx-workflows/dist/dashboard/session-log-contract.d.ts +2611 -0
  117. package/clinkx-workflows/dist/dashboard/session-log-contract.js +480 -0
  118. package/clinkx-workflows/dist/dashboard/session-log-contract.js.map +1 -0
  119. package/clinkx-workflows/dist/dashboard/session-log-identity.d.ts +21 -0
  120. package/clinkx-workflows/dist/dashboard/session-log-identity.js +101 -0
  121. package/clinkx-workflows/dist/dashboard/session-log-identity.js.map +1 -0
  122. package/clinkx-workflows/dist/dashboard/session-log-journal.d.ts +43 -0
  123. package/clinkx-workflows/dist/dashboard/session-log-journal.js +522 -0
  124. package/clinkx-workflows/dist/dashboard/session-log-journal.js.map +1 -0
  125. package/clinkx-workflows/dist/dashboard/session-log-reader.d.ts +61 -0
  126. package/clinkx-workflows/dist/dashboard/session-log-reader.js +378 -0
  127. package/clinkx-workflows/dist/dashboard/session-log-reader.js.map +1 -0
  128. package/clinkx-workflows/dist/dashboard/session-log-redaction.d.ts +6 -0
  129. package/clinkx-workflows/dist/dashboard/session-log-redaction.js +367 -0
  130. package/clinkx-workflows/dist/dashboard/session-log-redaction.js.map +1 -0
  131. package/clinkx-workflows/dist/dashboard/session-log-retention.d.ts +23 -0
  132. package/clinkx-workflows/dist/dashboard/session-log-retention.js +212 -0
  133. package/clinkx-workflows/dist/dashboard/session-log-retention.js.map +1 -0
  134. package/clinkx-workflows/dist/dashboard/static-responses.d.ts +10 -0
  135. package/clinkx-workflows/dist/dashboard/static-responses.js +94 -0
  136. package/clinkx-workflows/dist/dashboard/static-responses.js.map +1 -0
  137. package/clinkx-workflows/dist/dashboard/worker-lock-observer.d.ts +28 -0
  138. package/clinkx-workflows/dist/dashboard/worker-lock-observer.js +241 -0
  139. package/clinkx-workflows/dist/dashboard/worker-lock-observer.js.map +1 -0
  140. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  141. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  142. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  143. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  144. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  145. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  146. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  147. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  148. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  149. package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  150. package/clinkx-workflows/dist/dashboard-ui/assets/index-DOkMXTfB.js +25 -0
  151. package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  152. package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  153. package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  154. package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  155. package/clinkx-workflows/dist/dashboard-ui/assets/style-ChJsn0KD.css +1 -0
  156. package/clinkx-workflows/dist/dashboard-ui/contracts/council-plan-review-input-v1.json +158 -0
  157. package/clinkx-workflows/dist/dashboard-ui/index.html +15 -0
  158. package/clinkx-workflows/dist/dashboard-ui/licenses/IBM-Plex-Mono-OFL.txt +93 -0
  159. package/clinkx-workflows/dist/dashboard-ui/licenses/IBM-Plex-Sans-OFL.txt +93 -0
  160. package/clinkx-workflows/dist/dashboard-ui/licenses/JetBrains-Mono-OFL.txt +93 -0
  161. package/clinkx-workflows/dist/dashboard-ui/licenses/NOTICE.md +32 -0
  162. package/clinkx-workflows/dist/dashboard-ui/theme-init.js +8 -0
  163. package/clinkx-workflows/dist/definition-normalizer.d.ts +19 -0
  164. package/clinkx-workflows/dist/definition-normalizer.js.map +1 -1
  165. package/clinkx-workflows/dist/delegate-validate.d.ts +78 -0
  166. package/clinkx-workflows/dist/delegate-validate.js +97 -0
  167. package/clinkx-workflows/dist/delegate-validate.js.map +1 -0
  168. package/clinkx-workflows/dist/engine.d.ts +141 -0
  169. package/clinkx-workflows/dist/engine.js +882 -28
  170. package/clinkx-workflows/dist/engine.js.map +1 -1
  171. package/clinkx-workflows/dist/errors.d.ts +2 -0
  172. package/clinkx-workflows/dist/errors.js.map +1 -1
  173. package/clinkx-workflows/dist/fingerprint.d.ts +1 -1
  174. package/clinkx-workflows/dist/fingerprint.js +1 -1
  175. package/clinkx-workflows/dist/index.d.ts +19 -0
  176. package/clinkx-workflows/dist/index.js +15 -0
  177. package/clinkx-workflows/dist/index.js.map +1 -1
  178. package/clinkx-workflows/dist/loader.d.ts +9 -3
  179. package/clinkx-workflows/dist/loader.js +92 -21
  180. package/clinkx-workflows/dist/loader.js.map +1 -1
  181. package/clinkx-workflows/dist/plan-review/admission.d.ts +160 -0
  182. package/clinkx-workflows/dist/plan-review/admission.js +290 -0
  183. package/clinkx-workflows/dist/plan-review/admission.js.map +1 -0
  184. package/clinkx-workflows/dist/plan-review/context-policy.d.ts +55 -0
  185. package/clinkx-workflows/dist/plan-review/context-policy.js +146 -0
  186. package/clinkx-workflows/dist/plan-review/context-policy.js.map +1 -0
  187. package/clinkx-workflows/dist/plan-review/contract.d.ts +763 -0
  188. package/clinkx-workflows/dist/plan-review/contract.js +289 -0
  189. package/clinkx-workflows/dist/plan-review/contract.js.map +1 -0
  190. package/clinkx-workflows/dist/plan-review/digest.d.ts +68 -0
  191. package/clinkx-workflows/dist/plan-review/digest.js +241 -0
  192. package/clinkx-workflows/dist/plan-review/digest.js.map +1 -0
  193. package/clinkx-workflows/dist/plan-review/discovery.d.ts +45 -0
  194. package/clinkx-workflows/dist/plan-review/discovery.js +36 -0
  195. package/clinkx-workflows/dist/plan-review/discovery.js.map +1 -0
  196. package/clinkx-workflows/dist/plan-review/execution-contract.d.ts +298 -0
  197. package/clinkx-workflows/dist/plan-review/execution-contract.js +194 -0
  198. package/clinkx-workflows/dist/plan-review/execution-contract.js.map +1 -0
  199. package/clinkx-workflows/dist/plan-review/expander.d.ts +48 -0
  200. package/clinkx-workflows/dist/plan-review/expander.js +243 -0
  201. package/clinkx-workflows/dist/plan-review/expander.js.map +1 -0
  202. package/clinkx-workflows/dist/plan-review/projector.d.ts +126 -0
  203. package/clinkx-workflows/dist/plan-review/projector.js +437 -0
  204. package/clinkx-workflows/dist/plan-review/projector.js.map +1 -0
  205. package/clinkx-workflows/dist/plan-review/publication.d.ts +95 -0
  206. package/clinkx-workflows/dist/plan-review/publication.js +182 -0
  207. package/clinkx-workflows/dist/plan-review/publication.js.map +1 -0
  208. package/clinkx-workflows/dist/plan-review/ranking-reducer.d.ts +34 -0
  209. package/clinkx-workflows/dist/plan-review/ranking-reducer.js +139 -0
  210. package/clinkx-workflows/dist/plan-review/ranking-reducer.js.map +1 -0
  211. package/clinkx-workflows/dist/plan-review/resume.d.ts +38 -0
  212. package/clinkx-workflows/dist/plan-review/resume.js +122 -0
  213. package/clinkx-workflows/dist/plan-review/resume.js.map +1 -0
  214. package/clinkx-workflows/dist/plan-review/rubric.d.ts +7 -0
  215. package/clinkx-workflows/dist/plan-review/rubric.js +24 -0
  216. package/clinkx-workflows/dist/plan-review/rubric.js.map +1 -0
  217. package/clinkx-workflows/dist/plan-review/run-state.d.ts +398 -0
  218. package/clinkx-workflows/dist/plan-review/run-state.js +183 -0
  219. package/clinkx-workflows/dist/plan-review/run-state.js.map +1 -0
  220. package/clinkx-workflows/dist/plan-review/runtime-policy.d.ts +74 -0
  221. package/clinkx-workflows/dist/plan-review/runtime-policy.js +186 -0
  222. package/clinkx-workflows/dist/plan-review/runtime-policy.js.map +1 -0
  223. package/clinkx-workflows/dist/plan-review/snapshot.d.ts +81 -0
  224. package/clinkx-workflows/dist/plan-review/snapshot.js +170 -0
  225. package/clinkx-workflows/dist/plan-review/snapshot.js.map +1 -0
  226. package/clinkx-workflows/dist/plan-review/stage-error.d.ts +19 -0
  227. package/clinkx-workflows/dist/plan-review/stage-error.js +20 -0
  228. package/clinkx-workflows/dist/plan-review/stage-error.js.map +1 -0
  229. package/clinkx-workflows/dist/post-processors/index.d.ts +20 -0
  230. package/clinkx-workflows/dist/post-processors/index.js +21 -0
  231. package/clinkx-workflows/dist/post-processors/index.js.map +1 -0
  232. package/clinkx-workflows/dist/prompt-budget.d.ts +7 -0
  233. package/clinkx-workflows/dist/prompt-budget.js +7 -1
  234. package/clinkx-workflows/dist/prompt-budget.js.map +1 -1
  235. package/clinkx-workflows/dist/reducers/index.js +2 -0
  236. package/clinkx-workflows/dist/reducers/index.js.map +1 -1
  237. package/clinkx-workflows/dist/run-lock-heartbeat.d.ts +2 -0
  238. package/clinkx-workflows/dist/run-lock-heartbeat.js +3 -0
  239. package/clinkx-workflows/dist/run-lock-heartbeat.js.map +1 -0
  240. package/clinkx-workflows/dist/run-summary/cards/council-plan-review.d.ts +34 -0
  241. package/clinkx-workflows/dist/run-summary/cards/council-plan-review.js +74 -0
  242. package/clinkx-workflows/dist/run-summary/cards/council-plan-review.js.map +1 -0
  243. package/clinkx-workflows/dist/run-summary/cards/index.js +5 -0
  244. package/clinkx-workflows/dist/run-summary/cards/index.js.map +1 -1
  245. package/clinkx-workflows/dist/run-summary.d.ts +13 -0
  246. package/clinkx-workflows/dist/run-summary.js +29 -1
  247. package/clinkx-workflows/dist/run-summary.js.map +1 -1
  248. package/clinkx-workflows/dist/schema.d.ts +76 -21
  249. package/clinkx-workflows/dist/schema.js +10 -1
  250. package/clinkx-workflows/dist/schema.js.map +1 -1
  251. package/clinkx-workflows/dist/seed-terms.d.ts +30 -0
  252. package/clinkx-workflows/dist/seed-terms.js +176 -0
  253. package/clinkx-workflows/dist/seed-terms.js.map +1 -0
  254. package/clinkx-workflows/dist/server.d.ts +5 -2
  255. package/clinkx-workflows/dist/server.js +82 -52
  256. package/clinkx-workflows/dist/server.js.map +1 -1
  257. package/clinkx-workflows/dist/shutdown.d.ts +18 -20
  258. package/clinkx-workflows/dist/shutdown.js +43 -61
  259. package/clinkx-workflows/dist/shutdown.js.map +1 -1
  260. package/clinkx-workflows/dist/state-schema.d.ts +38 -0
  261. package/clinkx-workflows/dist/state.d.ts +170 -3
  262. package/clinkx-workflows/dist/state.js +1275 -28
  263. package/clinkx-workflows/dist/state.js.map +1 -1
  264. package/clinkx-workflows/dist/transport.d.ts +15 -0
  265. package/clinkx-workflows/dist/transport.js +19 -10
  266. package/clinkx-workflows/dist/transport.js.map +1 -1
  267. package/clinkx-workflows/dist/types.d.ts +14 -2
  268. package/clinkx-workflows/dist/validators/council.d.ts +318 -85
  269. package/clinkx-workflows/dist/validators/council.js +52 -13
  270. package/clinkx-workflows/dist/validators/council.js.map +1 -1
  271. package/clinkx-workflows/dist/validators/index.d.ts +1 -0
  272. package/clinkx-workflows/dist/validators/index.js +3 -0
  273. package/clinkx-workflows/dist/validators/index.js.map +1 -1
  274. package/clinkx-workflows/dist/validators/plan-review.d.ts +398 -0
  275. package/clinkx-workflows/dist/validators/plan-review.js +316 -0
  276. package/clinkx-workflows/dist/validators/plan-review.js.map +1 -0
  277. package/clinkx-workflows/dist/workflow-receipt.js +188 -4
  278. package/clinkx-workflows/dist/workflow-receipt.js.map +1 -1
  279. package/clinkx-workflows/dist/workflow-tools.d.ts +48 -3
  280. package/clinkx-workflows/dist/workflow-tools.js +1402 -59
  281. package/clinkx-workflows/dist/workflow-tools.js.map +1 -1
  282. package/clinkx-workflows/dist/workspace-signature.d.ts +16 -0
  283. package/clinkx-workflows/dist/workspace-signature.js +388 -0
  284. package/clinkx-workflows/dist/workspace-signature.js.map +1 -0
  285. package/clinkx-workflows/templates/council/answer-specialist.txt +2 -1
  286. package/clinkx-workflows/templates/council/code-review-chairman.txt +13 -0
  287. package/clinkx-workflows/templates/council/code-review-cross-reviewer.txt +4 -1
  288. package/clinkx-workflows/templates/council/code-review-reviewer.txt +19 -3
  289. package/clinkx-workflows/templates/council/debug-debugger.txt +2 -1
  290. package/clinkx-workflows/templates/council/discover-analyst.txt +2 -1
  291. package/clinkx-workflows/templates/council/member.txt +2 -1
  292. package/clinkx-workflows/templates/council/plan-review-chairman.txt +68 -0
  293. package/clinkx-workflows/templates/council/plan-review-cross-reviewer.txt +51 -0
  294. package/clinkx-workflows/templates/council/plan-review-reviewer.txt +60 -0
  295. package/clinkx-workflows/templates/plan-review/chairman.txt +48 -0
  296. package/clinkx-workflows/templates/plan-review/cross-review.txt +52 -0
  297. package/clinkx-workflows/templates/plan-review/ranking.txt +16 -0
  298. package/clinkx-workflows/templates/plan-review/reviewer.txt +57 -0
  299. package/clinkx-workflows/workflows/council-answer.yaml +97 -8
  300. package/clinkx-workflows/workflows/council-code-review.yaml +103 -8
  301. package/clinkx-workflows/workflows/council-debug.yaml +97 -8
  302. package/clinkx-workflows/workflows/council-default.yaml +97 -8
  303. package/clinkx-workflows/workflows/council-discover.yaml +97 -8
  304. package/clinkx-workflows/workflows/council-plan-review.yaml +250 -0
  305. package/clinkx-workflows/workflows/plan-review-receipts.yaml +230 -0
  306. package/conf/adapters/agy.json +49 -0
  307. package/conf/adapters/claude.json +5 -0
  308. package/conf/adapters/codex-app-server.json +44 -0
  309. package/conf/adapters/codex.json +7 -2
  310. package/conf/adapters/glm.json +5 -0
  311. package/conf/adapters/grok.json +60 -0
  312. package/conf/adapters/hapi/agy.json +52 -0
  313. package/conf/adapters/hapi/claude.json +5 -0
  314. package/conf/adapters/hapi/codex.json +7 -2
  315. package/conf/adapters/hapi/glm.json +5 -0
  316. package/dist/activity-journal.d.ts +42 -0
  317. package/dist/activity-journal.js +381 -0
  318. package/dist/activity-journal.js.map +1 -0
  319. package/dist/allowed-roots.d.ts +41 -0
  320. package/dist/allowed-roots.js +125 -3
  321. package/dist/allowed-roots.js.map +1 -1
  322. package/dist/codex/activity-session-log.d.ts +14 -0
  323. package/dist/codex/activity-session-log.js +206 -0
  324. package/dist/codex/activity-session-log.js.map +1 -0
  325. package/dist/codex/agent-tools.d.ts +23 -0
  326. package/dist/codex/agent-tools.js +1270 -0
  327. package/dist/codex/agent-tools.js.map +1 -0
  328. package/dist/codex/app-server-client.d.ts +76 -0
  329. package/dist/codex/app-server-client.js +582 -0
  330. package/dist/codex/app-server-client.js.map +1 -0
  331. package/dist/codex/app-server-registry.d.ts +389 -0
  332. package/dist/codex/app-server-registry.js +1407 -0
  333. package/dist/codex/app-server-registry.js.map +1 -0
  334. package/dist/codex/client-types.d.ts +109 -0
  335. package/dist/codex/client-types.js +2 -0
  336. package/dist/codex/client-types.js.map +1 -0
  337. package/dist/codex/protocol.d.ts +5375 -0
  338. package/dist/codex/protocol.js +614 -0
  339. package/dist/codex/protocol.js.map +1 -0
  340. package/dist/codex/session.d.ts +263 -0
  341. package/dist/codex/session.js +466 -0
  342. package/dist/codex/session.js.map +1 -0
  343. package/dist/config.d.ts +185 -19
  344. package/dist/config.js +82 -16
  345. package/dist/config.js.map +1 -1
  346. package/dist/context-builder/anchors.d.ts +1 -0
  347. package/dist/context-builder/anchors.js +3 -0
  348. package/dist/context-builder/anchors.js.map +1 -1
  349. package/dist/context-builder/bundle.d.ts +35 -2
  350. package/dist/context-builder/bundle.js +342 -2417
  351. package/dist/context-builder/bundle.js.map +1 -1
  352. package/dist/context-builder/codemap.d.ts +5 -0
  353. package/dist/context-builder/codemap.js +387 -13
  354. package/dist/context-builder/codemap.js.map +1 -1
  355. package/dist/context-builder/config.d.ts +1 -0
  356. package/dist/context-builder/config.js +12 -0
  357. package/dist/context-builder/config.js.map +1 -1
  358. package/dist/context-builder/context-run-catalog.d.ts +17 -0
  359. package/dist/context-builder/context-run-catalog.js +99 -0
  360. package/dist/context-builder/context-run-catalog.js.map +1 -0
  361. package/dist/context-builder/delegate-packet.d.ts +37 -0
  362. package/dist/context-builder/delegate-packet.js +359 -67
  363. package/dist/context-builder/delegate-packet.js.map +1 -1
  364. package/dist/context-builder/delegate-validation.d.ts +10 -1
  365. package/dist/context-builder/delegate-validation.js +153 -41
  366. package/dist/context-builder/delegate-validation.js.map +1 -1
  367. package/dist/context-builder/delegate.d.ts +2 -0
  368. package/dist/context-builder/delegate.js +1 -0
  369. package/dist/context-builder/delegate.js.map +1 -1
  370. package/dist/context-builder/diagnostics.d.ts +11 -2
  371. package/dist/context-builder/diagnostics.js +39 -6
  372. package/dist/context-builder/diagnostics.js.map +1 -1
  373. package/dist/context-builder/discovery.d.ts +29 -1
  374. package/dist/context-builder/discovery.js +475 -175
  375. package/dist/context-builder/discovery.js.map +1 -1
  376. package/dist/context-builder/globs.js +10 -10
  377. package/dist/context-builder/globs.js.map +1 -1
  378. package/dist/context-builder/handler.d.ts +26 -2
  379. package/dist/context-builder/handler.js +1158 -2416
  380. package/dist/context-builder/handler.js.map +1 -1
  381. package/dist/context-builder/lifecycle-contract.d.ts +424 -0
  382. package/dist/context-builder/lifecycle-contract.js +523 -0
  383. package/dist/context-builder/lifecycle-contract.js.map +1 -0
  384. package/dist/context-builder/lifecycle-journal.d.ts +62 -0
  385. package/dist/context-builder/lifecycle-journal.js +88 -0
  386. package/dist/context-builder/lifecycle-journal.js.map +1 -0
  387. package/dist/context-builder/lifecycle-observer.d.ts +102 -0
  388. package/dist/context-builder/lifecycle-observer.js +258 -0
  389. package/dist/context-builder/lifecycle-observer.js.map +1 -0
  390. package/dist/context-builder/lifecycle-reconcile.d.ts +32 -0
  391. package/dist/context-builder/lifecycle-reconcile.js +191 -0
  392. package/dist/context-builder/lifecycle-reconcile.js.map +1 -0
  393. package/dist/context-builder/lifecycle-recovery.d.ts +2 -0
  394. package/dist/context-builder/lifecycle-recovery.js +14 -0
  395. package/dist/context-builder/lifecycle-recovery.js.map +1 -0
  396. package/dist/context-builder/path-signals.js +9 -5
  397. package/dist/context-builder/path-signals.js.map +1 -1
  398. package/dist/context-builder/progress.d.ts +3 -1
  399. package/dist/context-builder/progress.js +23 -0
  400. package/dist/context-builder/progress.js.map +1 -1
  401. package/dist/context-builder/receipt.d.ts +6 -4
  402. package/dist/context-builder/receipt.js +12 -1
  403. package/dist/context-builder/receipt.js.map +1 -1
  404. package/dist/context-builder/refine-handler.d.ts +14 -0
  405. package/dist/context-builder/refine-handler.js +790 -0
  406. package/dist/context-builder/refine-handler.js.map +1 -0
  407. package/dist/context-builder/review-coverage.d.ts +84 -0
  408. package/dist/context-builder/review-coverage.js +437 -0
  409. package/dist/context-builder/review-coverage.js.map +1 -0
  410. package/dist/context-builder/schema.d.ts +239 -1
  411. package/dist/context-builder/schema.js +112 -6
  412. package/dist/context-builder/schema.js.map +1 -1
  413. package/dist/context-builder/secrets.d.ts +28 -0
  414. package/dist/context-builder/secrets.js +1473 -44
  415. package/dist/context-builder/secrets.js.map +1 -1
  416. package/dist/context-builder/selection.d.ts +7 -3
  417. package/dist/context-builder/selection.js +200 -738
  418. package/dist/context-builder/selection.js.map +1 -1
  419. package/dist/context-builder/session-log-identity.d.ts +1 -0
  420. package/dist/context-builder/session-log-identity.js +66 -0
  421. package/dist/context-builder/session-log-identity.js.map +1 -0
  422. package/dist/context-builder/slice-range-math.d.ts +16 -0
  423. package/dist/context-builder/slice-range-math.js +137 -0
  424. package/dist/context-builder/slice-range-math.js.map +1 -0
  425. package/dist/context-builder/status.d.ts +22 -1
  426. package/dist/context-builder/status.js +59 -4
  427. package/dist/context-builder/status.js.map +1 -1
  428. package/dist/context-builder/storage.d.ts +35 -2
  429. package/dist/context-builder/storage.js +271 -14
  430. package/dist/context-builder/storage.js.map +1 -1
  431. package/dist/context-builder/token-estimate.d.ts +13 -2
  432. package/dist/context-builder/token-estimate.js +77 -4
  433. package/dist/context-builder/token-estimate.js.map +1 -1
  434. package/dist/context-builder/versions.d.ts +29 -0
  435. package/dist/context-builder/versions.js +30 -0
  436. package/dist/context-builder/versions.js.map +1 -0
  437. package/dist/context-builder/workflow-runner.d.ts +69 -0
  438. package/dist/context-builder/workflow-runner.js +1051 -0
  439. package/dist/context-builder/workflow-runner.js.map +1 -0
  440. package/dist/context-builder/write-watchdog.d.ts +14 -0
  441. package/dist/context-builder/write-watchdog.js +38 -0
  442. package/dist/context-builder/write-watchdog.js.map +1 -0
  443. package/dist/dashboard-adapter-catalog.d.ts +9 -0
  444. package/dist/dashboard-adapter-catalog.js +46 -0
  445. package/dist/dashboard-adapter-catalog.js.map +1 -0
  446. package/dist/dashboard-cli.d.ts +79 -0
  447. package/dist/dashboard-cli.js +585 -0
  448. package/dist/dashboard-cli.js.map +1 -0
  449. package/dist/dashboard-companion/client.d.ts +36 -0
  450. package/dist/dashboard-companion/client.js +210 -0
  451. package/dist/dashboard-companion/client.js.map +1 -0
  452. package/dist/dashboard-companion/config.d.ts +8 -0
  453. package/dist/dashboard-companion/config.js +52 -0
  454. package/dist/dashboard-companion/config.js.map +1 -0
  455. package/dist/dashboard-companion/http-proxy.d.ts +10 -0
  456. package/dist/dashboard-companion/http-proxy.js +234 -0
  457. package/dist/dashboard-companion/http-proxy.js.map +1 -0
  458. package/dist/dashboard-companion/protocol.d.ts +80 -0
  459. package/dist/dashboard-companion/protocol.js +455 -0
  460. package/dist/dashboard-companion/protocol.js.map +1 -0
  461. package/dist/dashboard-companion/standalone-assets.d.ts +12 -0
  462. package/dist/dashboard-companion/standalone-assets.js +72 -0
  463. package/dist/dashboard-companion/standalone-assets.js.map +1 -0
  464. package/dist/dashboard-companion/standalone-entry.d.ts +1 -0
  465. package/dist/dashboard-companion/standalone-entry.js +17 -0
  466. package/dist/dashboard-companion/standalone-entry.js.map +1 -0
  467. package/dist/dashboard-gateway/config.d.ts +9 -0
  468. package/dist/dashboard-gateway/config.js +44 -0
  469. package/dist/dashboard-gateway/config.js.map +1 -0
  470. package/dist/dashboard-gateway/index.d.ts +11 -0
  471. package/dist/dashboard-gateway/index.js +755 -0
  472. package/dist/dashboard-gateway/index.js.map +1 -0
  473. package/dist/dashboard-gateway/main.d.ts +1 -0
  474. package/dist/dashboard-gateway/main.js +25 -0
  475. package/dist/dashboard-gateway/main.js.map +1 -0
  476. package/dist/dashboard-pairing-token.d.ts +1 -0
  477. package/dist/dashboard-pairing-token.js +5 -0
  478. package/dist/dashboard-pairing-token.js.map +1 -0
  479. package/dist/elaris/client.d.ts +73 -0
  480. package/dist/elaris/client.js +825 -0
  481. package/dist/elaris/client.js.map +1 -0
  482. package/dist/elaris/config.d.ts +18 -0
  483. package/dist/elaris/config.js +75 -0
  484. package/dist/elaris/config.js.map +1 -0
  485. package/dist/elaris/errors.d.ts +41 -0
  486. package/dist/elaris/errors.js +205 -0
  487. package/dist/elaris/errors.js.map +1 -0
  488. package/dist/elaris/github-repo.d.ts +18 -0
  489. package/dist/elaris/github-repo.js +89 -0
  490. package/dist/elaris/github-repo.js.map +1 -0
  491. package/dist/elaris/index.d.ts +10 -0
  492. package/dist/elaris/index.js +11 -0
  493. package/dist/elaris/index.js.map +1 -0
  494. package/dist/elaris/redact.d.ts +89 -0
  495. package/dist/elaris/redact.js +423 -0
  496. package/dist/elaris/redact.js.map +1 -0
  497. package/dist/elaris/run-id.d.ts +5 -0
  498. package/dist/elaris/run-id.js +20 -0
  499. package/dist/elaris/run-id.js.map +1 -0
  500. package/dist/elaris/status.d.ts +45 -0
  501. package/dist/elaris/status.js +122 -0
  502. package/dist/elaris/status.js.map +1 -0
  503. package/dist/elaris/tool-schemas.d.ts +314 -0
  504. package/dist/elaris/tool-schemas.js +208 -0
  505. package/dist/elaris/tool-schemas.js.map +1 -0
  506. package/dist/elaris/tools.d.ts +73 -0
  507. package/dist/elaris/tools.js +1065 -0
  508. package/dist/elaris/tools.js.map +1 -0
  509. package/dist/elaris/types.d.ts +1541 -0
  510. package/dist/elaris/types.js +252 -0
  511. package/dist/elaris/types.js.map +1 -0
  512. package/dist/errors.d.ts +16 -0
  513. package/dist/errors.js +19 -0
  514. package/dist/errors.js.map +1 -1
  515. package/dist/handler.d.ts +4 -0
  516. package/dist/handler.js +10 -1
  517. package/dist/handler.js.map +1 -1
  518. package/dist/index.d.ts +2 -1
  519. package/dist/index.js +13 -3
  520. package/dist/index.js.map +1 -1
  521. package/dist/local-clink-backend.d.ts +3 -0
  522. package/dist/local-clink-backend.js +4 -0
  523. package/dist/local-clink-backend.js.map +1 -1
  524. package/dist/package-info.d.ts +2 -0
  525. package/dist/package-info.js +18 -0
  526. package/dist/package-info.js.map +1 -0
  527. package/dist/parsers/codex-jsonl.js +48 -3
  528. package/dist/parsers/codex-jsonl.js.map +1 -1
  529. package/dist/parsers/extract.d.ts +10 -1
  530. package/dist/parsers/extract.js +11 -3
  531. package/dist/parsers/extract.js.map +1 -1
  532. package/dist/pipeline.d.ts +4 -0
  533. package/dist/pipeline.js +129 -8
  534. package/dist/pipeline.js.map +1 -1
  535. package/dist/run-dir.d.ts +24 -0
  536. package/dist/run-dir.js +201 -2
  537. package/dist/run-dir.js.map +1 -1
  538. package/dist/runner.d.ts +13 -0
  539. package/dist/runner.js +184 -15
  540. package/dist/runner.js.map +1 -1
  541. package/dist/safety.d.ts +4 -4
  542. package/dist/safety.js +4 -4
  543. package/dist/schema.d.ts +7 -7
  544. package/dist/server.d.ts +1 -0
  545. package/dist/server.js +359 -17
  546. package/dist/server.js.map +1 -1
  547. package/dist/session-log-stream.d.ts +18 -0
  548. package/dist/session-log-stream.js +319 -0
  549. package/dist/session-log-stream.js.map +1 -0
  550. package/package.json +46 -5
  551. package/conf/adapters/gemini.json +0 -44
  552. package/conf/adapters/hapi/gemini.json +0 -47
  553. package/dist/parsers/gemini-json.d.ts +0 -2
  554. package/dist/parsers/gemini-json.js +0 -72
  555. package/dist/parsers/gemini-json.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../../src/dashboard/auth/credential-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class DashboardEnrollmentGate {
2
+ #private;
3
+ readonly generation: string;
4
+ private constructor();
5
+ static create(): DashboardEnrollmentGate;
6
+ takeCodeForDisplay(): string | undefined;
7
+ authorizes(candidate: string, generation: string): boolean;
8
+ seal(generation: string): boolean;
9
+ }
@@ -0,0 +1,44 @@
1
+ import { randomBytes, timingSafeEqual } from "node:crypto";
2
+ function decodeEnrollmentCode(candidate) {
3
+ if (!/^[A-Za-z0-9_-]{32}$/.test(candidate))
4
+ return undefined;
5
+ const decoded = Buffer.from(candidate, "base64url");
6
+ if (decoded.byteLength !== 24
7
+ || decoded.toString("base64url") !== candidate) {
8
+ return undefined;
9
+ }
10
+ return decoded;
11
+ }
12
+ export class DashboardEnrollmentGate {
13
+ generation;
14
+ #code;
15
+ #displayPending = true;
16
+ constructor(code, generation) {
17
+ this.#code = code;
18
+ this.generation = generation;
19
+ }
20
+ static create() {
21
+ return new DashboardEnrollmentGate(randomBytes(24), randomBytes(16).toString("base64url"));
22
+ }
23
+ takeCodeForDisplay() {
24
+ if (!this.#displayPending || this.#code == null)
25
+ return undefined;
26
+ this.#displayPending = false;
27
+ return this.#code.toString("base64url");
28
+ }
29
+ authorizes(candidate, generation) {
30
+ if (this.#code == null || generation !== this.generation)
31
+ return false;
32
+ const decoded = decodeEnrollmentCode(candidate);
33
+ return decoded != null && timingSafeEqual(this.#code, decoded);
34
+ }
35
+ seal(generation) {
36
+ if (this.#code == null || generation !== this.generation)
37
+ return false;
38
+ this.#code.fill(0);
39
+ this.#code = undefined;
40
+ this.#displayPending = false;
41
+ return true;
42
+ }
43
+ }
44
+ //# sourceMappingURL=enrollment-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollment-gate.js","sourceRoot":"","sources":["../../../src/dashboard/auth/enrollment-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3D,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpD,IACE,OAAO,CAAC,UAAU,KAAK,EAAE;WACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,SAAS,EAC9C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,uBAAuB;IACzB,UAAU,CAAS;IAC5B,KAAK,CAAqB;IAC1B,eAAe,GAAG,IAAI,CAAC;IAEvB,YAAoB,IAAY,EAAE,UAAkB;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,uBAAuB,CAChC,WAAW,CAAC,EAAE,CAAC,EACf,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CACtC,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;QAClE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,SAAiB,EAAE,UAAkB;QAC9C,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACvE,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChD,OAAO,OAAO,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,UAAkB;QACrB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ export interface DashboardSessionStoreOptions {
2
+ readonly capacity?: number;
3
+ readonly ttlMs: number;
4
+ readonly now?: () => number;
5
+ }
6
+ export declare class DashboardSessionStore {
7
+ #private;
8
+ constructor(options: DashboardSessionStoreOptions);
9
+ create(): string;
10
+ createWithOriginProof(): Readonly<{
11
+ originProof: string;
12
+ sessionId: string;
13
+ }>;
14
+ has(sessionId: string, originProof?: string): boolean;
15
+ delete(sessionId: string): boolean;
16
+ clear(): void;
17
+ }
@@ -0,0 +1,77 @@
1
+ import { randomBytes, timingSafeEqual } from "node:crypto";
2
+ const DEFAULT_SESSION_CAPACITY = 64;
3
+ export class DashboardSessionStore {
4
+ #capacity;
5
+ #ttlMs;
6
+ #now;
7
+ #sessions = new Map();
8
+ constructor(options) {
9
+ this.#capacity = options.capacity ?? DEFAULT_SESSION_CAPACITY;
10
+ this.#ttlMs = options.ttlMs;
11
+ this.#now = options.now ?? Date.now;
12
+ if (!Number.isSafeInteger(this.#capacity) || this.#capacity < 1) {
13
+ throw new Error("dashboard session capacity must be a positive integer");
14
+ }
15
+ if (!Number.isSafeInteger(this.#ttlMs) || this.#ttlMs < 1) {
16
+ throw new Error("dashboard session TTL must be a positive integer");
17
+ }
18
+ }
19
+ create() {
20
+ return this.#create();
21
+ }
22
+ createWithOriginProof() {
23
+ const originProof = randomBytes(32).toString("base64url");
24
+ return {
25
+ originProof,
26
+ sessionId: this.#create(Buffer.from(originProof, "ascii")),
27
+ };
28
+ }
29
+ #create(originProof) {
30
+ const now = this.#now();
31
+ this.#sweep(now);
32
+ while (this.#sessions.size >= this.#capacity) {
33
+ const oldest = this.#sessions.keys().next().value;
34
+ if (oldest == null)
35
+ break;
36
+ this.#sessions.delete(oldest);
37
+ }
38
+ for (let attempt = 0; attempt < 4; attempt += 1) {
39
+ const sessionId = randomBytes(32).toString("base64url");
40
+ if (!this.#sessions.has(sessionId)) {
41
+ this.#sessions.set(sessionId, {
42
+ createdAt: now,
43
+ expiresAt: now + this.#ttlMs,
44
+ ...(originProof == null ? {} : { originProof }),
45
+ });
46
+ return sessionId;
47
+ }
48
+ }
49
+ throw new Error("failed to allocate a unique dashboard session");
50
+ }
51
+ has(sessionId, originProof) {
52
+ this.#sweep(this.#now());
53
+ const session = this.#sessions.get(sessionId);
54
+ if (session == null)
55
+ return false;
56
+ if (session.originProof == null)
57
+ return true;
58
+ if (originProof == null || !/^[A-Za-z0-9_-]{43}$/.test(originProof)) {
59
+ return false;
60
+ }
61
+ return timingSafeEqual(session.originProof, Buffer.from(originProof, "ascii"));
62
+ }
63
+ delete(sessionId) {
64
+ return this.#sessions.delete(sessionId);
65
+ }
66
+ clear() {
67
+ this.#sessions.clear();
68
+ }
69
+ #sweep(now) {
70
+ for (const [sessionId, session] of this.#sessions) {
71
+ if (session.expiresAt <= now) {
72
+ this.#sessions.delete(sessionId);
73
+ }
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/dashboard/auth/session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type AuthenticationResponseJSON, type PublicKeyCredentialCreationOptionsJSON, type PublicKeyCredentialRequestOptionsJSON, type RegistrationResponseJSON } from "@simplewebauthn/server";
2
+ import type { DashboardStoredCredential } from "./credential-store.js";
3
+ export interface DashboardWebAuthnConfig {
4
+ readonly rpName: string;
5
+ readonly expectedOrigin: string;
6
+ readonly expectedRPID: string;
7
+ }
8
+ export interface DashboardRegistrationOptionsInput {
9
+ readonly userHandle: string;
10
+ readonly credentials: readonly DashboardStoredCredential[];
11
+ }
12
+ export interface DashboardWebAuthn {
13
+ registrationOptions(input: DashboardRegistrationOptionsInput): Promise<PublicKeyCredentialCreationOptionsJSON>;
14
+ verifyRegistration(response: RegistrationResponseJSON, expectedChallenge: string): Promise<DashboardStoredCredential | undefined>;
15
+ authenticationOptions(credentials: readonly DashboardStoredCredential[]): Promise<PublicKeyCredentialRequestOptionsJSON>;
16
+ verifyAuthentication(response: AuthenticationResponseJSON, expectedChallenge: string, credential: DashboardStoredCredential): Promise<number | undefined>;
17
+ }
18
+ export declare class DashboardWebAuthnService implements DashboardWebAuthn {
19
+ #private;
20
+ constructor(config: DashboardWebAuthnConfig);
21
+ registrationOptions(input: DashboardRegistrationOptionsInput): Promise<PublicKeyCredentialCreationOptionsJSON>;
22
+ verifyRegistration(response: RegistrationResponseJSON, expectedChallenge: string): Promise<DashboardStoredCredential | undefined>;
23
+ authenticationOptions(credentials: readonly DashboardStoredCredential[]): Promise<PublicKeyCredentialRequestOptionsJSON>;
24
+ verifyAuthentication(response: AuthenticationResponseJSON, expectedChallenge: string, credential: DashboardStoredCredential): Promise<number | undefined>;
25
+ }
@@ -0,0 +1,71 @@
1
+ import { generateAuthenticationOptions, generateRegistrationOptions, verifyAuthenticationResponse, verifyRegistrationResponse, } from "@simplewebauthn/server";
2
+ export class DashboardWebAuthnService {
3
+ #config;
4
+ constructor(config) {
5
+ this.#config = config;
6
+ }
7
+ registrationOptions(input) {
8
+ return generateRegistrationOptions({
9
+ rpName: this.#config.rpName,
10
+ rpID: this.#config.expectedRPID,
11
+ userName: "clinkx-dashboard",
12
+ userDisplayName: "ClinkX Dashboard User",
13
+ userID: new Uint8Array(Buffer.from(input.userHandle, "base64url")),
14
+ attestationType: "none",
15
+ authenticatorSelection: {
16
+ residentKey: "preferred",
17
+ userVerification: "required",
18
+ },
19
+ excludeCredentials: input.credentials.map((credential) => ({
20
+ id: credential.id,
21
+ transports: [...credential.transports],
22
+ })),
23
+ });
24
+ }
25
+ async verifyRegistration(response, expectedChallenge) {
26
+ const result = await verifyRegistrationResponse({
27
+ response,
28
+ expectedChallenge,
29
+ expectedOrigin: this.#config.expectedOrigin,
30
+ expectedRPID: this.#config.expectedRPID,
31
+ requireUserVerification: true,
32
+ });
33
+ if (!result.verified)
34
+ return undefined;
35
+ const transports = response.response.transports ?? result.registrationInfo.credential.transports ?? [];
36
+ return {
37
+ id: result.registrationInfo.credential.id,
38
+ publicKey: Buffer.from(result.registrationInfo.credential.publicKey).toString("base64url"),
39
+ counter: result.registrationInfo.credential.counter,
40
+ transports: [...transports],
41
+ createdAt: new Date().toISOString(),
42
+ };
43
+ }
44
+ authenticationOptions(credentials) {
45
+ return generateAuthenticationOptions({
46
+ rpID: this.#config.expectedRPID,
47
+ userVerification: "required",
48
+ allowCredentials: credentials.map((credential) => ({
49
+ id: credential.id,
50
+ transports: [...credential.transports],
51
+ })),
52
+ });
53
+ }
54
+ async verifyAuthentication(response, expectedChallenge, credential) {
55
+ const result = await verifyAuthenticationResponse({
56
+ response,
57
+ expectedChallenge,
58
+ expectedOrigin: this.#config.expectedOrigin,
59
+ expectedRPID: this.#config.expectedRPID,
60
+ requireUserVerification: true,
61
+ credential: {
62
+ id: credential.id,
63
+ publicKey: new Uint8Array(Buffer.from(credential.publicKey, "base64url")),
64
+ counter: credential.counter,
65
+ transports: [...credential.transports],
66
+ },
67
+ });
68
+ return result.verified ? result.authenticationInfo.newCounter : undefined;
69
+ }
70
+ }
71
+ //# sourceMappingURL=webauthn-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthn-service.js","sourceRoot":"","sources":["../../../src/dashboard/auth/webauthn-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type ContextBuilderLifecyclePhase, type ContextBuilderLifecycleStatus } from "../context-builder-lifecycle-contract.js";
2
+ /**
3
+ * Write-like phases have no long-running subprocess. Matches the producer
4
+ * mutation-lock stale window (`CONTEXT_BUILDER_STALE_MUTATION_LOCK_MS` in
5
+ * `src/context-builder/storage.ts`) — duplicated here because the dashboard
6
+ * package does not import the producer.
7
+ */
8
+ export declare const CONTEXT_RUN_WRITE_STALE_AFTER_MS: number;
9
+ /** Any other active phase uses the contract duration ceiling. */
10
+ export declare const CONTEXT_RUN_ACTIVE_STALE_AFTER_MS = 86400000;
11
+ export type ContextRunLiveness = "live" | "orphaned" | "unknown";
12
+ export type ContextRunLivenessOverlay = Readonly<{
13
+ orphaned: boolean;
14
+ liveness: ContextRunLiveness;
15
+ }>;
16
+ /**
17
+ * Read-time liveness overlay. Never persist the result.
18
+ *
19
+ * Terminal / missing lifecycle → `unknown` (never death). Active
20
+ * (`pending`/`running`) with a missing or unparseable `updatedAt` → `unknown`.
21
+ * Active with a parseable `updatedAt` uses a phase-aware age: write-like
22
+ * phases stale after 10 minutes, every other active phase after 24h. A
23
+ * producer clock slightly ahead (negative age) stays `live`.
24
+ */
25
+ export declare function classifyContextRunLiveness(input: Readonly<{
26
+ status?: ContextBuilderLifecycleStatus | null;
27
+ phase?: ContextBuilderLifecyclePhase | null;
28
+ updatedAt?: string | null;
29
+ nowMs: number;
30
+ }>): ContextRunLivenessOverlay;
31
+ export declare function isContextRunLivePin(row: Readonly<{
32
+ orphaned?: boolean;
33
+ liveness?: ContextRunLiveness;
34
+ lifecycle?: Readonly<{
35
+ status: string;
36
+ }> | null;
37
+ }>): boolean;
@@ -0,0 +1,49 @@
1
+ import { MAX_CONTEXT_BUILDER_LIFECYCLE_DURATION_MS, } from "../context-builder-lifecycle-contract.js";
2
+ /**
3
+ * Write-like phases have no long-running subprocess. Matches the producer
4
+ * mutation-lock stale window (`CONTEXT_BUILDER_STALE_MUTATION_LOCK_MS` in
5
+ * `src/context-builder/storage.ts`) — duplicated here because the dashboard
6
+ * package does not import the producer.
7
+ */
8
+ export const CONTEXT_RUN_WRITE_STALE_AFTER_MS = 10 * 60 * 1_000;
9
+ /** Any other active phase uses the contract duration ceiling. */
10
+ export const CONTEXT_RUN_ACTIVE_STALE_AFTER_MS = MAX_CONTEXT_BUILDER_LIFECYCLE_DURATION_MS;
11
+ const WRITE_LIKE_PHASES = new Set([
12
+ "writing",
13
+ "committing",
14
+ "materializing",
15
+ ]);
16
+ /**
17
+ * Read-time liveness overlay. Never persist the result.
18
+ *
19
+ * Terminal / missing lifecycle → `unknown` (never death). Active
20
+ * (`pending`/`running`) with a missing or unparseable `updatedAt` → `unknown`.
21
+ * Active with a parseable `updatedAt` uses a phase-aware age: write-like
22
+ * phases stale after 10 minutes, every other active phase after 24h. A
23
+ * producer clock slightly ahead (negative age) stays `live`.
24
+ */
25
+ export function classifyContextRunLiveness(input) {
26
+ if (input.status !== "pending" && input.status !== "running") {
27
+ return { orphaned: false, liveness: "unknown" };
28
+ }
29
+ if (input.updatedAt == null) {
30
+ return { orphaned: false, liveness: "unknown" };
31
+ }
32
+ const updatedMs = Date.parse(input.updatedAt);
33
+ if (!Number.isFinite(updatedMs)) {
34
+ return { orphaned: false, liveness: "unknown" };
35
+ }
36
+ const thresholdMs = input.phase != null && WRITE_LIKE_PHASES.has(input.phase)
37
+ ? CONTEXT_RUN_WRITE_STALE_AFTER_MS
38
+ : CONTEXT_RUN_ACTIVE_STALE_AFTER_MS;
39
+ if (input.nowMs - updatedMs <= thresholdMs) {
40
+ return { orphaned: false, liveness: "live" };
41
+ }
42
+ return { orphaned: true, liveness: "orphaned" };
43
+ }
44
+ export function isContextRunLivePin(row) {
45
+ const status = row.lifecycle?.status;
46
+ return ((status === "pending" || status === "running") &&
47
+ row.liveness === "live");
48
+ }
49
+ //# sourceMappingURL=context-run-liveness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-run-liveness.js","sourceRoot":"","sources":["../../src/dashboard/context-run-liveness.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,GAG1C,MAAM,0CAA0C,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAEhE,iEAAiE;AACjE,MAAM,CAAC,MAAM,iCAAiC,GAC5C,yCAAyC,CAAC;AAE5C,MAAM,iBAAiB,GAA8C,IAAI,GAAG,CAAC;IAC3E,SAAS;IACT,YAAY;IACZ,eAAe;CAChB,CAAC,CAAC;AASH;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAKzC;IACA,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3E,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,iCAAiC,CAAC;IACtC,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;QAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAIlC;IACA,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,OAAO,CACL,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;QAC9C,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Bounded dashboard reader for the standalone / refine Context Run journal.
3
+ *
4
+ * This module enumerates and directly resolves stable row identities without
5
+ * exposing raw lifecycle state or manifest content.
6
+ *
7
+ * Two sources feed one projected row type:
8
+ * 1. `.context-runs/<contextRunId>/state.json` — authoritative live/terminal
9
+ * H0 lifecycle snapshots written by the producer journal. Validated back
10
+ * through the frozen schema; malformed rows are dropped.
11
+ * 2. Historical artifact run directories carrying `manifest.json` — a
12
+ * terminal lifecycle row is SYNTHESIZED from the manifest for the exact
13
+ * legacy 7-key and current 8-key artifact shapes; a 9-key (or larger)
14
+ * manifest is surfaced as `compatibility: "legacy_unsupported"` with no
15
+ * fabricated detail.
16
+ *
17
+ * Safety invariants:
18
+ * - Every read goes through {@link readContainedRelativeFile} (no-follow,
19
+ * containment-checked, size-capped). Symlinked entries and traversal names
20
+ * are skipped or rejected.
21
+ * - Workflow-owned records (`wfpre*` / `wfctx*`) are excluded from both
22
+ * sources.
23
+ * - Only safe scalar/enum/numeric fields are projected. Tasks, raw context,
24
+ * full manifests, provider output, raw error strings, and arbitrary JSON are
25
+ * NEVER read into a row. The single, deliberate path carve-out is the
26
+ * top-level project-folder root: `roots[].path` is projected verbatim into
27
+ * `ContextRunRow.projectFolders` (historical_manifest rows only) so the
28
+ * detail page can show the folder the run was created for. Selected-context
29
+ * file paths, task text, and all other manifest content stay private.
30
+ *
31
+ * Carve-out — bounded artifact-body reads (`readArtifact`): the invariant above
32
+ * applies to projected ROWS, which stay scalar-only. `readArtifact` is a
33
+ * separate, opt-in side channel that serves a single artifact file body
34
+ * (e.g. `bundle.md`) for an already-resolved run identity. It is allowlisted to
35
+ * the fixed artifact-key set, size-capped at the manifest ceiling, generation-
36
+ * pinned, and goes through the same no-follow containment read as rows. It does
37
+ * not enrich rows and is reached only via the dedicated HTTP route, never inline
38
+ * in list/detail projection.
39
+ */
40
+ import { type FileHandle } from "node:fs/promises";
41
+ import { type ContextBuilderLifecycleStateV1, type ContextBuilderOperationKind } from "../context-builder-lifecycle-contract.js";
42
+ import { readContainedRelativeFile, type OpenedDescriptorPathVerifier } from "../contained-file.js";
43
+ import { type ContextRunLiveness } from "./context-run-liveness.js";
44
+ /**
45
+ * Artifact key → on-disk filename. Duplicated from the producer
46
+ * (`src/context-builder/storage.ts`) by convention — the dashboard package does
47
+ * not import the producer. A parity test pins this copy to the producer export.
48
+ * `manifest_json` lives at `<runDir>/manifest.json`; every other key lives at
49
+ * `<runDir>/artifacts/<filename>` (see producer `resolveContextBuilderRunPaths`).
50
+ */
51
+ export declare const CONTEXT_RUN_ARTIFACT_FILE_NAMES: Readonly<{
52
+ readonly manifest_json: "manifest.json";
53
+ readonly bundle_md: "bundle.md";
54
+ readonly selected_context_jsonl: "selected-context.jsonl";
55
+ readonly tree_json: "tree.json";
56
+ readonly search_jsonl: "search.jsonl";
57
+ readonly slices_jsonl: "slices.jsonl";
58
+ readonly codemap_jsonl: "codemap.jsonl";
59
+ readonly summary_json: "summary.json";
60
+ }>;
61
+ export type ContextRunArtifactKey = keyof typeof CONTEXT_RUN_ARTIFACT_FILE_NAMES;
62
+ export declare const CONTEXT_RUN_ARTIFACT_KEYS: readonly ContextRunArtifactKey[];
63
+ export declare const DEFAULT_CONTEXT_RUN_READER_MAX_ROWS = 500;
64
+ export declare const DEFAULT_CONTEXT_RUN_READER_MAX_DIR_ENTRIES = 5000;
65
+ export declare const DEFAULT_CONTEXT_RUN_READER_MAX_STATE_BYTES: number;
66
+ export declare const DEFAULT_CONTEXT_RUN_READER_MAX_MANIFEST_BYTES: number;
67
+ /**
68
+ * Per-artifact-body cap for {@link readArtifact}. Sized above the producer's
69
+ * `max_total_bytes` ceiling (5_000_000, src/context-builder/schema.ts) so a
70
+ * producer-legal `bundle.md` / `selected-context.jsonl` is served rather than
71
+ * 413'd, while still bounding the body endpoint. Distinct from the manifest
72
+ * cap so each can move independently.
73
+ */
74
+ export declare const DEFAULT_CONTEXT_RUN_READER_MAX_ARTIFACT_BYTES: number;
75
+ export type ContextRunSource = "journal" | "historical_manifest";
76
+ export type ContextRunCompatibility = "current" | "legacy_synthesized" | "legacy_unsupported";
77
+ export interface ContextRunCounts {
78
+ readonly filesSeen: number;
79
+ readonly filesConsidered: number;
80
+ readonly filesSelected: number;
81
+ readonly filesOmitted: number;
82
+ readonly searchResults: number;
83
+ readonly bytesRead: number;
84
+ readonly bytesWritten: number;
85
+ }
86
+ export interface ContextRunCoverage {
87
+ readonly policy: ContextBuilderLifecycleStateV1["coverage"]["policy"];
88
+ readonly status: ContextBuilderLifecycleStateV1["coverage"]["status"];
89
+ readonly required: number;
90
+ readonly selected: number;
91
+ readonly missing: number;
92
+ }
93
+ export interface ContextRunLifecycleProjection {
94
+ readonly status: ContextBuilderLifecycleStateV1["status"];
95
+ readonly phase: ContextBuilderLifecycleStateV1["phase"];
96
+ readonly createdAt: string | null;
97
+ readonly updatedAt: string | null;
98
+ readonly startedAt: string | null;
99
+ readonly completedAt: string | null;
100
+ readonly durationMs: number | null;
101
+ readonly curator: {
102
+ readonly status: ContextBuilderLifecycleStateV1["curator"]["execution_status"];
103
+ readonly score: number | null;
104
+ };
105
+ readonly finalizer: {
106
+ readonly status: ContextBuilderLifecycleStateV1["finalizer"]["execution_status"];
107
+ readonly score: number | null;
108
+ };
109
+ readonly cache: {
110
+ readonly lookup: ContextBuilderLifecycleStateV1["cache"]["lookup"];
111
+ readonly write: ContextBuilderLifecycleStateV1["cache"]["write"];
112
+ };
113
+ readonly fallback: {
114
+ readonly status: ContextBuilderLifecycleStateV1["fallback"]["status"];
115
+ };
116
+ readonly counts: ContextRunCounts;
117
+ readonly coverage: ContextRunCoverage;
118
+ readonly reasonCodes: ContextBuilderLifecycleStateV1["reason_codes"];
119
+ readonly artifactRunId: string | null;
120
+ }
121
+ export interface ContextRunRow {
122
+ /** Operation ID for journal rows; artifact run_id for historical rows. */
123
+ readonly id: string;
124
+ /** Opaque identity for the current source-directory incarnation. */
125
+ readonly contextGeneration: string;
126
+ readonly source: ContextRunSource;
127
+ readonly compatibility: ContextRunCompatibility;
128
+ readonly operationKind: ContextBuilderOperationKind;
129
+ /** Null only when the shape is `legacy_unsupported`. */
130
+ readonly lifecycle: ContextRunLifecycleProjection | null;
131
+ /**
132
+ * Project folder(s) the context run operated on, from the manifest
133
+ * `roots[].path`. A narrow, deliberate exception to the "no paths in a row"
134
+ * rule: historical_manifest rows carry the persisted roots verbatim, while
135
+ * journal (`current`) rows report `[]` (their lifecycle state lives apart
136
+ * from the manifest and reading it per detail fetch is not worth the cost).
137
+ */
138
+ readonly projectFolders: readonly string[];
139
+ /**
140
+ * Read-time overlay. Never persisted. Terminal / unsupported rows are
141
+ * `liveness: "unknown"`; a stale active journal is `orphaned`.
142
+ */
143
+ readonly orphaned: boolean;
144
+ readonly liveness: ContextRunLiveness;
145
+ }
146
+ export interface ContextRunReadResult {
147
+ readonly rows: readonly ContextRunRow[];
148
+ /** A directory / row cap was hit; the listing is not exhaustive. */
149
+ readonly truncated: boolean;
150
+ }
151
+ export interface ContextRunReaderOptions {
152
+ readonly runsDir: string;
153
+ readonly maxRows?: number;
154
+ readonly maxDirEntries?: number;
155
+ readonly maxStateBytes?: number;
156
+ readonly maxManifestBytes?: number;
157
+ readonly maxArtifactBytes?: number;
158
+ }
159
+ export type ContextRunDetailResult = Readonly<{
160
+ kind: "available";
161
+ row: ContextRunRow;
162
+ }> | Readonly<{
163
+ kind: "missing";
164
+ }> | Readonly<{
165
+ kind: "context_generation_changed";
166
+ }> | Readonly<{
167
+ kind: "unavailable";
168
+ reason: "context_generation_race";
169
+ }>;
170
+ /**
171
+ * Result of a bounded artifact-body read. The `artifactRunId` is the directory
172
+ * the body was actually read from (the journal row's linked artifact run, or the
173
+ * historical row's own id); callers re-confirm via readDetail to close a
174
+ * journal-state-swap TOCTOU. `contextGeneration` is the generation pinned to the
175
+ * artifact directory at read time.
176
+ */
177
+ export type ContextRunArtifactResult = Readonly<{
178
+ kind: "available";
179
+ content: string;
180
+ artifactRunId: string;
181
+ contextGeneration: string;
182
+ }> | Readonly<{
183
+ kind: "missing";
184
+ }> | Readonly<{
185
+ kind: "context_generation_changed";
186
+ }> | Readonly<{
187
+ kind: "content_too_large";
188
+ }> | Readonly<{
189
+ kind: "unavailable";
190
+ reason: "context_generation_race";
191
+ }>;
192
+ export interface ContextRunReader {
193
+ readonly list: (options: ContextRunReaderOptions) => Promise<ContextRunReadResult>;
194
+ readonly readDetail: (options: ContextRunReaderOptions, id: string, contextGeneration?: string) => Promise<ContextRunDetailResult>;
195
+ readonly readArtifact: (options: ContextRunReaderOptions, id: string, artifactKey: ContextRunArtifactKey, contextGeneration?: string) => Promise<ContextRunArtifactResult>;
196
+ }
197
+ interface ContextRunAuthorityFileSystem {
198
+ readonly open: (path: string, flags: number) => Promise<FileHandle>;
199
+ readonly realpath: (path: string) => Promise<string>;
200
+ }
201
+ export interface ContextRunReaderAuthorityOptions {
202
+ readonly fileSystem?: ContextRunAuthorityFileSystem | undefined;
203
+ readonly descriptorPathVerifier?: OpenedDescriptorPathVerifier | undefined;
204
+ readonly readContainedFile?: typeof readContainedRelativeFile | undefined;
205
+ /** Deterministic race-injection seam; never used by production callers. */
206
+ readonly beforeCommitVerification?: ((identity: Readonly<{
207
+ id: string;
208
+ source: ContextRunSource;
209
+ }>) => void | Promise<void>) | undefined;
210
+ /** Injectable clock for the read-time liveness overlay. */
211
+ readonly now?: () => Date;
212
+ }
213
+ export declare class ContextRunSourceUnavailableError extends Error {
214
+ constructor();
215
+ }
216
+ export declare function createContextRunReader(options?: ContextRunReaderAuthorityOptions): ContextRunReader;
217
+ export declare function readContextRuns(options: ContextRunReaderOptions): Promise<ContextRunReadResult>;
218
+ export declare function readContextRunArtifact(options: ContextRunReaderOptions, id: string, artifactKey: ContextRunArtifactKey, contextGeneration?: string): Promise<ContextRunArtifactResult>;
219
+ /** Resolve one stable row identity directly, independent of list limits/order. */
220
+ export declare function readContextRun(options: ContextRunReaderOptions, id: string, contextGeneration?: string): Promise<ContextRunDetailResult>;
221
+ export declare function projectContextRunLifecycleState(state: ContextBuilderLifecycleStateV1): ContextRunLifecycleProjection;
222
+ export {};