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,328 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { z } from "zod";
3
+ export const CONTEXT_BUILDER_LIFECYCLE_SCHEMA_VERSION = "clinkx-context-builder-lifecycle-v1";
4
+ export const CONTEXT_BUILDER_LIFECYCLE_RUNS_DIR_ENV = "CLINKX_CONTEXT_BUILDER_RUNS_DIR";
5
+ export const CONTEXT_BUILDER_LIFECYCLE_DIRECTORY = ".context-runs";
6
+ export const CONTEXT_BUILDER_LIFECYCLE_STATE_FILENAME = "state.json";
7
+ export const MAX_CONTEXT_BUILDER_LIFECYCLE_DURATION_MS = 86_400_000;
8
+ export const MAX_CONTEXT_BUILDER_LIFECYCLE_REASON_CODES = 16;
9
+ export const CONTEXT_BUILDER_OPERATION_KINDS = [
10
+ "standalone",
11
+ "refine",
12
+ "workflow_preflight",
13
+ "historical",
14
+ ];
15
+ export const CONTEXT_BUILDER_LIFECYCLE_STATUSES = [
16
+ "pending",
17
+ "running",
18
+ "succeeded",
19
+ "partial",
20
+ "failed",
21
+ "cancelled",
22
+ ];
23
+ export const CONTEXT_BUILDER_LIFECYCLE_PHASES = [
24
+ "resolving",
25
+ "cache_lookup",
26
+ "validating",
27
+ "scanning",
28
+ "searching",
29
+ "selecting",
30
+ "curating",
31
+ "finalizing",
32
+ "writing",
33
+ "materializing",
34
+ "committing",
35
+ "complete",
36
+ "terminal",
37
+ ];
38
+ export const CONTEXT_BUILDER_EXECUTION_STATUSES = [
39
+ "not_configured",
40
+ "disabled",
41
+ "pending",
42
+ "running",
43
+ "succeeded",
44
+ "failed",
45
+ "cancelled",
46
+ "skipped",
47
+ ];
48
+ export const CONTEXT_BUILDER_FALLBACK_STATUSES = [
49
+ "not_applicable", "not_used", "used", "failed",
50
+ ];
51
+ export const CONTEXT_BUILDER_LIFECYCLE_REASON_CODES = [
52
+ "cache_disabled",
53
+ "cache_miss",
54
+ "cache_stale",
55
+ "delegate_disabled",
56
+ "delegate_failed",
57
+ "delegate_fallback",
58
+ "delegate_invalid",
59
+ "delegate_timeout",
60
+ "coverage_degraded",
61
+ "empty_selection",
62
+ "operation_cancelled",
63
+ "internal_failure",
64
+ "legacy_supported",
65
+ "legacy_unsupported",
66
+ "generation_replaced",
67
+ ];
68
+ /**
69
+ * Frozen legal phase paths. A producer may omit intermediate phases, but an
70
+ * emitted phase must move forward on one path. Failure/cancellation may move
71
+ * from any non-terminal phase directly to `terminal`.
72
+ */
73
+ export const CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS = Object.freeze({
74
+ deterministic: Object.freeze([
75
+ "resolving", "validating", "scanning", "searching", "selecting",
76
+ "writing", "committing", "complete",
77
+ ]),
78
+ delegated: Object.freeze([
79
+ "resolving", "validating", "scanning", "searching", "selecting",
80
+ "curating", "finalizing", "writing", "committing", "complete",
81
+ ]),
82
+ workflow_cache_miss: Object.freeze([
83
+ "resolving", "cache_lookup", "validating", "scanning", "searching",
84
+ "selecting", "curating", "finalizing", "writing", "materializing",
85
+ "committing", "complete",
86
+ ]),
87
+ workflow_cache_hit: Object.freeze([
88
+ "resolving", "cache_lookup", "materializing", "committing", "complete",
89
+ ]),
90
+ refine: Object.freeze([
91
+ "resolving", "validating", "selecting", "writing", "committing",
92
+ "complete",
93
+ ]),
94
+ historical_success: Object.freeze(["complete"]),
95
+ historical_terminal: Object.freeze(["terminal"]),
96
+ });
97
+ export const CONTEXT_BUILDER_LIFECYCLE_V1_DESCRIPTOR = Object.freeze({
98
+ schema_version: CONTEXT_BUILDER_LIFECYCLE_SCHEMA_VERSION,
99
+ runs_dir_env: CONTEXT_BUILDER_LIFECYCLE_RUNS_DIR_ENV,
100
+ lifecycle_directory: CONTEXT_BUILDER_LIFECYCLE_DIRECTORY,
101
+ state_filename: CONTEXT_BUILDER_LIFECYCLE_STATE_FILENAME,
102
+ operation_kinds: CONTEXT_BUILDER_OPERATION_KINDS,
103
+ statuses: CONTEXT_BUILDER_LIFECYCLE_STATUSES,
104
+ phases: CONTEXT_BUILDER_LIFECYCLE_PHASES,
105
+ execution_statuses: CONTEXT_BUILDER_EXECUTION_STATUSES,
106
+ fallback_statuses: CONTEXT_BUILDER_FALLBACK_STATUSES,
107
+ reason_codes: CONTEXT_BUILDER_LIFECYCLE_REASON_CODES,
108
+ max_duration_ms: MAX_CONTEXT_BUILDER_LIFECYCLE_DURATION_MS,
109
+ max_reason_codes: MAX_CONTEXT_BUILDER_LIFECYCLE_REASON_CODES,
110
+ stage_paths: CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS,
111
+ });
112
+ const CONTEXT_BUILDER_OPERATION_ID_PATTERN = /^ctxop_\d{8}T\d{6}Z_[0-9a-f]{12}$/;
113
+ const CONTEXT_BUILDER_ARTIFACT_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
114
+ const ContextBuilderOperationIdSchema = z.string().max(40).refine(isContextBuilderOperationId, "invalid context builder operation ID");
115
+ const ContextBuilderArtifactIdSchema = z.string().max(64).regex(CONTEXT_BUILDER_ARTIFACT_ID_PATTERN);
116
+ const ContextBuilderTimestampSchema = z.string().max(64).datetime({ offset: true });
117
+ const BoundedCountSchema = z.number().int().min(0).max(50_000);
118
+ const BoundedByteCountSchema = z.number().int().min(0).max(250_000_000);
119
+ const ContextBuilderExecutionStateSchema = z.object({
120
+ configured: z.boolean(),
121
+ effective_enabled: z.boolean(),
122
+ execution_status: z.enum(CONTEXT_BUILDER_EXECUTION_STATUSES),
123
+ score: z.number().finite().min(0).max(10).optional(),
124
+ }).strict().superRefine((state, context) => {
125
+ if (!state.configured && (state.effective_enabled || state.execution_status !== "not_configured")) {
126
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "unconfigured execution must be disabled and not_configured", path: ["execution_status"] });
127
+ }
128
+ if (state.configured && !state.effective_enabled && state.execution_status !== "disabled") {
129
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "configured but ineffective execution must be disabled", path: ["execution_status"] });
130
+ }
131
+ if (state.effective_enabled && ["not_configured", "disabled"].includes(state.execution_status)) {
132
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "effective execution must have an executable status", path: ["execution_status"] });
133
+ }
134
+ if (state.score !== undefined && state.execution_status !== "succeeded") {
135
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "score is only valid for succeeded execution", path: ["score"] });
136
+ }
137
+ });
138
+ const ContextBuilderCacheStateSchema = z.object({
139
+ lookup: z.enum(["not_checked", "miss", "hit"]),
140
+ write: z.enum(["not_attempted", "skipped", "written"]),
141
+ reason_code: z.enum(CONTEXT_BUILDER_LIFECYCLE_REASON_CODES).optional(),
142
+ }).strict();
143
+ const ContextBuilderFallbackStateSchema = z.object({
144
+ status: z.enum(CONTEXT_BUILDER_FALLBACK_STATUSES),
145
+ reason_code: z.enum(CONTEXT_BUILDER_LIFECYCLE_REASON_CODES).optional(),
146
+ }).strict().superRefine((fallback, context) => {
147
+ if (fallback.status === "not_applicable" || fallback.status === "not_used") {
148
+ if (fallback.reason_code !== undefined)
149
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "unused fallback cannot have a reason_code", path: ["reason_code"] });
150
+ }
151
+ else if (fallback.reason_code === undefined) {
152
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "used or failed fallback requires a reason_code", path: ["reason_code"] });
153
+ }
154
+ });
155
+ const ContextBuilderCountsSchema = z.object({
156
+ files_seen: BoundedCountSchema,
157
+ files_considered: BoundedCountSchema,
158
+ files_selected: z.number().int().min(0).max(300),
159
+ files_omitted: BoundedCountSchema,
160
+ search_results: z.number().int().min(0).max(5_000),
161
+ bytes_read: BoundedByteCountSchema,
162
+ bytes_written: BoundedByteCountSchema,
163
+ }).strict();
164
+ const ContextBuilderCoverageSchema = z.object({
165
+ policy: z.literal("review_deep_v1").nullable(),
166
+ status: z.enum(["satisfied", "degraded", "not_evaluated"]),
167
+ required: BoundedCountSchema,
168
+ selected: BoundedCountSchema,
169
+ missing: BoundedCountSchema,
170
+ }).strict().superRefine((coverage, context) => {
171
+ if (coverage.missing > coverage.required) {
172
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "missing coverage cannot exceed required coverage", path: ["missing"] });
173
+ }
174
+ if (coverage.status === "not_evaluated" && (coverage.policy !== null || coverage.required !== 0 || coverage.missing !== 0)) {
175
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "not_evaluated coverage must not claim a policy or obligations", path: ["status"] });
176
+ }
177
+ });
178
+ const TERMINAL_CONTEXT_BUILDER_LIFECYCLE_STATUSES = new Set(["succeeded", "partial", "failed", "cancelled"]);
179
+ export const ContextBuilderLifecycleStateV1Schema = z.object({
180
+ schema_version: z.literal(CONTEXT_BUILDER_LIFECYCLE_SCHEMA_VERSION),
181
+ context_run_id: ContextBuilderOperationIdSchema,
182
+ artifact_run_id: ContextBuilderArtifactIdSchema.optional(),
183
+ operation_kind: z.enum(CONTEXT_BUILDER_OPERATION_KINDS),
184
+ status: z.enum(CONTEXT_BUILDER_LIFECYCLE_STATUSES),
185
+ phase: z.enum(CONTEXT_BUILDER_LIFECYCLE_PHASES),
186
+ created_at: ContextBuilderTimestampSchema,
187
+ updated_at: ContextBuilderTimestampSchema,
188
+ started_at: ContextBuilderTimestampSchema.optional(),
189
+ completed_at: ContextBuilderTimestampSchema.optional(),
190
+ duration_ms: z.number().int().min(0).max(MAX_CONTEXT_BUILDER_LIFECYCLE_DURATION_MS).optional(),
191
+ curator: ContextBuilderExecutionStateSchema,
192
+ finalizer: ContextBuilderExecutionStateSchema,
193
+ cache: ContextBuilderCacheStateSchema,
194
+ fallback: ContextBuilderFallbackStateSchema,
195
+ counts: ContextBuilderCountsSchema,
196
+ coverage: ContextBuilderCoverageSchema,
197
+ reason_codes: z.array(z.enum(CONTEXT_BUILDER_LIFECYCLE_REASON_CODES))
198
+ .max(MAX_CONTEXT_BUILDER_LIFECYCLE_REASON_CODES)
199
+ .refine((values) => new Set(values).size === values.length, "reason_codes must be unique"),
200
+ }).strict().superRefine((state, context) => {
201
+ const terminal = TERMINAL_CONTEXT_BUILDER_LIFECYCLE_STATUSES.has(state.status);
202
+ if (state.artifact_run_id === state.context_run_id) {
203
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "operation and artifact identities must be distinct", path: ["artifact_run_id"] });
204
+ }
205
+ if (state.status === "succeeded" || state.status === "partial") {
206
+ if (state.phase !== "complete")
207
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "successful terminal statuses require complete phase", path: ["phase"] });
208
+ }
209
+ else if (state.status === "failed" || state.status === "cancelled") {
210
+ if (state.phase !== "terminal")
211
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "failed or cancelled statuses require terminal phase", path: ["phase"] });
212
+ }
213
+ else if (state.phase === "complete" || state.phase === "terminal") {
214
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "non-terminal statuses cannot use a terminal phase", path: ["phase"] });
215
+ }
216
+ if (terminal !== (state.completed_at !== undefined)) {
217
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "terminal statuses require completed_at exclusively", path: ["completed_at"] });
218
+ }
219
+ if (state.duration_ms !== undefined && state.completed_at === undefined) {
220
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "duration_ms requires completed_at", path: ["duration_ms"] });
221
+ }
222
+ if (state.status === "running" && state.started_at === undefined) {
223
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "running status requires started_at", path: ["started_at"] });
224
+ }
225
+ if (state.status === "pending" && state.started_at !== undefined) {
226
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "pending status cannot have started_at", path: ["started_at"] });
227
+ }
228
+ validateTimestampOrder(state, context);
229
+ });
230
+ export function parseContextBuilderLifecycleStateV1(value) {
231
+ return ContextBuilderLifecycleStateV1Schema.parse(value);
232
+ }
233
+ export function isContextBuilderOperationId(value) {
234
+ const match = CONTEXT_BUILDER_OPERATION_ID_PATTERN.exec(value);
235
+ if (match === null)
236
+ return false;
237
+ const timestamp = value.slice(6, 22);
238
+ const iso = [
239
+ timestamp.slice(0, 4), "-", timestamp.slice(4, 6), "-",
240
+ timestamp.slice(6, 8), "T", timestamp.slice(9, 11), ":",
241
+ timestamp.slice(11, 13), ":", timestamp.slice(13, 15), ".000Z",
242
+ ].join("");
243
+ const parsed = new Date(iso);
244
+ return !Number.isNaN(parsed.getTime()) && parsed.toISOString() === iso;
245
+ }
246
+ export function validateContextBuilderOperationId(value) {
247
+ if (!isContextBuilderOperationId(value)) {
248
+ throw new Error("context builder operation ID must match ctxop_YYYYMMDDTHHMMSSZ_<12 lowercase hex>");
249
+ }
250
+ return value;
251
+ }
252
+ export function generateContextBuilderOperationId(options = {}) {
253
+ const timestamp = (options.now?.() ?? new Date()).toISOString().replace(/[-:]/g, "").slice(0, 15);
254
+ const suffix = (options.randomHex?.() ?? randomBytes(6).toString("hex")).toLowerCase();
255
+ if (!/^[0-9a-f]{12}$/.test(suffix)) {
256
+ throw new Error("context builder operation ID suffix must be 12 hex characters");
257
+ }
258
+ return validateContextBuilderOperationId(`ctxop_${timestamp}Z_${suffix}`);
259
+ }
260
+ export function isTerminalContextBuilderLifecycleStatus(status) {
261
+ return TERMINAL_CONTEXT_BUILDER_LIFECYCLE_STATUSES.has(status);
262
+ }
263
+ export function isLegalContextBuilderLifecycleTransition(previous, next) {
264
+ if (isTerminalContextBuilderLifecycleStatus(previous.status) ||
265
+ previous.schema_version !== next.schema_version ||
266
+ previous.context_run_id !== next.context_run_id ||
267
+ previous.operation_kind !== next.operation_kind ||
268
+ previous.created_at !== next.created_at ||
269
+ Date.parse(next.updated_at) < Date.parse(previous.updated_at) ||
270
+ (previous.cache.lookup !== "not_checked" && previous.cache.lookup !== next.cache.lookup) ||
271
+ (previous.cache.write !== "not_attempted" && previous.cache.write !== next.cache.write) ||
272
+ (previous.artifact_run_id !== undefined && previous.artifact_run_id !== next.artifact_run_id))
273
+ return false;
274
+ const legalStatuses = {
275
+ pending: ["pending", "running", "failed", "cancelled"],
276
+ running: ["running", "succeeded", "partial", "failed", "cancelled"],
277
+ };
278
+ if (previous.status !== "pending" && previous.status !== "running" ||
279
+ !legalStatuses[previous.status].includes(next.status))
280
+ return false;
281
+ if (next.phase === "terminal")
282
+ return next.status === "failed" || next.status === "cancelled";
283
+ const paths = lifecycleStagePathsForTransition(previous, next);
284
+ return paths.some((path) => {
285
+ const phasePath = path;
286
+ const previousIndex = phasePath.indexOf(previous.phase);
287
+ const nextIndex = phasePath.indexOf(next.phase);
288
+ return previousIndex >= 0 && nextIndex >= previousIndex;
289
+ });
290
+ }
291
+ function lifecycleStagePathsForTransition(previous, next) {
292
+ switch (previous.operation_kind) {
293
+ case "standalone":
294
+ return previous.curator.effective_enabled
295
+ ? [CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS.delegated]
296
+ : [CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS.deterministic];
297
+ case "refine":
298
+ return [CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS.refine];
299
+ case "workflow_preflight": {
300
+ const lookup = next.cache.lookup === "not_checked" ? previous.cache.lookup : next.cache.lookup;
301
+ if (lookup === "hit")
302
+ return [CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS.workflow_cache_hit];
303
+ if (lookup === "miss")
304
+ return [CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS.workflow_cache_miss];
305
+ return [
306
+ CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS.workflow_cache_hit,
307
+ CONTEXT_BUILDER_LIFECYCLE_STAGE_PATHS.workflow_cache_miss,
308
+ ];
309
+ }
310
+ case "historical":
311
+ return [];
312
+ }
313
+ }
314
+ function validateTimestampOrder(state, context) {
315
+ const createdAt = Date.parse(state.created_at);
316
+ const updatedAt = Date.parse(state.updated_at);
317
+ const startedAt = state.started_at === undefined ? undefined : Date.parse(state.started_at);
318
+ const completedAt = state.completed_at === undefined ? undefined : Date.parse(state.completed_at);
319
+ if (updatedAt < createdAt)
320
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "updated_at cannot precede created_at", path: ["updated_at"] });
321
+ if (startedAt !== undefined && (startedAt < createdAt || startedAt > updatedAt)) {
322
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "started_at must fall within the persisted operation window", path: ["started_at"] });
323
+ }
324
+ if (completedAt !== undefined && (completedAt < (startedAt ?? createdAt) || completedAt > updatedAt)) {
325
+ context.addIssue({ code: z.ZodIssueCode.custom, message: "completed_at must fall within the persisted operation window", path: ["completed_at"] });
326
+ }
327
+ }
328
+ //# sourceMappingURL=context-builder-lifecycle-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder-lifecycle-contract.js","sourceRoot":"","sources":["../src/context-builder-lifecycle-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ContextBuilderLifecycleStateV1 } from "./context-builder-lifecycle-contract.js";
2
+ import type { PreflightContextInput } from "./context-preflight.js";
3
+ export interface WorkflowContextBuilderLifecycleTransition {
4
+ readonly previous: Readonly<ContextBuilderLifecycleStateV1> | null;
5
+ readonly snapshot: Readonly<ContextBuilderLifecycleStateV1>;
6
+ }
7
+ export interface WorkflowContextBuilderLifecycleSink {
8
+ observeContextBuilderLifecycleTransition(transition: WorkflowContextBuilderLifecycleTransition): void | Promise<void>;
9
+ }
10
+ export interface WorkflowContextBuilderLifecycleInjection {
11
+ readonly observer: (transition: WorkflowContextBuilderLifecycleTransition) => void | Promise<void>;
12
+ }
13
+ export interface WorkflowContextBuilderLifecycleRouter {
14
+ readonly lifecycleFactory: (input: PreflightContextInput) => WorkflowContextBuilderLifecycleInjection | undefined;
15
+ readonly bind: (runId: string, sink: WorkflowContextBuilderLifecycleSink) => () => void;
16
+ }
17
+ /**
18
+ * Bridge between the process-level root runner and the per-workflow store.
19
+ *
20
+ * Bindings are keyed by run ID and lease-fenced, so concurrent runs never use
21
+ * a mutable "current store" slot and a stale cleanup cannot delete a recycled
22
+ * same-ID binding owned by a newer invocation.
23
+ */
24
+ export declare function createWorkflowContextBuilderLifecycleRouter(): WorkflowContextBuilderLifecycleRouter;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Bridge between the process-level root runner and the per-workflow store.
3
+ *
4
+ * Bindings are keyed by run ID and lease-fenced, so concurrent runs never use
5
+ * a mutable "current store" slot and a stale cleanup cannot delete a recycled
6
+ * same-ID binding owned by a newer invocation.
7
+ */
8
+ export function createWorkflowContextBuilderLifecycleRouter() {
9
+ const bindings = new Map();
10
+ return {
11
+ lifecycleFactory(input) {
12
+ const binding = bindings.get(input.runId);
13
+ if (binding === undefined)
14
+ return undefined;
15
+ const lease = binding.lease;
16
+ return {
17
+ observer: async (transition) => {
18
+ const current = bindings.get(input.runId);
19
+ if (current === undefined || current.lease !== lease) {
20
+ throw new Error(`workflow context lifecycle binding changed for run ${input.runId}`);
21
+ }
22
+ await current.sink.observeContextBuilderLifecycleTransition(transition);
23
+ },
24
+ };
25
+ },
26
+ bind(runId, sink) {
27
+ if (bindings.has(runId)) {
28
+ throw new Error(`workflow context lifecycle is already bound for run ${runId}`);
29
+ }
30
+ const lease = Symbol(runId);
31
+ bindings.set(runId, { lease, sink });
32
+ return () => {
33
+ if (bindings.get(runId)?.lease === lease)
34
+ bindings.delete(runId);
35
+ };
36
+ },
37
+ };
38
+ }
39
+ //# sourceMappingURL=context-builder-lifecycle-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder-lifecycle-router.js","sourceRoot":"","sources":["../src/context-builder-lifecycle-router.ts"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH,MAAM,UAAU,2CAA2C;IACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAGrB,CAAC;IAEJ,OAAO;QACL,gBAAgB,CAAC,KAAK;YACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5B,OAAO;gBACL,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;oBAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;wBACrD,MAAM,IAAI,KAAK,CACb,sDAAsD,KAAK,CAAC,KAAK,EAAE,CACpE,CAAC;oBACJ,CAAC;oBACD,MAAM,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,UAAU,CAAC,CAAC;gBAC1E,CAAC;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,IAAI;YACd,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,uDAAuD,KAAK,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,GAAG,EAAE;gBACV,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,KAAK;oBAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,53 @@
1
+ type JsonLike = null | boolean | number | string | readonly JsonLike[] | {
2
+ readonly [key: string]: JsonLike | undefined;
3
+ };
4
+ export interface ContextCacheInput {
5
+ readonly task?: unknown;
6
+ readonly roots?: unknown;
7
+ readonly profile?: unknown;
8
+ readonly allow_secrets?: unknown;
9
+ readonly budget?: unknown;
10
+ readonly include_globs?: unknown;
11
+ readonly exclude_globs?: unknown;
12
+ readonly search_terms?: unknown;
13
+ readonly focus_paths?: unknown;
14
+ readonly delegate?: {
15
+ readonly enabled?: unknown;
16
+ readonly curator?: unknown;
17
+ readonly finalizer?: unknown;
18
+ } | undefined;
19
+ }
20
+ export interface ComputeCacheKeyInput {
21
+ readonly inputsHash: string;
22
+ readonly workspaceSig: string;
23
+ readonly rendererVersion: string | number;
24
+ readonly cbSchemaVersion: string | number;
25
+ /**
26
+ * Version of the root package's context discovery algorithm (search
27
+ * scheduler, candidate ordering, slicing). Injected by the root server;
28
+ * optional so standalone/legacy embeddings of this package stay compatible.
29
+ * Absent values fold as {@link UNVERSIONED_CACHE_COMPONENT}.
30
+ */
31
+ readonly discoveryAlgorithmVersion?: string | undefined;
32
+ /**
33
+ * Version of the root package's delegate (curator/finalizer) prompt
34
+ * content. Same injection and sentinel semantics as
35
+ * `discoveryAlgorithmVersion`.
36
+ */
37
+ readonly delegatePromptVersion?: string | undefined;
38
+ }
39
+ /**
40
+ * Sentinel folded into the cache key when a caller supplies no explicit
41
+ * discovery-algorithm or delegate-prompt version (standalone/legacy embeddings
42
+ * of this package). It INTENTIONALLY differs from every real version string —
43
+ * real versions are short numerals like "1"/"2" — so an unversioned caller can
44
+ * never collide with (and stale-serve) a bundle produced under a declared
45
+ * version, and vice versa. Key computation stays total either way.
46
+ */
47
+ export declare const UNVERSIONED_CACHE_COMPONENT = "unversioned";
48
+ export declare function canonicalJson(value: unknown): string;
49
+ export declare function sha256(value: string | Buffer): string;
50
+ export declare function computeInputsHash(cbInput: ContextCacheInput): string;
51
+ export declare function computeCacheKey(input: ComputeCacheKeyInput): string;
52
+ export declare function deriveWfctxId(cacheKey: string): string;
53
+ export type { JsonLike };
@@ -0,0 +1,91 @@
1
+ import { createHash } from "node:crypto";
2
+ /**
3
+ * Sentinel folded into the cache key when a caller supplies no explicit
4
+ * discovery-algorithm or delegate-prompt version (standalone/legacy embeddings
5
+ * of this package). It INTENTIONALLY differs from every real version string —
6
+ * real versions are short numerals like "1"/"2" — so an unversioned caller can
7
+ * never collide with (and stale-serve) a bundle produced under a declared
8
+ * version, and vice versa. Key computation stays total either way.
9
+ */
10
+ export const UNVERSIONED_CACHE_COMPONENT = "unversioned";
11
+ export function canonicalJson(value) {
12
+ return serializeCanonical(value);
13
+ }
14
+ export function sha256(value) {
15
+ return createHash("sha256").update(value).digest("hex");
16
+ }
17
+ export function computeInputsHash(cbInput) {
18
+ return sha256(canonicalJson({
19
+ task: cbInput.task,
20
+ roots: cbInput.roots,
21
+ profile: cbInput.profile,
22
+ // default-true and explicit-false bundles must get distinct cache identities.
23
+ allow_secrets: cbInput.allow_secrets,
24
+ budget: cbInput.budget,
25
+ include_globs: cbInput.include_globs,
26
+ exclude_globs: cbInput.exclude_globs,
27
+ search_terms: cbInput.search_terms,
28
+ focus_paths: cbInput.focus_paths,
29
+ // The key folds delegate.{enabled,curator,finalizer} — the content-affecting
30
+ // delegate fields. delegate.{timeout_seconds,failure_policy,max_response_chars}
31
+ // are INTENTIONALLY excluded: they are operational knobs (timeouts, fallback
32
+ // behavior, output caps), not inputs that change which files a bundle selects.
33
+ // Known v1 footgun: because max_response_chars is out of the key, lowering it
34
+ // can stale-serve a previously cached bundle rendered under the larger cap.
35
+ delegate: {
36
+ enabled: cbInput.delegate?.enabled,
37
+ curator: cbInput.delegate?.curator,
38
+ finalizer: cbInput.delegate?.finalizer,
39
+ },
40
+ }));
41
+ }
42
+ export function computeCacheKey(input) {
43
+ // The two versions are folded UNCONDITIONALLY (sentinel when absent) so key
44
+ // computation is total and deterministic, and so distinct discovery/prompt
45
+ // versions always produce distinct wfctx identities.
46
+ return sha256(canonicalJson([
47
+ input.inputsHash,
48
+ input.workspaceSig,
49
+ input.rendererVersion,
50
+ input.cbSchemaVersion,
51
+ input.discoveryAlgorithmVersion ?? UNVERSIONED_CACHE_COMPONENT,
52
+ input.delegatePromptVersion ?? UNVERSIONED_CACHE_COMPONENT,
53
+ ]));
54
+ }
55
+ export function deriveWfctxId(cacheKey) {
56
+ return `wfctx-${cacheKey.slice(0, 32)}`;
57
+ }
58
+ function serializeCanonical(value) {
59
+ if (value === null)
60
+ return "null";
61
+ switch (typeof value) {
62
+ case "boolean":
63
+ return value ? "true" : "false";
64
+ case "number":
65
+ return Number.isFinite(value) ? JSON.stringify(value) : "null";
66
+ case "string":
67
+ return JSON.stringify(value);
68
+ case "undefined":
69
+ case "function":
70
+ case "symbol":
71
+ return "null";
72
+ case "bigint":
73
+ throw new TypeError("canonicalJson does not support bigint values");
74
+ case "object":
75
+ break;
76
+ }
77
+ if (Array.isArray(value)) {
78
+ return `[${value.map((entry) => serializeCanonical(entry)).join(",")}]`;
79
+ }
80
+ const objectValue = value;
81
+ const entries = Object.keys(objectValue)
82
+ .sort()
83
+ .filter((key) => {
84
+ const entry = objectValue[key];
85
+ return entry !== undefined && typeof entry !== "function" && typeof entry !== "symbol";
86
+ });
87
+ return `{${entries
88
+ .map((key) => `${JSON.stringify(key)}:${serializeCanonical(objectValue[key])}`)
89
+ .join(",")}}`;
90
+ }
91
+ //# sourceMappingURL=context-cache-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-cache-key.js","sourceRoot":"","sources":["../src/context-cache-key.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { PreflightContextDelegateInput } from "./context-preflight.js";
2
+ export type WorkflowContextRequestedMode = "full" | "deterministic" | "off";
3
+ export type WorkflowContextCallerMode = WorkflowContextRequestedMode | "inherit";
4
+ export type WorkflowContextEffectiveMode = WorkflowContextRequestedMode | "disabled";
5
+ export interface WorkflowContextPolicy {
6
+ readonly requestedMode: WorkflowContextRequestedMode;
7
+ readonly effectiveMode: WorkflowContextEffectiveMode;
8
+ readonly effectiveDelegate?: PreflightContextDelegateInput | undefined;
9
+ readonly preflightDisabled: boolean;
10
+ }
11
+ export declare class WorkflowContextModeResolverError extends Error {
12
+ constructor(message: string);
13
+ }
14
+ export declare function resolveWorkflowContextMode(callerValue: unknown, contextDefault: WorkflowContextRequestedMode, preflightEnabled: boolean, callerDelegate: unknown, defaultCurator?: string | undefined): WorkflowContextPolicy;
15
+ export declare const DEFAULT_FULL_DELEGATE_FINALIZER_CLI = "codex";
16
+ export declare const DEFAULT_FULL_DELEGATE_PROVIDER_ROLE = "json";
17
+ /**
18
+ * The enabled providers injected by {@link makeDefaultFullDelegate}, as a single
19
+ * source of truth so startup validation cannot drift from what is actually
20
+ * injected at runtime. Each entry is `{ label, cli_name, role }`.
21
+ */
22
+ export declare function defaultFullDelegateProviders(defaultCurator: string | undefined): ReadonlyArray<{
23
+ label: string;
24
+ cli_name: string;
25
+ role: string;
26
+ }>;
27
+ export declare function makeDefaultFullDelegate(defaultCurator: string | undefined): PreflightContextDelegateInput;