clinkx 1.0.0 → 1.1.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 (331) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +72 -0
  3. package/clinkx-workflows/dist/chairman-knobs.d.ts +24 -0
  4. package/clinkx-workflows/dist/chairman-knobs.js +27 -0
  5. package/clinkx-workflows/dist/chairman-knobs.js.map +1 -0
  6. package/clinkx-workflows/dist/clink-client.d.ts +10 -0
  7. package/clinkx-workflows/dist/clink-client.js +39 -1
  8. package/clinkx-workflows/dist/clink-client.js.map +1 -1
  9. package/clinkx-workflows/dist/config.d.ts +29 -1
  10. package/clinkx-workflows/dist/config.js +35 -2
  11. package/clinkx-workflows/dist/config.js.map +1 -1
  12. package/clinkx-workflows/dist/context-preflight.d.ts +5 -0
  13. package/clinkx-workflows/dist/context-preflight.js.map +1 -1
  14. package/clinkx-workflows/dist/council-execution-policy.d.ts +68 -0
  15. package/clinkx-workflows/dist/council-execution-policy.js +110 -0
  16. package/clinkx-workflows/dist/council-execution-policy.js.map +1 -0
  17. package/clinkx-workflows/dist/council-expander.d.ts +9 -8
  18. package/clinkx-workflows/dist/council-expander.js +18 -9
  19. package/clinkx-workflows/dist/council-expander.js.map +1 -1
  20. package/clinkx-workflows/dist/dashboard/activity-contract.d.ts +5557 -4
  21. package/clinkx-workflows/dist/dashboard/activity-contract.js +55 -3
  22. package/clinkx-workflows/dist/dashboard/activity-contract.js.map +1 -1
  23. package/clinkx-workflows/dist/dashboard/activity-reader.d.ts +9 -5
  24. package/clinkx-workflows/dist/dashboard/activity-reader.js +15 -2
  25. package/clinkx-workflows/dist/dashboard/activity-reader.js.map +1 -1
  26. package/clinkx-workflows/dist/dashboard/api-routes.d.ts +4 -0
  27. package/clinkx-workflows/dist/dashboard/api-routes.js +133 -25
  28. package/clinkx-workflows/dist/dashboard/api-routes.js.map +1 -1
  29. package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.d.ts +3865 -0
  30. package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js +69 -0
  31. package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js.map +1 -0
  32. package/clinkx-workflows/dist/dashboard/context-run-reader.d.ts +36 -2
  33. package/clinkx-workflows/dist/dashboard/context-run-reader.js +142 -19
  34. package/clinkx-workflows/dist/dashboard/context-run-reader.js.map +1 -1
  35. package/clinkx-workflows/dist/dashboard/contracts.d.ts +20027 -480
  36. package/clinkx-workflows/dist/dashboard/contracts.js +133 -6
  37. package/clinkx-workflows/dist/dashboard/contracts.js.map +1 -1
  38. package/clinkx-workflows/dist/dashboard/index.d.ts +4 -0
  39. package/clinkx-workflows/dist/dashboard/index.js +4 -0
  40. package/clinkx-workflows/dist/dashboard/index.js.map +1 -1
  41. package/clinkx-workflows/dist/dashboard/invocation-contract.d.ts +786 -0
  42. package/clinkx-workflows/dist/dashboard/invocation-contract.js +201 -0
  43. package/clinkx-workflows/dist/dashboard/invocation-contract.js.map +1 -0
  44. package/clinkx-workflows/dist/dashboard/lazy-content.d.ts +14 -1
  45. package/clinkx-workflows/dist/dashboard/lazy-content.js +53 -2
  46. package/clinkx-workflows/dist/dashboard/lazy-content.js.map +1 -1
  47. package/clinkx-workflows/dist/dashboard/native-transcript/contract.d.ts +90 -0
  48. package/clinkx-workflows/dist/dashboard/native-transcript/contract.js +31 -0
  49. package/clinkx-workflows/dist/dashboard/native-transcript/contract.js.map +1 -0
  50. package/clinkx-workflows/dist/dashboard/native-transcript/projection.d.ts +12 -0
  51. package/clinkx-workflows/dist/dashboard/native-transcript/projection.js +286 -0
  52. package/clinkx-workflows/dist/dashboard/native-transcript/projection.js.map +1 -0
  53. package/clinkx-workflows/dist/dashboard/progress-report-contract.d.ts +147 -4
  54. package/clinkx-workflows/dist/dashboard/progress-report-contract.js +11 -11
  55. package/clinkx-workflows/dist/dashboard/progress-report-contract.js.map +1 -1
  56. package/clinkx-workflows/dist/dashboard/progress-report-reader.js +4 -56
  57. package/clinkx-workflows/dist/dashboard/progress-report-reader.js.map +1 -1
  58. package/clinkx-workflows/dist/dashboard/progress-report-status-store.d.ts +2 -1
  59. package/clinkx-workflows/dist/dashboard/progress-report-status-store.js +6 -5
  60. package/clinkx-workflows/dist/dashboard/progress-report-status-store.js.map +1 -1
  61. package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.d.ts +194 -0
  62. package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.js +89 -0
  63. package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.js.map +1 -0
  64. package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.d.ts +26 -0
  65. package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.js +102 -0
  66. package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.js.map +1 -0
  67. package/clinkx-workflows/dist/dashboard/request-admission.js +4 -0
  68. package/clinkx-workflows/dist/dashboard/request-admission.js.map +1 -1
  69. package/clinkx-workflows/dist/dashboard/scanner.d.ts +3 -0
  70. package/clinkx-workflows/dist/dashboard/scanner.js +52 -8
  71. package/clinkx-workflows/dist/dashboard/scanner.js.map +1 -1
  72. package/clinkx-workflows/dist/dashboard/server-factory.d.ts +14 -1
  73. package/clinkx-workflows/dist/dashboard/server-factory.js +73 -21
  74. package/clinkx-workflows/dist/dashboard/server-factory.js.map +1 -1
  75. package/clinkx-workflows/dist/dashboard/session-log-contract.d.ts +223 -56
  76. package/clinkx-workflows/dist/dashboard/session-log-contract.js +26 -0
  77. package/clinkx-workflows/dist/dashboard/session-log-contract.js.map +1 -1
  78. package/clinkx-workflows/dist/dashboard/session-log-journal.js +10 -3
  79. package/clinkx-workflows/dist/dashboard/session-log-journal.js.map +1 -1
  80. package/clinkx-workflows/dist/dashboard/session-log-redaction.d.ts +9 -1
  81. package/clinkx-workflows/dist/dashboard/session-log-redaction.js +793 -59
  82. package/clinkx-workflows/dist/dashboard/session-log-redaction.js.map +1 -1
  83. package/clinkx-workflows/dist/dashboard-ui/assets/index-JPHQVtn9.js +106 -0
  84. package/clinkx-workflows/dist/dashboard-ui/assets/style-DOMHk-j6.css +1 -0
  85. package/clinkx-workflows/dist/dashboard-ui/index.html +2 -2
  86. package/clinkx-workflows/dist/delegate-finalizer-policy.d.ts +26 -0
  87. package/clinkx-workflows/dist/delegate-finalizer-policy.js +72 -0
  88. package/clinkx-workflows/dist/delegate-finalizer-policy.js.map +1 -0
  89. package/clinkx-workflows/dist/delegate-signature.d.ts +14 -0
  90. package/clinkx-workflows/dist/delegate-signature.js +14 -0
  91. package/clinkx-workflows/dist/delegate-signature.js.map +1 -0
  92. package/clinkx-workflows/dist/delegate-validate.d.ts +32 -2
  93. package/clinkx-workflows/dist/delegate-validate.js +51 -0
  94. package/clinkx-workflows/dist/delegate-validate.js.map +1 -1
  95. package/clinkx-workflows/dist/engine.d.ts +113 -3
  96. package/clinkx-workflows/dist/engine.js +476 -80
  97. package/clinkx-workflows/dist/engine.js.map +1 -1
  98. package/clinkx-workflows/dist/errors.d.ts +22 -2
  99. package/clinkx-workflows/dist/errors.js +30 -2
  100. package/clinkx-workflows/dist/errors.js.map +1 -1
  101. package/clinkx-workflows/dist/fidelity.d.ts +47 -1
  102. package/clinkx-workflows/dist/fidelity.js +54 -1
  103. package/clinkx-workflows/dist/fidelity.js.map +1 -1
  104. package/clinkx-workflows/dist/fingerprint.d.ts +24 -6
  105. package/clinkx-workflows/dist/fingerprint.js +32 -9
  106. package/clinkx-workflows/dist/fingerprint.js.map +1 -1
  107. package/clinkx-workflows/dist/index.js +53 -1
  108. package/clinkx-workflows/dist/index.js.map +1 -1
  109. package/clinkx-workflows/dist/logger.d.ts +1 -1
  110. package/clinkx-workflows/dist/logger.js +17 -3
  111. package/clinkx-workflows/dist/logger.js.map +1 -1
  112. package/clinkx-workflows/dist/monotonic-clock.d.ts +19 -0
  113. package/clinkx-workflows/dist/monotonic-clock.js +22 -0
  114. package/clinkx-workflows/dist/monotonic-clock.js.map +1 -0
  115. package/clinkx-workflows/dist/plan-review/contract.d.ts +52 -52
  116. package/clinkx-workflows/dist/plan-review/publication.d.ts +4 -4
  117. package/clinkx-workflows/dist/plan-review/run-state.d.ts +16 -16
  118. package/clinkx-workflows/dist/roster-contract.d.ts +889 -0
  119. package/clinkx-workflows/dist/roster-contract.js +180 -0
  120. package/clinkx-workflows/dist/roster-contract.js.map +1 -0
  121. package/clinkx-workflows/dist/rosters.d.ts +14 -0
  122. package/clinkx-workflows/dist/rosters.js +169 -0
  123. package/clinkx-workflows/dist/rosters.js.map +1 -0
  124. package/clinkx-workflows/dist/run-health.d.ts +7 -0
  125. package/clinkx-workflows/dist/run-health.js +25 -0
  126. package/clinkx-workflows/dist/run-health.js.map +1 -0
  127. package/clinkx-workflows/dist/schema.d.ts +64 -0
  128. package/clinkx-workflows/dist/schema.js +24 -0
  129. package/clinkx-workflows/dist/schema.js.map +1 -1
  130. package/clinkx-workflows/dist/server.js +2 -0
  131. package/clinkx-workflows/dist/server.js.map +1 -1
  132. package/clinkx-workflows/dist/shutdown.d.ts +15 -2
  133. package/clinkx-workflows/dist/shutdown.js +60 -16
  134. package/clinkx-workflows/dist/shutdown.js.map +1 -1
  135. package/clinkx-workflows/dist/state-schema.d.ts +23 -0
  136. package/clinkx-workflows/dist/state.d.ts +5 -0
  137. package/clinkx-workflows/dist/state.js +128 -21
  138. package/clinkx-workflows/dist/state.js.map +1 -1
  139. package/clinkx-workflows/dist/stdio-watchdog.d.ts +52 -0
  140. package/clinkx-workflows/dist/stdio-watchdog.js +212 -0
  141. package/clinkx-workflows/dist/stdio-watchdog.js.map +1 -0
  142. package/clinkx-workflows/dist/types.d.ts +6 -0
  143. package/clinkx-workflows/dist/validators/council.d.ts +50 -50
  144. package/clinkx-workflows/dist/validators/plan-review.d.ts +3 -3
  145. package/clinkx-workflows/dist/workflow-tools.d.ts +70 -0
  146. package/clinkx-workflows/dist/workflow-tools.js +760 -168
  147. package/clinkx-workflows/dist/workflow-tools.js.map +1 -1
  148. package/clinkx-workflows/templates/council/answer-chairman.txt +3 -0
  149. package/clinkx-workflows/templates/council/answer-cross-reviewer.txt +3 -0
  150. package/clinkx-workflows/templates/council/answer-specialist.txt +3 -0
  151. package/clinkx-workflows/templates/council/chairman.txt +3 -0
  152. package/clinkx-workflows/templates/council/code-review-chairman.txt +3 -0
  153. package/clinkx-workflows/templates/council/code-review-cross-reviewer.txt +3 -0
  154. package/clinkx-workflows/templates/council/code-review-reviewer.txt +3 -0
  155. package/clinkx-workflows/templates/council/debug-chairman.txt +3 -0
  156. package/clinkx-workflows/templates/council/debug-cross-reviewer.txt +3 -0
  157. package/clinkx-workflows/templates/council/debug-debugger.txt +3 -0
  158. package/clinkx-workflows/templates/council/discover-analyst.txt +3 -0
  159. package/clinkx-workflows/templates/council/discover-chairman.txt +3 -0
  160. package/clinkx-workflows/templates/council/discover-cross-reviewer.txt +3 -0
  161. package/clinkx-workflows/templates/council/member.txt +3 -0
  162. package/clinkx-workflows/templates/council/plan-review-chairman.txt +3 -0
  163. package/clinkx-workflows/templates/council/plan-review-cross-reviewer.txt +3 -0
  164. package/clinkx-workflows/templates/council/plan-review-reviewer.txt +3 -0
  165. package/clinkx-workflows/templates/council/reviewer.txt +3 -0
  166. package/clinkx-workflows/workflows/council-answer.yaml +3 -0
  167. package/clinkx-workflows/workflows/council-code-review.yaml +3 -0
  168. package/clinkx-workflows/workflows/council-debug.yaml +3 -0
  169. package/clinkx-workflows/workflows/council-default.yaml +7 -0
  170. package/clinkx-workflows/workflows/council-discover.yaml +3 -0
  171. package/clinkx-workflows/workflows/council-plan-review.yaml +3 -0
  172. package/conf/adapters/agy.json +9 -2
  173. package/conf/adapters/claude.json +7 -0
  174. package/conf/adapters/codex.json +7 -0
  175. package/conf/adapters/glm.json +19 -3
  176. package/conf/adapters/grok.json +9 -2
  177. package/conf/adapters/hapi/agy.json +9 -2
  178. package/conf/adapters/hapi/claude.json +7 -0
  179. package/conf/adapters/hapi/codex.json +7 -0
  180. package/conf/adapters/hapi/glm.json +20 -4
  181. package/conf/rosters/default-council.json +21 -0
  182. package/dist/activity-journal.d.ts +17 -3
  183. package/dist/activity-journal.js +404 -79
  184. package/dist/activity-journal.js.map +1 -1
  185. package/dist/codex/agent-tools.js +36 -0
  186. package/dist/codex/agent-tools.js.map +1 -1
  187. package/dist/codex/app-server-client.d.ts +3 -0
  188. package/dist/codex/app-server-client.js +11 -0
  189. package/dist/codex/app-server-client.js.map +1 -1
  190. package/dist/codex/app-server-registry.d.ts +18 -0
  191. package/dist/codex/app-server-registry.js +88 -2
  192. package/dist/codex/app-server-registry.js.map +1 -1
  193. package/dist/codex/client-types.d.ts +7 -1
  194. package/dist/codex/protocol.d.ts +4 -4
  195. package/dist/config.d.ts +220 -23
  196. package/dist/config.js +104 -1
  197. package/dist/config.js.map +1 -1
  198. package/dist/context-builder/bundle.d.ts +13 -0
  199. package/dist/context-builder/bundle.js +46 -0
  200. package/dist/context-builder/bundle.js.map +1 -1
  201. package/dist/context-builder/delegate-finalizer-effective.d.ts +33 -0
  202. package/dist/context-builder/delegate-finalizer-effective.js +82 -0
  203. package/dist/context-builder/delegate-finalizer-effective.js.map +1 -0
  204. package/dist/context-builder/delegate-packet.d.ts +18 -0
  205. package/dist/context-builder/delegate-packet.js +73 -9
  206. package/dist/context-builder/delegate-packet.js.map +1 -1
  207. package/dist/context-builder/delegate-reconstruction.d.ts +29 -0
  208. package/dist/context-builder/delegate-reconstruction.js +110 -41
  209. package/dist/context-builder/delegate-reconstruction.js.map +1 -1
  210. package/dist/context-builder/delegate-validation.d.ts +31 -0
  211. package/dist/context-builder/delegate-validation.js +87 -10
  212. package/dist/context-builder/delegate-validation.js.map +1 -1
  213. package/dist/context-builder/delegate.d.ts +9 -0
  214. package/dist/context-builder/delegate.js +210 -59
  215. package/dist/context-builder/delegate.js.map +1 -1
  216. package/dist/context-builder/diagnostics.d.ts +1 -1
  217. package/dist/context-builder/diagnostics.js.map +1 -1
  218. package/dist/context-builder/discovery-progress.d.ts +25 -0
  219. package/dist/context-builder/discovery-progress.js +64 -0
  220. package/dist/context-builder/discovery-progress.js.map +1 -0
  221. package/dist/context-builder/discovery-watchdog.d.ts +15 -0
  222. package/dist/context-builder/discovery-watchdog.js +39 -0
  223. package/dist/context-builder/discovery-watchdog.js.map +1 -0
  224. package/dist/context-builder/discovery.d.ts +7 -0
  225. package/dist/context-builder/discovery.js +119 -7
  226. package/dist/context-builder/discovery.js.map +1 -1
  227. package/dist/context-builder/external-gaps.d.ts +73 -0
  228. package/dist/context-builder/external-gaps.js +248 -0
  229. package/dist/context-builder/external-gaps.js.map +1 -0
  230. package/dist/context-builder/globs.d.ts +1 -0
  231. package/dist/context-builder/globs.js +15 -0
  232. package/dist/context-builder/globs.js.map +1 -1
  233. package/dist/context-builder/handler.d.ts +42 -1
  234. package/dist/context-builder/handler.js +690 -62
  235. package/dist/context-builder/handler.js.map +1 -1
  236. package/dist/context-builder/invocation-sidecar.d.ts +41 -0
  237. package/dist/context-builder/invocation-sidecar.js +189 -0
  238. package/dist/context-builder/invocation-sidecar.js.map +1 -0
  239. package/dist/context-builder/lifecycle-contract.d.ts +51 -51
  240. package/dist/context-builder/mutation-lock.d.ts +32 -0
  241. package/dist/context-builder/mutation-lock.js +321 -0
  242. package/dist/context-builder/mutation-lock.js.map +1 -0
  243. package/dist/context-builder/review-coverage.d.ts +32 -0
  244. package/dist/context-builder/review-coverage.js +130 -23
  245. package/dist/context-builder/review-coverage.js.map +1 -1
  246. package/dist/context-builder/schema.d.ts +76 -1
  247. package/dist/context-builder/schema.js +21 -1
  248. package/dist/context-builder/schema.js.map +1 -1
  249. package/dist/context-builder/secrets.d.ts +31 -0
  250. package/dist/context-builder/secrets.js +865 -83
  251. package/dist/context-builder/secrets.js.map +1 -1
  252. package/dist/context-builder/status.d.ts +1 -1
  253. package/dist/context-builder/status.js +1 -0
  254. package/dist/context-builder/status.js.map +1 -1
  255. package/dist/context-builder/storage.d.ts +29 -5
  256. package/dist/context-builder/storage.js +311 -236
  257. package/dist/context-builder/storage.js.map +1 -1
  258. package/dist/context-builder/versions.d.ts +19 -4
  259. package/dist/context-builder/versions.js +19 -4
  260. package/dist/context-builder/versions.js.map +1 -1
  261. package/dist/context-builder/workflow-runner.d.ts +6 -0
  262. package/dist/context-builder/workflow-runner.js +363 -173
  263. package/dist/context-builder/workflow-runner.js.map +1 -1
  264. package/dist/dashboard-adapter-catalog.js +7 -0
  265. package/dist/dashboard-adapter-catalog.js.map +1 -1
  266. package/dist/dashboard-cli.d.ts +2 -0
  267. package/dist/dashboard-cli.js +40 -2
  268. package/dist/dashboard-cli.js.map +1 -1
  269. package/dist/dashboard-companion/client.d.ts +1 -0
  270. package/dist/dashboard-companion/client.js +22 -3
  271. package/dist/dashboard-companion/client.js.map +1 -1
  272. package/dist/dashboard-companion/protocol.js +4 -1
  273. package/dist/dashboard-companion/protocol.js.map +1 -1
  274. package/dist/dashboard-gateway/index.d.ts +1 -0
  275. package/dist/dashboard-gateway/index.js +33 -2
  276. package/dist/dashboard-gateway/index.js.map +1 -1
  277. package/dist/handler.js +5 -1
  278. package/dist/handler.js.map +1 -1
  279. package/dist/index.d.ts +18 -1
  280. package/dist/index.js +145 -7
  281. package/dist/index.js.map +1 -1
  282. package/dist/logger.d.ts +1 -1
  283. package/dist/logger.js +18 -3
  284. package/dist/logger.js.map +1 -1
  285. package/dist/parsers/agy-stream-json.d.ts +14 -0
  286. package/dist/parsers/agy-stream-json.js +172 -0
  287. package/dist/parsers/agy-stream-json.js.map +1 -0
  288. package/dist/parsers/extract.js +5 -1
  289. package/dist/parsers/extract.js.map +1 -1
  290. package/dist/parsers/observed-invocation.d.ts +20 -0
  291. package/dist/parsers/observed-invocation.js +42 -0
  292. package/dist/parsers/observed-invocation.js.map +1 -0
  293. package/dist/pipeline.d.ts +13 -0
  294. package/dist/pipeline.js +60 -10
  295. package/dist/pipeline.js.map +1 -1
  296. package/dist/progress-report/lock.d.ts +74 -0
  297. package/dist/progress-report/lock.js +343 -0
  298. package/dist/progress-report/lock.js.map +1 -0
  299. package/dist/progress-report/schema.d.ts +808 -0
  300. package/dist/progress-report/schema.js +119 -0
  301. package/dist/progress-report/schema.js.map +1 -0
  302. package/dist/progress-report/store.d.ts +66 -0
  303. package/dist/progress-report/store.js +766 -0
  304. package/dist/progress-report/store.js.map +1 -0
  305. package/dist/progress-report/tools.d.ts +20 -0
  306. package/dist/progress-report/tools.js +141 -0
  307. package/dist/progress-report/tools.js.map +1 -0
  308. package/dist/prompt-mode.d.ts +1 -1
  309. package/dist/prompt-mode.js +7 -2
  310. package/dist/prompt-mode.js.map +1 -1
  311. package/dist/runner.d.ts +7 -0
  312. package/dist/runner.js +10 -3
  313. package/dist/runner.js.map +1 -1
  314. package/dist/safety.d.ts +50 -0
  315. package/dist/safety.js +182 -1
  316. package/dist/safety.js.map +1 -1
  317. package/dist/schema.d.ts +8 -0
  318. package/dist/schema.js +20 -0
  319. package/dist/schema.js.map +1 -1
  320. package/dist/server.d.ts +6 -1
  321. package/dist/server.js +94 -8
  322. package/dist/server.js.map +1 -1
  323. package/dist/session-log-stream.d.ts +1 -1
  324. package/dist/session-log-stream.js +280 -33
  325. package/dist/session-log-stream.js.map +1 -1
  326. package/dist/stdio-activity.d.ts +28 -0
  327. package/dist/stdio-activity.js +72 -0
  328. package/dist/stdio-activity.js.map +1 -0
  329. package/package.json +2 -1
  330. package/clinkx-workflows/dist/dashboard-ui/assets/index-DOkMXTfB.js +0 -25
  331. package/clinkx-workflows/dist/dashboard-ui/assets/style-ChJsn0KD.css +0 -1
@@ -0,0 +1,189 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { open, rename, rm } from "node:fs/promises";
3
+ import { basename, dirname, join, resolve } from "node:path";
4
+ import { CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME, CONTEXT_BUILDER_INVOCATION_AUDIT_V2_SCHEMA_VERSION, decodeContextBuilderInvocationAuditBytes, MAX_CONTEXT_BUILDER_INVOCATION_AUDIT_BYTES, serializeContextBuilderInvocationAuditV2, } from "../../clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js";
5
+ import { ContainedFilePolicyError, ContainedFileTooLargeError, containedFileFingerprintsEqual, readContainedRelativeFile, } from "../../clinkx-workflows/dist/contained-file.js";
6
+ import { logger } from "../logger.js";
7
+ import { withContextBuilderMutationLock } from "./mutation-lock.js";
8
+ // Shared retries sleep 10 ms; cap best-effort audit contention at ~100 ms.
9
+ const CONTEXT_BUILDER_INVOCATION_AUDIT_LOCK_ATTEMPTS = 10;
10
+ export { CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME, MAX_CONTEXT_BUILDER_INVOCATION_AUDIT_BYTES, };
11
+ export const CONTEXT_BUILDER_INVOCATION_AUDIT_SCHEMA_VERSION = CONTEXT_BUILDER_INVOCATION_AUDIT_V2_SCHEMA_VERSION;
12
+ class InvocationAuditSidecarError extends Error {
13
+ reasonCode;
14
+ constructor(reasonCode) {
15
+ super("context_builder invocation audit sidecar rejected");
16
+ this.name = "InvocationAuditSidecarError";
17
+ this.reasonCode = reasonCode;
18
+ }
19
+ }
20
+ /**
21
+ * True only when a sidecar read proved the existing artifact invalid or unsafe.
22
+ * Transient I/O failures remain distinguishable so callers cannot treat bytes
23
+ * they failed to inspect as authoritative invalid content.
24
+ */
25
+ export function isContextBuilderInvocationAuditSidecarProvenInvalid(error) {
26
+ if (!(error instanceof InvocationAuditSidecarError))
27
+ return false;
28
+ return error.reasonCode === "invalid_document" ||
29
+ error.reasonCode === "oversized_file" ||
30
+ error.reasonCode === "unsafe_file";
31
+ }
32
+ /**
33
+ * Read an optional invocation audit through the shared descriptor-bound,
34
+ * no-follow contained-file reader and the shared strict V1/V2 decoder.
35
+ *
36
+ * Missing is the only non-error absence. Existing malformed, future-version,
37
+ * oversized, symlink, and non-regular entries all fail closed.
38
+ */
39
+ export async function readContextBuilderInvocationAuditSidecar(artifactRunDir) {
40
+ let bytes;
41
+ let fingerprint;
42
+ try {
43
+ const read = await readContainedRelativeFile(artifactRunDir, CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME, {
44
+ wantBytes: true,
45
+ requireRegular: true,
46
+ requireExactRequestedPath: true,
47
+ maxBytes: MAX_CONTEXT_BUILDER_INVOCATION_AUDIT_BYTES,
48
+ containerLabel: "context_builder run directory",
49
+ pathLabel: CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME,
50
+ });
51
+ if (read.bytes === undefined) {
52
+ throw new InvocationAuditSidecarError("read_failed");
53
+ }
54
+ bytes = read.bytes;
55
+ fingerprint = read.fingerprint;
56
+ }
57
+ catch (error) {
58
+ if (isEnoent(error)) {
59
+ return undefined;
60
+ }
61
+ if (error instanceof ContainedFileTooLargeError) {
62
+ throw new InvocationAuditSidecarError("oversized_file");
63
+ }
64
+ if (error instanceof ContainedFilePolicyError) {
65
+ throw new InvocationAuditSidecarError("unsafe_file");
66
+ }
67
+ if (error instanceof InvocationAuditSidecarError) {
68
+ throw error;
69
+ }
70
+ throw new InvocationAuditSidecarError("read_failed");
71
+ }
72
+ let decoded;
73
+ try {
74
+ decoded = decodeContextBuilderInvocationAuditBytes(bytes);
75
+ }
76
+ catch {
77
+ throw new InvocationAuditSidecarError("invalid_document");
78
+ }
79
+ return {
80
+ document: decoded.document,
81
+ fingerprint,
82
+ serialized: decoded.serialized,
83
+ };
84
+ }
85
+ /**
86
+ * Persist a strict value-only curator/finalizer invocation audit next to the
87
+ * run. This remains outside manifest and receipt metadata.
88
+ *
89
+ * Best-effort: one rejected seat update must never change delegate execution or
90
+ * the run outcome. An existing invalid sidecar is never repaired or replaced;
91
+ * its bytes remain authoritative for offline diagnosis.
92
+ */
93
+ export async function recordContextInvocationAudit(artifactRunDir, seat, audit, options = {}) {
94
+ const runDir = resolve(artifactRunDir);
95
+ const lockTarget = {
96
+ runId: basename(runDir),
97
+ runsDir: dirname(runDir),
98
+ runDir,
99
+ };
100
+ try {
101
+ await withContextBuilderMutationLock(lockTarget, {}, async () => {
102
+ const existing = await readContextBuilderInvocationAuditSidecar(runDir);
103
+ let serialized;
104
+ try {
105
+ const base = {
106
+ schema_version: CONTEXT_BUILDER_INVOCATION_AUDIT_V2_SCHEMA_VERSION,
107
+ ...(existing?.document.curator === undefined
108
+ ? {}
109
+ : { curator: existing.document.curator }),
110
+ ...(existing?.document.finalizer === undefined
111
+ ? {}
112
+ : { finalizer: existing.document.finalizer }),
113
+ };
114
+ const document = seat === "curator"
115
+ ? { ...base, curator: audit }
116
+ : { ...base, finalizer: audit };
117
+ serialized = serializeContextBuilderInvocationAuditV2(document);
118
+ }
119
+ catch {
120
+ throw new InvocationAuditSidecarError("invalid_seat_update");
121
+ }
122
+ await writeAtomicText(join(runDir, CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME), serialized, existing, options.beforeCommit);
123
+ }, {
124
+ maxAttempts: CONTEXT_BUILDER_INVOCATION_AUDIT_LOCK_ATTEMPTS,
125
+ onContention: options.onLockContention,
126
+ });
127
+ }
128
+ catch (error) {
129
+ warnSkippedSeatUpdate(seat, sidecarFailureCode(error, "write_failed"));
130
+ }
131
+ }
132
+ async function writeAtomicText(targetPath, content, admittedPredecessor, beforeCommit) {
133
+ const tempPath = `${targetPath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
134
+ const handle = await open(tempPath, "wx", 0o600);
135
+ let cleanupTemp = true;
136
+ try {
137
+ await handle.writeFile(content, { encoding: "utf8" });
138
+ await handle.sync();
139
+ await handle.close();
140
+ await beforeCommit?.();
141
+ await assertAdmittedPredecessorUnchanged(dirname(targetPath), admittedPredecessor);
142
+ await rename(tempPath, targetPath);
143
+ cleanupTemp = false;
144
+ }
145
+ catch (error) {
146
+ await handle.close().catch(() => { });
147
+ if (cleanupTemp) {
148
+ await rm(tempPath, { force: true }).catch(() => { });
149
+ }
150
+ throw error;
151
+ }
152
+ }
153
+ async function assertAdmittedPredecessorUnchanged(artifactRunDir, admitted) {
154
+ // The per-run lease excludes cooperative writers and pruners. Re-admission
155
+ // binds this commit to the exact prior descriptor/content (or exact absence),
156
+ // but pathname rename is not a hostile-filesystem CAS.
157
+ const current = await readContextBuilderInvocationAuditSidecar(artifactRunDir);
158
+ if (admitted === undefined) {
159
+ if (current !== undefined) {
160
+ throw new InvocationAuditSidecarError("predecessor_changed");
161
+ }
162
+ return;
163
+ }
164
+ if (current === undefined
165
+ || current.serialized !== admitted.serialized
166
+ || !containedFileFingerprintsEqual(current.fingerprint, admitted.fingerprint)) {
167
+ throw new InvocationAuditSidecarError("predecessor_changed");
168
+ }
169
+ }
170
+ function warnSkippedSeatUpdate(seat, reasonCode) {
171
+ try {
172
+ logger.warn({ seat, reason_code: reasonCode }, "failed to record context_builder invocation audit sidecar");
173
+ }
174
+ catch {
175
+ // Diagnostics must not fail the delegate.
176
+ }
177
+ }
178
+ function sidecarFailureCode(error, fallback) {
179
+ return error instanceof InvocationAuditSidecarError
180
+ ? error.reasonCode
181
+ : fallback;
182
+ }
183
+ function isEnoent(error) {
184
+ return (error != null &&
185
+ typeof error === "object" &&
186
+ "code" in error &&
187
+ error.code === "ENOENT");
188
+ }
189
+ //# sourceMappingURL=invocation-sidecar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocation-sidecar.js","sourceRoot":"","sources":["../../src/context-builder/invocation-sidecar.ts"],"names":[],"mappings":"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"}
@@ -118,28 +118,28 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
118
118
  reason_code: z.ZodOptional<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>>;
119
119
  }, "strict", z.ZodTypeAny, {
120
120
  write: "skipped" | "not_attempted" | "written";
121
- lookup: "hit" | "not_checked" | "miss";
122
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
121
+ lookup: "not_checked" | "miss" | "hit";
122
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
123
123
  }, {
124
124
  write: "skipped" | "not_attempted" | "written";
125
- lookup: "hit" | "not_checked" | "miss";
126
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
125
+ lookup: "not_checked" | "miss" | "hit";
126
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
127
127
  }>;
128
128
  fallback: z.ZodEffects<z.ZodObject<{
129
129
  status: z.ZodEnum<["not_applicable", "not_used", "used", "failed"]>;
130
130
  reason_code: z.ZodOptional<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>>;
131
131
  }, "strict", z.ZodTypeAny, {
132
132
  status: "failed" | "not_applicable" | "not_used" | "used";
133
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
133
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
134
134
  }, {
135
135
  status: "failed" | "not_applicable" | "not_used" | "used";
136
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
136
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
137
137
  }>, {
138
138
  status: "failed" | "not_applicable" | "not_used" | "used";
139
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
139
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
140
140
  }, {
141
141
  status: "failed" | "not_applicable" | "not_used" | "used";
142
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
142
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
143
143
  }>;
144
144
  counts: z.ZodObject<{
145
145
  files_seen: z.ZodNumber;
@@ -154,17 +154,17 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
154
154
  files_considered: number;
155
155
  files_selected: number;
156
156
  files_omitted: number;
157
+ search_results: number;
157
158
  bytes_read: number;
158
159
  bytes_written: number;
159
- search_results: number;
160
160
  }, {
161
161
  files_seen: number;
162
162
  files_considered: number;
163
163
  files_selected: number;
164
164
  files_omitted: number;
165
+ search_results: number;
165
166
  bytes_read: number;
166
167
  bytes_written: number;
167
- search_results: number;
168
168
  }>;
169
169
  coverage: z.ZodEffects<z.ZodObject<{
170
170
  policy: z.ZodNullable<z.ZodLiteral<"review_deep_v1">>;
@@ -175,33 +175,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
175
175
  }, "strict", z.ZodTypeAny, {
176
176
  missing: number;
177
177
  status: "satisfied" | "degraded" | "not_evaluated";
178
- selected: number;
179
178
  policy: "review_deep_v1" | null;
180
179
  required: number;
180
+ selected: number;
181
181
  }, {
182
182
  missing: number;
183
183
  status: "satisfied" | "degraded" | "not_evaluated";
184
- selected: number;
185
184
  policy: "review_deep_v1" | null;
186
185
  required: number;
186
+ selected: number;
187
187
  }>, {
188
188
  missing: number;
189
189
  status: "satisfied" | "degraded" | "not_evaluated";
190
- selected: number;
191
190
  policy: "review_deep_v1" | null;
192
191
  required: number;
192
+ selected: number;
193
193
  }, {
194
194
  missing: number;
195
195
  status: "satisfied" | "degraded" | "not_evaluated";
196
- selected: number;
197
196
  policy: "review_deep_v1" | null;
198
197
  required: number;
198
+ selected: number;
199
199
  }>;
200
- reason_codes: z.ZodEffects<z.ZodArray<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>, "many">, ("delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[], ("delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[]>;
200
+ reason_codes: z.ZodEffects<z.ZodArray<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>, "many">, ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[], ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[]>;
201
201
  }, "strict", z.ZodTypeAny, {
202
202
  fallback: {
203
203
  status: "failed" | "not_applicable" | "not_used" | "used";
204
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
204
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
205
205
  };
206
206
  status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
207
207
  curator: {
@@ -216,33 +216,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
216
216
  execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
217
217
  score?: number | undefined;
218
218
  };
219
- schema_version: "clinkx-context-builder-lifecycle-v1";
220
- created_at: string;
221
219
  coverage: {
222
220
  missing: number;
223
221
  status: "satisfied" | "degraded" | "not_evaluated";
224
- selected: number;
225
222
  policy: "review_deep_v1" | null;
226
223
  required: number;
224
+ selected: number;
227
225
  };
228
- reason_codes: ("delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
226
+ updated_at: string;
227
+ schema_version: "clinkx-context-builder-lifecycle-v1";
228
+ reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
229
229
  context_run_id: string;
230
230
  operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
231
231
  phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
232
- updated_at: string;
232
+ created_at: string;
233
233
  cache: {
234
234
  write: "skipped" | "not_attempted" | "written";
235
- lookup: "hit" | "not_checked" | "miss";
236
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
235
+ lookup: "not_checked" | "miss" | "hit";
236
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
237
237
  };
238
238
  counts: {
239
239
  files_seen: number;
240
240
  files_considered: number;
241
241
  files_selected: number;
242
242
  files_omitted: number;
243
+ search_results: number;
243
244
  bytes_read: number;
244
245
  bytes_written: number;
245
- search_results: number;
246
246
  };
247
247
  artifact_run_id?: string | undefined;
248
248
  started_at?: string | undefined;
@@ -251,7 +251,7 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
251
251
  }, {
252
252
  fallback: {
253
253
  status: "failed" | "not_applicable" | "not_used" | "used";
254
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
254
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
255
255
  };
256
256
  status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
257
257
  curator: {
@@ -266,33 +266,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
266
266
  execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
267
267
  score?: number | undefined;
268
268
  };
269
- schema_version: "clinkx-context-builder-lifecycle-v1";
270
- created_at: string;
271
269
  coverage: {
272
270
  missing: number;
273
271
  status: "satisfied" | "degraded" | "not_evaluated";
274
- selected: number;
275
272
  policy: "review_deep_v1" | null;
276
273
  required: number;
274
+ selected: number;
277
275
  };
278
- reason_codes: ("delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
276
+ updated_at: string;
277
+ schema_version: "clinkx-context-builder-lifecycle-v1";
278
+ reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
279
279
  context_run_id: string;
280
280
  operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
281
281
  phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
282
- updated_at: string;
282
+ created_at: string;
283
283
  cache: {
284
284
  write: "skipped" | "not_attempted" | "written";
285
- lookup: "hit" | "not_checked" | "miss";
286
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
285
+ lookup: "not_checked" | "miss" | "hit";
286
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
287
287
  };
288
288
  counts: {
289
289
  files_seen: number;
290
290
  files_considered: number;
291
291
  files_selected: number;
292
292
  files_omitted: number;
293
+ search_results: number;
293
294
  bytes_read: number;
294
295
  bytes_written: number;
295
- search_results: number;
296
296
  };
297
297
  artifact_run_id?: string | undefined;
298
298
  started_at?: string | undefined;
@@ -301,7 +301,7 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
301
301
  }>, {
302
302
  fallback: {
303
303
  status: "failed" | "not_applicable" | "not_used" | "used";
304
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
304
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
305
305
  };
306
306
  status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
307
307
  curator: {
@@ -316,33 +316,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
316
316
  execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
317
317
  score?: number | undefined;
318
318
  };
319
- schema_version: "clinkx-context-builder-lifecycle-v1";
320
- created_at: string;
321
319
  coverage: {
322
320
  missing: number;
323
321
  status: "satisfied" | "degraded" | "not_evaluated";
324
- selected: number;
325
322
  policy: "review_deep_v1" | null;
326
323
  required: number;
324
+ selected: number;
327
325
  };
328
- reason_codes: ("delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
326
+ updated_at: string;
327
+ schema_version: "clinkx-context-builder-lifecycle-v1";
328
+ reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
329
329
  context_run_id: string;
330
330
  operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
331
331
  phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
332
- updated_at: string;
332
+ created_at: string;
333
333
  cache: {
334
334
  write: "skipped" | "not_attempted" | "written";
335
- lookup: "hit" | "not_checked" | "miss";
336
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
335
+ lookup: "not_checked" | "miss" | "hit";
336
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
337
337
  };
338
338
  counts: {
339
339
  files_seen: number;
340
340
  files_considered: number;
341
341
  files_selected: number;
342
342
  files_omitted: number;
343
+ search_results: number;
343
344
  bytes_read: number;
344
345
  bytes_written: number;
345
- search_results: number;
346
346
  };
347
347
  artifact_run_id?: string | undefined;
348
348
  started_at?: string | undefined;
@@ -351,7 +351,7 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
351
351
  }, {
352
352
  fallback: {
353
353
  status: "failed" | "not_applicable" | "not_used" | "used";
354
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
354
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
355
355
  };
356
356
  status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
357
357
  curator: {
@@ -366,33 +366,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
366
366
  execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
367
367
  score?: number | undefined;
368
368
  };
369
- schema_version: "clinkx-context-builder-lifecycle-v1";
370
- created_at: string;
371
369
  coverage: {
372
370
  missing: number;
373
371
  status: "satisfied" | "degraded" | "not_evaluated";
374
- selected: number;
375
372
  policy: "review_deep_v1" | null;
376
373
  required: number;
374
+ selected: number;
377
375
  };
378
- reason_codes: ("delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
376
+ updated_at: string;
377
+ schema_version: "clinkx-context-builder-lifecycle-v1";
378
+ reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
379
379
  context_run_id: string;
380
380
  operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
381
381
  phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
382
- updated_at: string;
382
+ created_at: string;
383
383
  cache: {
384
384
  write: "skipped" | "not_attempted" | "written";
385
- lookup: "hit" | "not_checked" | "miss";
386
- reason_code?: "delegate_fallback" | "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
385
+ lookup: "not_checked" | "miss" | "hit";
386
+ reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
387
387
  };
388
388
  counts: {
389
389
  files_seen: number;
390
390
  files_considered: number;
391
391
  files_selected: number;
392
392
  files_omitted: number;
393
+ search_results: number;
393
394
  bytes_read: number;
394
395
  bytes_written: number;
395
- search_results: number;
396
396
  };
397
397
  artifact_run_id?: string | undefined;
398
398
  started_at?: string | undefined;
@@ -0,0 +1,32 @@
1
+ import { type FileHandle } from "node:fs/promises";
2
+ import type { BigIntStats } from "node:fs";
3
+ export type ContextBuilderMutationLockTarget = {
4
+ runId: string;
5
+ runsDir: string;
6
+ runDir: string;
7
+ };
8
+ export type ContextBuilderMutationLockOps = {
9
+ open?(path: string, flags: string, mode?: number): Promise<FileHandle>;
10
+ lstat?(path: string, options: {
11
+ bigint: true;
12
+ }): Promise<BigIntStats>;
13
+ rm?(path: string, options: {
14
+ force?: boolean;
15
+ }): Promise<void>;
16
+ };
17
+ export type ContextBuilderMutationLockOptions = {
18
+ ownerNonce?: string | undefined;
19
+ /** Keep the storage default unless a best-effort caller needs a tighter bound. */
20
+ maxAttempts?: number | undefined;
21
+ /** Deterministic contention seam; production callers leave this unset. */
22
+ onContention?: (() => void | Promise<void>) | undefined;
23
+ /** Storage cleanup supplies its existing owner/manifest admission check. */
24
+ canRecoverStale?: (() => Promise<boolean>) | undefined;
25
+ /** Deterministic seam after stale-lock qualification, before final admission/removal. */
26
+ beforeStaleRemoval?: (() => void | Promise<void>) | undefined;
27
+ };
28
+ /**
29
+ * Serialize cooperative mutations of one context_builder run. The lock lives
30
+ * beside the run directory so it also survives removal of that directory.
31
+ */
32
+ export declare function withContextBuilderMutationLock<T>(target: ContextBuilderMutationLockTarget, ops: ContextBuilderMutationLockOps, callback: () => Promise<T>, options?: ContextBuilderMutationLockOptions): Promise<T>;