@smthrs/control 0.0.0-stage → 1.0.0-rc.4

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 (418) hide show
  1. package/CHANGELOG.md +194 -0
  2. package/LICENSE +21 -0
  3. package/README.md +168 -2
  4. package/dist/cjs/ApprovalAuthority.d.ts +73 -0
  5. package/dist/cjs/ApprovalAuthority.d.ts.map +1 -0
  6. package/dist/cjs/ApprovalAuthority.js +62 -0
  7. package/dist/cjs/ApprovalAuthority.js.map +7 -0
  8. package/dist/cjs/Cancellation.d.ts +107 -0
  9. package/dist/cjs/Cancellation.d.ts.map +1 -0
  10. package/dist/cjs/Cancellation.js +72 -0
  11. package/dist/cjs/Cancellation.js.map +7 -0
  12. package/dist/cjs/Channels.d.ts +170 -0
  13. package/dist/cjs/Channels.d.ts.map +1 -0
  14. package/dist/cjs/Channels.js +278 -0
  15. package/dist/cjs/Channels.js.map +7 -0
  16. package/dist/cjs/Control.d.ts +202 -0
  17. package/dist/cjs/Control.d.ts.map +1 -0
  18. package/dist/cjs/Control.js +47 -0
  19. package/dist/cjs/Control.js.map +7 -0
  20. package/dist/cjs/ControlClient.d.ts +52 -0
  21. package/dist/cjs/ControlClient.d.ts.map +1 -0
  22. package/dist/cjs/ControlClient.js +191 -0
  23. package/dist/cjs/ControlClient.js.map +7 -0
  24. package/dist/cjs/ControlError.d.ts +318 -0
  25. package/dist/cjs/ControlError.d.ts.map +1 -0
  26. package/dist/cjs/ControlError.js +249 -0
  27. package/dist/cjs/ControlError.js.map +7 -0
  28. package/dist/cjs/ControlExecutor.d.ts +372 -0
  29. package/dist/cjs/ControlExecutor.d.ts.map +1 -0
  30. package/dist/cjs/ControlExecutor.js +123 -0
  31. package/dist/cjs/ControlExecutor.js.map +7 -0
  32. package/dist/cjs/ControlFacts.d.ts +454 -0
  33. package/dist/cjs/ControlFacts.d.ts.map +1 -0
  34. package/dist/cjs/ControlFacts.js +261 -0
  35. package/dist/cjs/ControlFacts.js.map +7 -0
  36. package/dist/cjs/ControlLive.d.ts +23 -0
  37. package/dist/cjs/ControlLive.d.ts.map +1 -0
  38. package/dist/cjs/ControlLive.js +1293 -0
  39. package/dist/cjs/ControlLive.js.map +7 -0
  40. package/dist/cjs/ControlRpcs.d.ts +1204 -0
  41. package/dist/cjs/ControlRpcs.d.ts.map +1 -0
  42. package/dist/cjs/ControlRpcs.js +247 -0
  43. package/dist/cjs/ControlRpcs.js.map +7 -0
  44. package/dist/cjs/ControlRuntime.d.ts +635 -0
  45. package/dist/cjs/ControlRuntime.d.ts.map +1 -0
  46. package/dist/cjs/ControlRuntime.js +744 -0
  47. package/dist/cjs/ControlRuntime.js.map +7 -0
  48. package/dist/cjs/ControlSchema.d.ts +2642 -0
  49. package/dist/cjs/ControlSchema.d.ts.map +1 -0
  50. package/dist/cjs/ControlSchema.js +634 -0
  51. package/dist/cjs/ControlSchema.js.map +7 -0
  52. package/dist/cjs/ControlServer.d.ts +51 -0
  53. package/dist/cjs/ControlServer.d.ts.map +1 -0
  54. package/dist/cjs/ControlServer.js +121 -0
  55. package/dist/cjs/ControlServer.js.map +7 -0
  56. package/dist/cjs/Credential.d.ts +136 -0
  57. package/dist/cjs/Credential.d.ts.map +1 -0
  58. package/dist/cjs/Credential.js +168 -0
  59. package/dist/cjs/Credential.js.map +7 -0
  60. package/dist/cjs/CredentialCipher.d.ts +90 -0
  61. package/dist/cjs/CredentialCipher.d.ts.map +1 -0
  62. package/dist/cjs/CredentialCipher.js +45 -0
  63. package/dist/cjs/CredentialCipher.js.map +7 -0
  64. package/dist/cjs/CredentialStore.d.ts +97 -0
  65. package/dist/cjs/CredentialStore.d.ts.map +1 -0
  66. package/dist/cjs/CredentialStore.js +81 -0
  67. package/dist/cjs/CredentialStore.js.map +7 -0
  68. package/dist/cjs/DispatchReader.d.ts +112 -0
  69. package/dist/cjs/DispatchReader.d.ts.map +1 -0
  70. package/dist/cjs/DispatchReader.js +45 -0
  71. package/dist/cjs/DispatchReader.js.map +7 -0
  72. package/dist/cjs/Health.d.ts +333 -0
  73. package/dist/cjs/Health.d.ts.map +1 -0
  74. package/dist/cjs/Health.js +311 -0
  75. package/dist/cjs/Health.js.map +7 -0
  76. package/dist/cjs/JevSessionChecker.d.ts +57 -0
  77. package/dist/cjs/JevSessionChecker.d.ts.map +1 -0
  78. package/dist/cjs/JevSessionChecker.js +113 -0
  79. package/dist/cjs/JevSessionChecker.js.map +7 -0
  80. package/dist/cjs/Lineage.d.ts +131 -0
  81. package/dist/cjs/Lineage.d.ts.map +1 -0
  82. package/dist/cjs/Lineage.js +81 -0
  83. package/dist/cjs/Lineage.js.map +7 -0
  84. package/dist/cjs/Migrations.d.ts +34 -0
  85. package/dist/cjs/Migrations.d.ts.map +1 -0
  86. package/dist/cjs/Migrations.js +60 -0
  87. package/dist/cjs/Migrations.js.map +7 -0
  88. package/dist/cjs/Monitor.d.ts +282 -0
  89. package/dist/cjs/Monitor.d.ts.map +1 -0
  90. package/dist/cjs/Monitor.js +283 -0
  91. package/dist/cjs/Monitor.js.map +7 -0
  92. package/dist/cjs/ScopedToken.d.ts +193 -0
  93. package/dist/cjs/ScopedToken.d.ts.map +1 -0
  94. package/dist/cjs/ScopedToken.js +135 -0
  95. package/dist/cjs/ScopedToken.js.map +7 -0
  96. package/dist/cjs/SqlControlRuntime.d.ts +161 -0
  97. package/dist/cjs/SqlControlRuntime.d.ts.map +1 -0
  98. package/dist/cjs/SqlControlRuntime.js +1522 -0
  99. package/dist/cjs/SqlControlRuntime.js.map +7 -0
  100. package/dist/cjs/SqlCredentialStore.d.ts +43 -0
  101. package/dist/cjs/SqlCredentialStore.d.ts.map +1 -0
  102. package/dist/cjs/SqlCredentialStore.js +113 -0
  103. package/dist/cjs/SqlCredentialStore.js.map +7 -0
  104. package/dist/cjs/Steering.d.ts +69 -0
  105. package/dist/cjs/Steering.d.ts.map +1 -0
  106. package/dist/cjs/Steering.js +49 -0
  107. package/dist/cjs/Steering.js.map +7 -0
  108. package/dist/cjs/SystemFlows.d.ts +223 -0
  109. package/dist/cjs/SystemFlows.d.ts.map +1 -0
  110. package/dist/cjs/SystemFlows.js +195 -0
  111. package/dist/cjs/SystemFlows.js.map +7 -0
  112. package/dist/cjs/WebCryptoCipher.d.ts +49 -0
  113. package/dist/cjs/WebCryptoCipher.d.ts.map +1 -0
  114. package/dist/cjs/WebCryptoCipher.js +129 -0
  115. package/dist/cjs/WebCryptoCipher.js.map +7 -0
  116. package/dist/cjs/WebhookChannel.d.ts +113 -0
  117. package/dist/cjs/WebhookChannel.d.ts.map +1 -0
  118. package/dist/cjs/WebhookChannel.js +98 -0
  119. package/dist/cjs/WebhookChannel.js.map +7 -0
  120. package/dist/cjs/index.d.ts +160 -0
  121. package/dist/cjs/index.d.ts.map +1 -0
  122. package/dist/cjs/index.js +91 -0
  123. package/dist/cjs/index.js.map +7 -0
  124. package/dist/cjs/internal/MutationBoundary.d.ts +27 -0
  125. package/dist/cjs/internal/MutationBoundary.d.ts.map +1 -0
  126. package/dist/cjs/internal/MutationBoundary.js +50 -0
  127. package/dist/cjs/internal/MutationBoundary.js.map +7 -0
  128. package/dist/cjs/internal/activeFibers.d.ts +12 -0
  129. package/dist/cjs/internal/activeFibers.d.ts.map +1 -0
  130. package/dist/cjs/internal/activeFibers.js +30 -0
  131. package/dist/cjs/internal/activeFibers.js.map +7 -0
  132. package/dist/cjs/internal/issues.d.ts +28 -0
  133. package/dist/cjs/internal/issues.d.ts.map +1 -0
  134. package/dist/cjs/internal/issues.js +34 -0
  135. package/dist/cjs/internal/issues.js.map +7 -0
  136. package/dist/cjs/internal/planning.d.ts +347 -0
  137. package/dist/cjs/internal/planning.d.ts.map +1 -0
  138. package/dist/cjs/internal/planning.js +137 -0
  139. package/dist/cjs/internal/planning.js.map +7 -0
  140. package/dist/cjs/internal/sqlSchemaErrors.d.ts +18 -0
  141. package/dist/cjs/internal/sqlSchemaErrors.d.ts.map +1 -0
  142. package/dist/cjs/internal/sqlSchemaErrors.js +40 -0
  143. package/dist/cjs/internal/sqlSchemaErrors.js.map +7 -0
  144. package/dist/cjs/migrations/0001_control_tables.d.ts +18 -0
  145. package/dist/cjs/migrations/0001_control_tables.d.ts.map +1 -0
  146. package/dist/cjs/migrations/0001_control_tables.js +115 -0
  147. package/dist/cjs/migrations/0001_control_tables.js.map +7 -0
  148. package/dist/cjs/migrations/0002_run_keys.d.ts +15 -0
  149. package/dist/cjs/migrations/0002_run_keys.d.ts.map +1 -0
  150. package/dist/cjs/migrations/0002_run_keys.js +44 -0
  151. package/dist/cjs/migrations/0002_run_keys.js.map +7 -0
  152. package/dist/cjs/migrations/0003_signal_commands.d.ts +13 -0
  153. package/dist/cjs/migrations/0003_signal_commands.d.ts.map +1 -0
  154. package/dist/cjs/migrations/0003_signal_commands.js +50 -0
  155. package/dist/cjs/migrations/0003_signal_commands.js.map +7 -0
  156. package/dist/cjs/migrations/0004_approval_decisions.d.ts +13 -0
  157. package/dist/cjs/migrations/0004_approval_decisions.d.ts.map +1 -0
  158. package/dist/cjs/migrations/0004_approval_decisions.js +45 -0
  159. package/dist/cjs/migrations/0004_approval_decisions.js.map +7 -0
  160. package/dist/cjs/migrations/0005_signal_principals.d.ts +18 -0
  161. package/dist/cjs/migrations/0005_signal_principals.d.ts.map +1 -0
  162. package/dist/cjs/migrations/0005_signal_principals.js +45 -0
  163. package/dist/cjs/migrations/0005_signal_principals.js.map +7 -0
  164. package/dist/cjs/migrations/0006_run_principals.d.ts +18 -0
  165. package/dist/cjs/migrations/0006_run_principals.d.ts.map +1 -0
  166. package/dist/cjs/migrations/0006_run_principals.js +49 -0
  167. package/dist/cjs/migrations/0006_run_principals.js.map +7 -0
  168. package/dist/cjs/migrations/0007_resume_consent.d.ts +18 -0
  169. package/dist/cjs/migrations/0007_resume_consent.d.ts.map +1 -0
  170. package/dist/cjs/migrations/0007_resume_consent.js +46 -0
  171. package/dist/cjs/migrations/0007_resume_consent.js.map +7 -0
  172. package/dist/cjs/package.json +1 -0
  173. package/dist/cjs/test/TestControl.d.ts +19 -0
  174. package/dist/cjs/test/TestControl.d.ts.map +1 -0
  175. package/dist/cjs/test/TestControl.js +62 -0
  176. package/dist/cjs/test/TestControl.js.map +7 -0
  177. package/dist/esm/ApprovalAuthority.d.ts +73 -0
  178. package/dist/esm/ApprovalAuthority.d.ts.map +1 -0
  179. package/dist/esm/ApprovalAuthority.js +72 -0
  180. package/dist/esm/ApprovalAuthority.js.map +1 -0
  181. package/dist/esm/Cancellation.d.ts +107 -0
  182. package/dist/esm/Cancellation.d.ts.map +1 -0
  183. package/dist/esm/Cancellation.js +116 -0
  184. package/dist/esm/Cancellation.js.map +1 -0
  185. package/dist/esm/Channels.d.ts +170 -0
  186. package/dist/esm/Channels.d.ts.map +1 -0
  187. package/dist/esm/Channels.js +312 -0
  188. package/dist/esm/Channels.js.map +1 -0
  189. package/dist/esm/Control.d.ts +202 -0
  190. package/dist/esm/Control.d.ts.map +1 -0
  191. package/dist/esm/Control.js +42 -0
  192. package/dist/esm/Control.js.map +1 -0
  193. package/dist/esm/ControlClient.d.ts +52 -0
  194. package/dist/esm/ControlClient.d.ts.map +1 -0
  195. package/dist/esm/ControlClient.js +217 -0
  196. package/dist/esm/ControlClient.js.map +1 -0
  197. package/dist/esm/ControlError.d.ts +318 -0
  198. package/dist/esm/ControlError.d.ts.map +1 -0
  199. package/dist/esm/ControlError.js +359 -0
  200. package/dist/esm/ControlError.js.map +1 -0
  201. package/dist/esm/ControlExecutor.d.ts +372 -0
  202. package/dist/esm/ControlExecutor.d.ts.map +1 -0
  203. package/dist/esm/ControlExecutor.js +212 -0
  204. package/dist/esm/ControlExecutor.js.map +1 -0
  205. package/dist/esm/ControlFacts.d.ts +454 -0
  206. package/dist/esm/ControlFacts.d.ts.map +1 -0
  207. package/dist/esm/ControlFacts.js +324 -0
  208. package/dist/esm/ControlFacts.js.map +1 -0
  209. package/dist/esm/ControlLive.d.ts +23 -0
  210. package/dist/esm/ControlLive.d.ts.map +1 -0
  211. package/dist/esm/ControlLive.js +1589 -0
  212. package/dist/esm/ControlLive.js.map +1 -0
  213. package/dist/esm/ControlRpcs.d.ts +1204 -0
  214. package/dist/esm/ControlRpcs.d.ts.map +1 -0
  215. package/dist/esm/ControlRpcs.js +299 -0
  216. package/dist/esm/ControlRpcs.js.map +1 -0
  217. package/dist/esm/ControlRuntime.d.ts +635 -0
  218. package/dist/esm/ControlRuntime.d.ts.map +1 -0
  219. package/dist/esm/ControlRuntime.js +808 -0
  220. package/dist/esm/ControlRuntime.js.map +1 -0
  221. package/dist/esm/ControlSchema.d.ts +2642 -0
  222. package/dist/esm/ControlSchema.d.ts.map +1 -0
  223. package/dist/esm/ControlSchema.js +1030 -0
  224. package/dist/esm/ControlSchema.js.map +1 -0
  225. package/dist/esm/ControlServer.d.ts +51 -0
  226. package/dist/esm/ControlServer.d.ts.map +1 -0
  227. package/dist/esm/ControlServer.js +145 -0
  228. package/dist/esm/ControlServer.js.map +1 -0
  229. package/dist/esm/Credential.d.ts +136 -0
  230. package/dist/esm/Credential.d.ts.map +1 -0
  231. package/dist/esm/Credential.js +190 -0
  232. package/dist/esm/Credential.js.map +1 -0
  233. package/dist/esm/CredentialCipher.d.ts +90 -0
  234. package/dist/esm/CredentialCipher.d.ts.map +1 -0
  235. package/dist/esm/CredentialCipher.js +56 -0
  236. package/dist/esm/CredentialCipher.js.map +1 -0
  237. package/dist/esm/CredentialStore.d.ts +97 -0
  238. package/dist/esm/CredentialStore.d.ts.map +1 -0
  239. package/dist/esm/CredentialStore.js +101 -0
  240. package/dist/esm/CredentialStore.js.map +1 -0
  241. package/dist/esm/DispatchReader.d.ts +112 -0
  242. package/dist/esm/DispatchReader.d.ts.map +1 -0
  243. package/dist/esm/DispatchReader.js +76 -0
  244. package/dist/esm/DispatchReader.js.map +1 -0
  245. package/dist/esm/Health.d.ts +333 -0
  246. package/dist/esm/Health.d.ts.map +1 -0
  247. package/dist/esm/Health.js +400 -0
  248. package/dist/esm/Health.js.map +1 -0
  249. package/dist/esm/JevSessionChecker.d.ts +57 -0
  250. package/dist/esm/JevSessionChecker.d.ts.map +1 -0
  251. package/dist/esm/JevSessionChecker.js +108 -0
  252. package/dist/esm/JevSessionChecker.js.map +1 -0
  253. package/dist/esm/Lineage.d.ts +131 -0
  254. package/dist/esm/Lineage.d.ts.map +1 -0
  255. package/dist/esm/Lineage.js +174 -0
  256. package/dist/esm/Lineage.js.map +1 -0
  257. package/dist/esm/Migrations.d.ts +34 -0
  258. package/dist/esm/Migrations.d.ts.map +1 -0
  259. package/dist/esm/Migrations.js +53 -0
  260. package/dist/esm/Migrations.js.map +1 -0
  261. package/dist/esm/Monitor.d.ts +282 -0
  262. package/dist/esm/Monitor.d.ts.map +1 -0
  263. package/dist/esm/Monitor.js +415 -0
  264. package/dist/esm/Monitor.js.map +1 -0
  265. package/dist/esm/ScopedToken.d.ts +193 -0
  266. package/dist/esm/ScopedToken.d.ts.map +1 -0
  267. package/dist/esm/ScopedToken.js +224 -0
  268. package/dist/esm/ScopedToken.js.map +1 -0
  269. package/dist/esm/SqlControlRuntime.d.ts +161 -0
  270. package/dist/esm/SqlControlRuntime.d.ts.map +1 -0
  271. package/dist/esm/SqlControlRuntime.js +1756 -0
  272. package/dist/esm/SqlControlRuntime.js.map +1 -0
  273. package/dist/esm/SqlCredentialStore.d.ts +43 -0
  274. package/dist/esm/SqlCredentialStore.d.ts.map +1 -0
  275. package/dist/esm/SqlCredentialStore.js +97 -0
  276. package/dist/esm/SqlCredentialStore.js.map +1 -0
  277. package/dist/esm/Steering.d.ts +69 -0
  278. package/dist/esm/Steering.d.ts.map +1 -0
  279. package/dist/esm/Steering.js +89 -0
  280. package/dist/esm/Steering.js.map +1 -0
  281. package/dist/esm/SystemFlows.d.ts +223 -0
  282. package/dist/esm/SystemFlows.d.ts.map +1 -0
  283. package/dist/esm/SystemFlows.js +198 -0
  284. package/dist/esm/SystemFlows.js.map +1 -0
  285. package/dist/esm/WebCryptoCipher.d.ts +49 -0
  286. package/dist/esm/WebCryptoCipher.d.ts.map +1 -0
  287. package/dist/esm/WebCryptoCipher.js +123 -0
  288. package/dist/esm/WebCryptoCipher.js.map +1 -0
  289. package/dist/esm/WebhookChannel.d.ts +113 -0
  290. package/dist/esm/WebhookChannel.d.ts.map +1 -0
  291. package/dist/esm/WebhookChannel.js +109 -0
  292. package/dist/esm/WebhookChannel.js.map +1 -0
  293. package/dist/esm/index.d.ts +160 -0
  294. package/dist/esm/index.d.ts.map +1 -0
  295. package/dist/esm/index.js +160 -0
  296. package/dist/esm/index.js.map +1 -0
  297. package/dist/esm/internal/MutationBoundary.d.ts +27 -0
  298. package/dist/esm/internal/MutationBoundary.d.ts.map +1 -0
  299. package/dist/esm/internal/MutationBoundary.js +40 -0
  300. package/dist/esm/internal/MutationBoundary.js.map +1 -0
  301. package/dist/esm/internal/activeFibers.d.ts +12 -0
  302. package/dist/esm/internal/activeFibers.d.ts.map +1 -0
  303. package/dist/esm/internal/activeFibers.js +17 -0
  304. package/dist/esm/internal/activeFibers.js.map +1 -0
  305. package/dist/esm/internal/issues.d.ts +28 -0
  306. package/dist/esm/internal/issues.d.ts.map +1 -0
  307. package/dist/esm/internal/issues.js +35 -0
  308. package/dist/esm/internal/issues.js.map +1 -0
  309. package/dist/esm/internal/planning.d.ts +347 -0
  310. package/dist/esm/internal/planning.d.ts.map +1 -0
  311. package/dist/esm/internal/planning.js +199 -0
  312. package/dist/esm/internal/planning.js.map +1 -0
  313. package/dist/esm/internal/sqlSchemaErrors.d.ts +18 -0
  314. package/dist/esm/internal/sqlSchemaErrors.d.ts.map +1 -0
  315. package/dist/esm/internal/sqlSchemaErrors.js +38 -0
  316. package/dist/esm/internal/sqlSchemaErrors.js.map +1 -0
  317. package/dist/esm/migrations/0001_control_tables.d.ts +18 -0
  318. package/dist/esm/migrations/0001_control_tables.d.ts.map +1 -0
  319. package/dist/esm/migrations/0001_control_tables.js +96 -0
  320. package/dist/esm/migrations/0001_control_tables.js.map +1 -0
  321. package/dist/esm/migrations/0002_run_keys.d.ts +15 -0
  322. package/dist/esm/migrations/0002_run_keys.d.ts.map +1 -0
  323. package/dist/esm/migrations/0002_run_keys.js +22 -0
  324. package/dist/esm/migrations/0002_run_keys.js.map +1 -0
  325. package/dist/esm/migrations/0003_signal_commands.d.ts +13 -0
  326. package/dist/esm/migrations/0003_signal_commands.d.ts.map +1 -0
  327. package/dist/esm/migrations/0003_signal_commands.js +26 -0
  328. package/dist/esm/migrations/0003_signal_commands.js.map +1 -0
  329. package/dist/esm/migrations/0004_approval_decisions.d.ts +13 -0
  330. package/dist/esm/migrations/0004_approval_decisions.d.ts.map +1 -0
  331. package/dist/esm/migrations/0004_approval_decisions.js +25 -0
  332. package/dist/esm/migrations/0004_approval_decisions.js.map +1 -0
  333. package/dist/esm/migrations/0005_signal_principals.d.ts +18 -0
  334. package/dist/esm/migrations/0005_signal_principals.d.ts.map +1 -0
  335. package/dist/esm/migrations/0005_signal_principals.js +27 -0
  336. package/dist/esm/migrations/0005_signal_principals.js.map +1 -0
  337. package/dist/esm/migrations/0006_run_principals.d.ts +18 -0
  338. package/dist/esm/migrations/0006_run_principals.d.ts.map +1 -0
  339. package/dist/esm/migrations/0006_run_principals.js +30 -0
  340. package/dist/esm/migrations/0006_run_principals.js.map +1 -0
  341. package/dist/esm/migrations/0007_resume_consent.d.ts +18 -0
  342. package/dist/esm/migrations/0007_resume_consent.d.ts.map +1 -0
  343. package/dist/esm/migrations/0007_resume_consent.js +27 -0
  344. package/dist/esm/migrations/0007_resume_consent.js.map +1 -0
  345. package/dist/esm/test/TestControl.d.ts +19 -0
  346. package/dist/esm/test/TestControl.d.ts.map +1 -0
  347. package/dist/esm/test/TestControl.js +30 -0
  348. package/dist/esm/test/TestControl.js.map +1 -0
  349. package/docs/README.md +189 -0
  350. package/docs/api.md +982 -0
  351. package/docs/concepts/authority.md +109 -0
  352. package/docs/concepts/cancellation.md +129 -0
  353. package/docs/concepts/lineage.md +132 -0
  354. package/docs/concepts/ownership.md +139 -0
  355. package/docs/concepts/projections.md +203 -0
  356. package/docs/concepts/receipts.md +128 -0
  357. package/docs/guides/approvals.md +284 -0
  358. package/docs/guides/cancel-and-resume.md +162 -0
  359. package/docs/guides/durable-storage.md +147 -0
  360. package/docs/guides/implement-an-executor.md +173 -0
  361. package/docs/guides/ingest-a-webhook.md +177 -0
  362. package/docs/guides/list-runs.md +160 -0
  363. package/docs/guides/monitor-runs.md +176 -0
  364. package/docs/guides/observe-health.md +147 -0
  365. package/docs/guides/postgres-tests.md +7 -0
  366. package/docs/guides/serve-over-rpc.md +220 -0
  367. package/docs/guides/signal-a-run.md +53 -0
  368. package/docs/guides/steer-a-run.md +138 -0
  369. package/docs/guides/store-credentials.md +164 -0
  370. package/docs/guides/testing.md +139 -0
  371. package/docs/guides/watch-a-run.md +154 -0
  372. package/docs/installation.md +106 -0
  373. package/docs/quickstart.md +163 -0
  374. package/docs/troubleshooting.md +208 -0
  375. package/package.json +405 -3
  376. package/src/ApprovalAuthority.ts +114 -0
  377. package/src/Cancellation.ts +172 -0
  378. package/src/Channels.ts +493 -0
  379. package/src/Control.ts +337 -0
  380. package/src/ControlClient.ts +319 -0
  381. package/src/ControlError.ts +378 -0
  382. package/src/ControlExecutor.ts +490 -0
  383. package/src/ControlFacts.ts +383 -0
  384. package/src/ControlLive.ts +2127 -0
  385. package/src/ControlRpcs.ts +443 -0
  386. package/src/ControlRuntime.ts +1601 -0
  387. package/src/ControlSchema.ts +1380 -0
  388. package/src/ControlServer.ts +182 -0
  389. package/src/Credential.ts +310 -0
  390. package/src/CredentialCipher.ts +110 -0
  391. package/src/CredentialStore.ts +152 -0
  392. package/src/DispatchReader.ts +122 -0
  393. package/src/Health.ts +591 -0
  394. package/src/JevSessionChecker.ts +127 -0
  395. package/src/Lineage.ts +203 -0
  396. package/src/Migrations.ts +56 -0
  397. package/src/Monitor.ts +600 -0
  398. package/src/ScopedToken.ts +306 -0
  399. package/src/SqlControlRuntime.ts +2478 -0
  400. package/src/SqlCredentialStore.ts +148 -0
  401. package/src/Steering.ts +96 -0
  402. package/src/SystemFlows.ts +225 -0
  403. package/src/WebCryptoCipher.ts +169 -0
  404. package/src/WebhookChannel.ts +166 -0
  405. package/src/index.ts +188 -0
  406. package/src/internal/MutationBoundary.ts +46 -0
  407. package/src/internal/activeFibers.ts +22 -0
  408. package/src/internal/issues.ts +40 -0
  409. package/src/internal/planning.ts +262 -0
  410. package/src/internal/sqlSchemaErrors.ts +37 -0
  411. package/src/migrations/0001_control_tables.ts +99 -0
  412. package/src/migrations/0002_run_keys.ts +23 -0
  413. package/src/migrations/0003_signal_commands.ts +27 -0
  414. package/src/migrations/0004_approval_decisions.ts +25 -0
  415. package/src/migrations/0005_signal_principals.ts +27 -0
  416. package/src/migrations/0006_run_principals.ts +31 -0
  417. package/src/migrations/0007_resume_consent.ts +28 -0
  418. package/src/test/TestControl.ts +47 -0
@@ -0,0 +1,635 @@
1
+ /**
2
+ * Browser-safe port between the control plane and the execution engine, with a
3
+ * deterministic in-memory implementation.
4
+ *
5
+ * `layerMemory` is the deterministic one: it models the production fence and
6
+ * approval ordering seams but keeps everything in a `Map`, so nothing it
7
+ * decides survives the process. The durable adapter is
8
+ * {@link SqlControlRuntime}, and both are held to one shared contract suite —
9
+ * see `test/ControlContract.ts`.
10
+ *
11
+ * @since 0.1.0
12
+ */
13
+ import type * as PersistedPlan from "@smthrs/plan/Plan";
14
+ import { Context, Crypto, Effect, Fiber, Layer, Schema } from "effect";
15
+ import * as ApprovalAuthority from "./ApprovalAuthority.ts";
16
+ import type { ApprovalTarget, PlanInput } from "./Control.ts";
17
+ import { AlreadyResolved, ClaimLost, type CodeDrift, EnvelopeMismatch, FlowNotFound, InvalidInput, PersistenceError, PlanDenied, PlanDigestMismatch, PlanNotFound, RunNotFound, type Unauthorized } from "./ControlError.ts";
18
+ import type { Envelope, FlowId, GrantScope, IdempotencyKey, PlanCard, PlanDecision, PlanGraph, PlanNode, Principal, Receipt, RunId, RunStatus, RunSummary, SignalPayload } from "./ControlSchema.ts";
19
+ /**
20
+ * Immutable ordering keys for a run page. Control launches precede engine runs.
21
+ *
22
+ * @category models
23
+ * @since 1.0.0
24
+ */
25
+ export interface RunCursor {
26
+ readonly source: 0 | 1;
27
+ readonly sequence: number;
28
+ readonly createdAt: number;
29
+ readonly runId: RunId;
30
+ }
31
+ /**
32
+ * Durable summary filters, applied before projection and executor observation.
33
+ * `limit` must be an integer from 1 through 500. Reuse a cursor with the same filters.
34
+ *
35
+ * @category models
36
+ * @since 1.0.0
37
+ */
38
+ export interface RunQuery {
39
+ readonly filters?: {
40
+ readonly flowId?: FlowId | undefined;
41
+ readonly status?: RunStatus | undefined;
42
+ readonly terminal?: boolean | undefined;
43
+ readonly parentRunId?: RunId | undefined;
44
+ readonly lineageId?: string | undefined;
45
+ /** Created at or after this epoch millisecond. */
46
+ readonly since?: number | undefined;
47
+ /** Created before this epoch millisecond. */
48
+ readonly until?: number | undefined;
49
+ /** Only these runs; an empty list selects none. */
50
+ readonly runIds?: ReadonlyArray<RunId> | undefined;
51
+ /**
52
+ * Only runs this plane launched for a principal with this `id`, and this
53
+ * `kind` when given. A run with no recorded launcher never matches.
54
+ */
55
+ readonly launchedBy?: {
56
+ readonly id: string;
57
+ readonly kind?: string | undefined;
58
+ } | undefined;
59
+ } | undefined;
60
+ /** Creation time first, newest or oldest; ties use the durable sequence. */
61
+ readonly order?: "newest" | "oldest" | undefined;
62
+ readonly cursor?: RunCursor | undefined;
63
+ readonly limit: number;
64
+ }
65
+ /**
66
+ * Whether `run` was launched by the principal `launcher` names: the same `id`,
67
+ * and the same `kind` when `launcher` gives one. A run with no recorded
68
+ * launcher never matches.
69
+ *
70
+ * @category predicates
71
+ * @since 1.0.0
72
+ */
73
+ export declare const launchedByMatches: (run: Pick<RunSummary, "launchedBy">, launcher: {
74
+ readonly id: string;
75
+ readonly kind?: string | undefined;
76
+ }) => boolean;
77
+ /**
78
+ * A bounded page; the cursor names the last selected row, even if retention removed it.
79
+ *
80
+ * @category models
81
+ * @since 1.0.0
82
+ */
83
+ export interface RunPage {
84
+ readonly items: ReadonlyArray<RunSummary>;
85
+ readonly nextCursor?: RunCursor | undefined;
86
+ }
87
+ /**
88
+ * One page of an inventory walk. `next` is the position to pass as `after`
89
+ * for the following page; it is absent on the last page. `through` is the
90
+ * highest position the walk covers: the first page pins it to the newest
91
+ * entry at that moment, and the caller passes it back unchanged so every
92
+ * later page stops there. A walk therefore ends even while new entries keep
93
+ * arriving; they sort after `through` and belong to the next walk.
94
+ *
95
+ * @category models
96
+ * @since 1.0.0
97
+ */
98
+ export interface IdPage {
99
+ readonly ids: ReadonlyArray<string>;
100
+ readonly next?: number | undefined;
101
+ readonly through: number;
102
+ }
103
+ /**
104
+ * An inventory page request. Positions are the store's insertion-ordered row
105
+ * key, so each page is one indexed seek. `limit` must be an integer from 1
106
+ * through 500.
107
+ *
108
+ * @category models
109
+ * @since 1.0.0
110
+ */
111
+ export interface IdPageRequest {
112
+ readonly after?: number | undefined;
113
+ readonly through?: number | undefined;
114
+ readonly limit: number;
115
+ }
116
+ /**
117
+ * A durably admitted signal, bound at most once to one concrete wait token.
118
+ *
119
+ * @since 1.0.0
120
+ * @category models
121
+ */
122
+ export interface SignalCommand {
123
+ readonly commandId: string;
124
+ readonly runId: RunId;
125
+ readonly signal: SignalPayload;
126
+ readonly token: string | null;
127
+ readonly state: "pending" | "delivered" | "rejected" | "terminal";
128
+ /**
129
+ * Who admitted the signal, stamped at admission. The executor checks it
130
+ * against `authorizeApproval` before the signal may complete a human wait,
131
+ * and a replay after restart reads it here because no caller is present.
132
+ * Absent on commands admitted before the column existed, which therefore
133
+ * cannot answer a human wait.
134
+ */
135
+ readonly principal?: Principal | undefined;
136
+ }
137
+ /**
138
+ * A stored-plan page request: plans oldest first, after the insertion position
139
+ * `after`, narrowed by flow and decision. `limit` must be an integer from 1
140
+ * through 500.
141
+ *
142
+ * @category models
143
+ * @since 1.0.0
144
+ */
145
+ export interface PlanQuery {
146
+ readonly flowId?: FlowId | undefined;
147
+ readonly decision?: PlanDecision | undefined;
148
+ readonly after?: number | undefined;
149
+ readonly limit: number;
150
+ }
151
+ /**
152
+ * One page of stored plans. `next` is the insertion position a later page
153
+ * continues after, present while more plans may match.
154
+ *
155
+ * @category models
156
+ * @since 1.0.0
157
+ */
158
+ export interface PlanPage {
159
+ readonly plans: ReadonlyArray<StoredPlan>;
160
+ readonly next?: number | undefined;
161
+ }
162
+ /**
163
+ * A decoded input and immutable plan stored before execution.
164
+ *
165
+ * @category models
166
+ * @since 0.1.0
167
+ */
168
+ export interface StoredPlan {
169
+ readonly card: PlanCard;
170
+ readonly decodedInput: unknown;
171
+ readonly decision: PlanDecision;
172
+ }
173
+ /**
174
+ * The durable answer to an approval request. A decision is not inferred from
175
+ * the presence of a grant or from a boolean that also means denial.
176
+ *
177
+ * @category models
178
+ * @since 0.1.0
179
+ */
180
+ export declare const ApprovalDecision: Schema.Union<readonly [Schema.Struct<{
181
+ readonly _tag: Schema.Literal<"Pending">;
182
+ }>, Schema.Struct<{
183
+ readonly _tag: Schema.Literal<"Approved">;
184
+ readonly decisionPrincipal: Schema.Struct<{
185
+ readonly id: Schema.String;
186
+ readonly kind: Schema.String;
187
+ readonly stampedAt: Schema.Number;
188
+ }>;
189
+ readonly decidedAt: Schema.Number;
190
+ readonly scope: Schema.Literals<readonly ["once", "run", "remembered"]>;
191
+ }>, Schema.Struct<{
192
+ readonly _tag: Schema.Literal<"Denied">;
193
+ readonly decisionPrincipal: Schema.Struct<{
194
+ readonly id: Schema.String;
195
+ readonly kind: Schema.String;
196
+ readonly stampedAt: Schema.Number;
197
+ }>;
198
+ readonly decidedAt: Schema.Number;
199
+ }>]>;
200
+ /**
201
+ * Durable approval state.
202
+ * @category models
203
+ * @since 1.0.0
204
+ */
205
+ export type ApprovalDecision = typeof ApprovalDecision.Type;
206
+ /**
207
+ * An identity and its explicit approval decision.
208
+ * @category models
209
+ * @since 1.0.0
210
+ */
211
+ export type ApprovalToken = ApprovalDecision & {
212
+ readonly tokenId: string;
213
+ readonly target: ApprovalTarget;
214
+ };
215
+ declare const ApprovalPending_base: Schema.Class<ApprovalPending, Schema.TaggedStruct<"/control/ApprovalPending", {
216
+ readonly tokenId: Schema.String;
217
+ }>, import("effect/Cause").YieldableError>;
218
+ /**
219
+ * A gate that still needs a decision.
220
+ * @category errors
221
+ * @since 1.0.0
222
+ */
223
+ export declare class ApprovalPending extends ApprovalPending_base {
224
+ get message(): string;
225
+ }
226
+ declare const ApprovalDenied_base: Schema.Class<ApprovalDenied, Schema.TaggedStruct<"/control/ApprovalDenied", {
227
+ readonly tokenId: Schema.String;
228
+ readonly decisionPrincipal: Schema.Struct<{
229
+ readonly id: Schema.String;
230
+ readonly kind: Schema.String;
231
+ readonly stampedAt: Schema.Number;
232
+ }>;
233
+ }>, import("effect/Cause").YieldableError>;
234
+ /**
235
+ * A gate that was denied, not merely resolved.
236
+ * @category errors
237
+ * @since 1.0.0
238
+ */
239
+ export declare class ApprovalDenied extends ApprovalDenied_base {
240
+ get message(): string;
241
+ }
242
+ /**
243
+ * Opens only an explicitly approved gate. Callers may park on ApprovalPending;
244
+ * ApprovalDenied is terminal. This reads a runtime-issued token, not an
245
+ * authentication credential, and does not itself install permissions.
246
+ * @category combinators
247
+ * @since 1.0.0
248
+ */
249
+ export declare const requireApproved: (token: ApprovalToken) => Effect.Effect<Extract<ApprovalToken, {
250
+ readonly _tag: "Approved";
251
+ }>, ApprovalPending | ApprovalDenied>;
252
+ /**
253
+ * One bulk permission grant. The envelope is deliberately not split into
254
+ * individual capabilities at this boundary.
255
+ *
256
+ * @category models
257
+ * @since 0.1.0
258
+ */
259
+ export interface BulkGrant {
260
+ readonly tokenId: string;
261
+ readonly envelope: Envelope;
262
+ readonly scope: GrantScope;
263
+ readonly installedAt: number;
264
+ }
265
+ /**
266
+ * Result of launching an approved plan.
267
+ *
268
+ * @category models
269
+ * @since 0.1.0
270
+ */
271
+ export type LaunchResult = {
272
+ readonly _tag: "Started";
273
+ readonly receipt: Receipt;
274
+ readonly run: RunSummary;
275
+ } | {
276
+ readonly _tag: "Parked";
277
+ readonly receipt: Receipt;
278
+ };
279
+ /**
280
+ * A plan card and whether this call is the one that created it.
281
+ *
282
+ * A plan under an idempotency key the runtime has already seen answers with the
283
+ * STORED card, which is what idempotency means. `Control.plan` needs to tell
284
+ * that apart from a first ask, because it journals `control.plan.created` and
285
+ * an unconditional entry appended one creation per retry: `Channels.ingest`
286
+ * passes a key on every webhook redelivery, so a watcher of the plan partition
287
+ * replayed N creations of one plan.
288
+ *
289
+ * @category models
290
+ * @since 0.1.0
291
+ */
292
+ export interface PlanOutcome {
293
+ readonly card: PlanCard;
294
+ readonly created: boolean;
295
+ }
296
+ /**
297
+ * A stored idempotency-key outcome and the mutation fingerprint that produced
298
+ * it.
299
+ *
300
+ * @category models
301
+ * @since 0.1.0
302
+ */
303
+ export interface MutationRecord {
304
+ readonly fingerprint: string;
305
+ readonly receipt: Receipt;
306
+ }
307
+ /**
308
+ * The outcome of claiming a run mutation's idempotency key before launch.
309
+ *
310
+ * `Claimed` is this call's mandate to launch: the key row was empty or did not
311
+ * exist, and it now names this call. `Raced` is the resolution the plan verb's
312
+ * key claim gives a loser — another mutation claimed the key first, and the
313
+ * receipt it settled is the answer this call must return instead of launching
314
+ * a second run.
315
+ *
316
+ * @category models
317
+ * @since 0.1.0
318
+ */
319
+ export type RunKeyClaim = {
320
+ readonly _tag: "Claimed";
321
+ } | {
322
+ readonly _tag: "Raced";
323
+ readonly receipt: Receipt;
324
+ };
325
+ /**
326
+ * Flow metadata used by the memory runtime's input-decoding hook.
327
+ *
328
+ * @category models
329
+ * @since 0.1.0
330
+ */
331
+ export interface MemoryFlow {
332
+ readonly flowId: FlowId;
333
+ readonly description: string;
334
+ readonly deployClass: boolean;
335
+ readonly envelope: Envelope;
336
+ /** Executable source/metadata identity included in the approved card. */
337
+ readonly executionDigest?: string | undefined;
338
+ readonly decode?: ((input: unknown) => Effect.Effect<unknown, InvalidInput>) | undefined;
339
+ /**
340
+ * Projects the decoded input into the keyed node graph the card reports.
341
+ *
342
+ * Planning performs no I/O, so this is a pure function of the input: the
343
+ * host builds the graph (`@smthrs/core`'s `Graph.build`), keys it
344
+ * (`@smthrs/plan`'s compiler), and reports each node as `cached` or `run`
345
+ * against whatever step cache it holds.
346
+ */
347
+ readonly plan?: ((input: unknown, planId: string) => Effect.Effect<{
348
+ readonly plan: PersistedPlan.Plan;
349
+ readonly statuses?: Readonly<Record<string, PlanNode["status"]>> | undefined;
350
+ /** The built graph's labelled edges and declaration sites, reported outside the approval digest. */
351
+ readonly graph?: PlanGraph | undefined;
352
+ }, InvalidInput>) | undefined;
353
+ }
354
+ /**
355
+ * In-memory runtime configuration.
356
+ *
357
+ * @category models
358
+ * @since 0.1.0
359
+ */
360
+ export interface MemoryOptions {
361
+ readonly flows?: ReadonlyArray<MemoryFlow> | undefined;
362
+ readonly now?: (() => number) | undefined;
363
+ readonly principal?: Omit<Principal, "stampedAt"> | undefined;
364
+ readonly approvalAuthority?: ApprovalAuthority.Service | undefined;
365
+ /** The engine version stamped on every run this runtime starts. */
366
+ readonly engineVersion?: string | undefined;
367
+ }
368
+ /**
369
+ * One run that has been told to resume, and the sequence of the request.
370
+ *
371
+ * @category models
372
+ * @since 0.1.0
373
+ */
374
+ export interface PendingResume {
375
+ readonly runId: RunId;
376
+ readonly sequence: number;
377
+ /**
378
+ * When the delegation was recorded.
379
+ *
380
+ * A host reads it to tell a decision it has just been handed from one that
381
+ * has been standing unanswered: a run parked by a process that has since
382
+ * exited has nobody left to recognize its own park, so its delegation is
383
+ * taken up by whichever host can drive it once it has gone unanswered for
384
+ * `Ownership.heartbeatStaleAfter` (triage B-15).
385
+ */
386
+ readonly requestedAtMs: number;
387
+ /**
388
+ * The journal sequence of the operator's explicit `control.run.resume`
389
+ * this delegation carries, when it carries one.
390
+ *
391
+ * An approval or a wake is background intent. An operator's resume of a
392
+ * run a live host parked is handed to that host as a delegation too, and
393
+ * this is what tells the host the operator asked: it records the
394
+ * per-release retry permission under this sequence before it drives the
395
+ * run (#2982, #3342).
396
+ */
397
+ readonly consent?: number | undefined;
398
+ }
399
+ /**
400
+ * Execution-engine operations required by `ControlLive`.
401
+ *
402
+ * A production adapter must fence every owner-sensitive write, implement
403
+ * resume as join-or-claim, release claims on every waiting or terminal
404
+ * transition, and translate all conflicts into typed failures. For a new
405
+ * approval decision, authenticate the principal and call `authorizeApproval`
406
+ * before target reads or receipt replay. Then call `lookupApproval`,
407
+ * `resolveApproval` exactly once with an authority recheck, `installBulkGrant`
408
+ * only on approval, and journal the decision. Commit the decision, grant,
409
+ * journal entry, receipt, and any node resume delegation atomically. Resolution
410
+ * must not require an installed grant or a flushed journal decision.
411
+ *
412
+ * @category models
413
+ * @since 0.1.0
414
+ */
415
+ export interface Service {
416
+ /** The owning host's policy, independent of authentication and attribution. */
417
+ readonly authorizeApproval: ApprovalAuthority.Service["authorize"];
418
+ readonly plan: (input: PlanInput) => Effect.Effect<PlanOutcome, FlowNotFound | InvalidInput | PersistenceError>;
419
+ readonly getPlan: (planId: string) => Effect.Effect<StoredPlan, PlanNotFound | PersistenceError>;
420
+ /** Plan ids in insertion order, one bounded page at a time. */
421
+ readonly pagePlanIds: (request: IdPageRequest) => Effect.Effect<IdPage, InvalidInput | PersistenceError>;
422
+ /** Stored plans in insertion order, narrowed by flow and decision, one bounded page at a time. */
423
+ readonly queryPlans: (request: PlanQuery) => Effect.Effect<PlanPage, InvalidInput | PersistenceError>;
424
+ readonly lookupApproval: (target: ApprovalTarget) => Effect.Effect<ApprovalToken, PlanDigestMismatch | EnvelopeMismatch | AlreadyResolved | PlanNotFound | RunNotFound | PersistenceError>;
425
+ /**
426
+ * Creates the durable token for one in-run approval request, or returns the
427
+ * existing one.
428
+ *
429
+ * Plan tokens are created by `plan`; nothing created tokens for `Node`
430
+ * targets, so an in-run request (a parked `ask`, a permission requirement)
431
+ * could never be decided through `approve`/`deny`. Registration is
432
+ * idempotent — the executor calls it on every parked attempt — and returns
433
+ * the token with its current tagged decision so a resumed attempt can read
434
+ * the decision instead of parking again. A registered target that
435
+ * disagrees with the stored digest or envelope is refused, exactly as
436
+ * `lookupApproval` refuses it.
437
+ */
438
+ readonly registerApproval: (target: Extract<ApprovalTarget, {
439
+ readonly _tag: "Node";
440
+ }>) => Effect.Effect<ApprovalToken, RunNotFound | PlanDigestMismatch | EnvelopeMismatch | PersistenceError>;
441
+ readonly installBulkGrant: (token: ApprovalToken, envelope: Envelope, scope: GrantScope) => Effect.Effect<void, PersistenceError>;
442
+ /** Records the decision exactly once. Approval scope defaults to once; the
443
+ * control boundary supplies the scope of the grant it installed. */
444
+ readonly resolveApproval: (token: ApprovalToken, decision: "approved" | "denied", principal: Principal, scope?: GrantScope | undefined) => Effect.Effect<void, AlreadyResolved | PersistenceError | Unauthorized>;
445
+ /**
446
+ * Starts an approved plan. `principal` is the identity that asked; its `id`
447
+ * and `kind` are recorded as the run's `launchedBy`, which decides which
448
+ * readers a restricted listing or watch shows the run to.
449
+ */
450
+ readonly launch: (planId: string, digest: string, envelope: Envelope, principal?: Principal | undefined, reservedRunId?: RunId | undefined) => Effect.Effect<LaunchResult, PlanNotFound | PlanDenied | PlanDigestMismatch | EnvelopeMismatch | ClaimLost | PersistenceError>;
451
+ readonly getRun: (runId: RunId) => Effect.Effect<RunSummary, RunNotFound | PersistenceError>;
452
+ /**
453
+ * Every durable run id in insertion order, one bounded page at a time, for
454
+ * recovery and journal partition discovery. Reads keys only; use queryRuns
455
+ * for summaries.
456
+ */
457
+ readonly pageRunIds: (request: IdPageRequest) => Effect.Effect<IdPage, InvalidInput | PersistenceError>;
458
+ readonly queryRuns: (request: RunQuery) => Effect.Effect<RunPage, InvalidInput | PersistenceError>;
459
+ readonly listFlows: Effect.Effect<ReadonlyArray<{
460
+ readonly flowId: FlowId;
461
+ readonly description: string;
462
+ }>, PersistenceError>;
463
+ readonly deliverSignal: (runId: RunId, signal: SignalPayload) => Effect.Effect<void, RunNotFound | PersistenceError>;
464
+ readonly admitSignal: (commandId: string, runId: RunId, signal: SignalPayload, principal?: Principal | undefined) => Effect.Effect<void, RunNotFound | PersistenceError>;
465
+ readonly signalCommand: (commandId: string) => Effect.Effect<SignalCommand | undefined, PersistenceError>;
466
+ readonly pendingSignals: Effect.Effect<ReadonlyArray<SignalCommand>, PersistenceError>;
467
+ readonly bindSignal: (commandId: string, token: string) => Effect.Effect<string | null, PersistenceError>;
468
+ readonly settleSignal: (commandId: string, state: "delivered" | "rejected" | "terminal") => Effect.Effect<void, PersistenceError>;
469
+ readonly deliveredSignals: (runId: RunId) => Effect.Effect<ReadonlyArray<SignalPayload>, RunNotFound | PersistenceError>;
470
+ /**
471
+ * Records, durably, that this run has been told to resume.
472
+ *
473
+ * The record is the delegation. A decision on an in-run approval can be
474
+ * taken by any process holding the control database, and only the process
475
+ * hosting the execution can act on it, so the intent has to outlive the call
476
+ * that made it: an in-process event bus reaches one process, and a journal
477
+ * entry is per run and needs a reader that already knows which run to read.
478
+ * The returned sequence is the cursor {@link Service.clearResume} checks, so
479
+ * a resume requested while one is being taken up is not lost with it.
480
+ *
481
+ * A terminal run is refused with `InvalidInput`: no host will ever take the
482
+ * delegation up, and recording it would leave an orphaned row every host's
483
+ * `pendingResumes` poll filters but nothing ever clears.
484
+ *
485
+ * `consent` is the journal sequence of an operator's explicit resume (see
486
+ * {@link PendingResume.consent}). A later delegation without one keeps the
487
+ * consent no host has taken up yet.
488
+ */
489
+ readonly requestResume: (runId: RunId, options?: {
490
+ readonly consent?: number | undefined;
491
+ } | undefined) => Effect.Effect<number, RunNotFound | InvalidInput | PersistenceError>;
492
+ /**
493
+ * Every outstanding resume delegation for a run that is not terminal.
494
+ *
495
+ * This is what a host polls. A settled run's delegation is not reported: no
496
+ * host will ever take it up, and reporting it forever would make an
497
+ * unbounded backlog out of a run that is finished.
498
+ */
499
+ readonly pendingResumes: Effect.Effect<ReadonlyArray<PendingResume>, PersistenceError>;
500
+ /**
501
+ * Clears a delegation a host has taken up, if it is still the one it read.
502
+ *
503
+ * The sequence check is what makes the clear safe: a resume requested
504
+ * between the read and the clear has a higher sequence and survives, so the
505
+ * host takes it up on its next tick instead of losing it.
506
+ */
507
+ readonly clearResume: (runId: RunId, sequence: number) => Effect.Effect<void, PersistenceError>;
508
+ readonly registerFiber: (runId: RunId, fiber: Fiber.Fiber<unknown, unknown>) => Effect.Effect<void, RunNotFound | PersistenceError>;
509
+ /**
510
+ * Interrupts and awaits the local fiber with no caller-held mutation locks.
511
+ * `settle` wraps only the subsequent fenced status reconciliation, allowing
512
+ * ControlLive to commit its terminal event in the same transaction.
513
+ */
514
+ readonly interrupt: (runId: RunId, settle?: (effect: Effect.Effect<RunSummary, RunNotFound | ClaimLost | PersistenceError>) => Effect.Effect<RunSummary, RunNotFound | ClaimLost | PersistenceError>) => Effect.Effect<RunSummary, RunNotFound | ClaimLost | PersistenceError>;
515
+ /**
516
+ * Joins an owned run or claims a suspended run or expired dead-owner run.
517
+ *
518
+ * `scope: "launched"` restricts claims to runs this plane launched, including
519
+ * dead-owner takeovers. An unindexed run is refused with `ClaimLost`; a run
520
+ * already owned by this process is joined without changing its state.
521
+ * Both `Control.resume` and `Control.run` with a Resume input, plus steer
522
+ * wakes, pass it to preserve an engine-created run's continuation and fence.
523
+ * `scope: "any"` (also the default) is a trusted low-level runtime
524
+ * capability for hosts that can drive the claimed execution. Node approval
525
+ * uses `requestResume` delegation instead of claiming here.
526
+ */
527
+ readonly resume: (runId: RunId, options?: {
528
+ readonly scope?: "launched" | "any" | undefined;
529
+ } | undefined) => Effect.Effect<RunSummary, RunNotFound | ClaimLost | PersistenceError>;
530
+ /**
531
+ * `resume`, recording the flow's current execution digest and this
532
+ * runtime's engine version on the claimed run: the operator allowed it to
533
+ * resume on changed code, so later checks compare against that code. A flow
534
+ * that no longer exists, or that this host cannot run, has no code to adopt,
535
+ * so this fails `CodeDrift` before the claim and the run stays where it was.
536
+ */
537
+ readonly resumeAdopting: (runId: RunId, options?: {
538
+ readonly scope?: "launched" | "any" | undefined;
539
+ } | undefined) => Effect.Effect<RunSummary, RunNotFound | ClaimLost | CodeDrift | PersistenceError>;
540
+ /**
541
+ * The drift between the code the run recorded and the code that would
542
+ * resume it, or `undefined` when there is none. Every path that re-drives a
543
+ * parked run asks this before it claims or delegates; recovery paths that
544
+ * only settle a run do not.
545
+ */
546
+ readonly codeDrift: (runId: RunId) => Effect.Effect<CodeDrift | undefined, RunNotFound | PersistenceError>;
547
+ /**
548
+ * The code identity the run executes under: its own recorded digest and
549
+ * engine version, or, for a row that recorded none (a trampoline round, or a
550
+ * fork or child the engine wrote), those of its nearest same-flow ancestor.
551
+ * `codeDrift` checks this identity, so an executor that enters the identity
552
+ * read here runs exactly the code the check admitted.
553
+ */
554
+ readonly recordedCode: (runId: RunId) => Effect.Effect<Pick<RunSummary, "executionDigest" | "engineVersion">, RunNotFound | PersistenceError>;
555
+ readonly claimFence: (runId: RunId) => Effect.Effect<string, RunNotFound | ClaimLost | PersistenceError>;
556
+ /**
557
+ * Releases a launch the configured executor declined without changing its
558
+ * public `accepted` status.
559
+ *
560
+ * The run remains available to an external executor, but the launching
561
+ * process no longer appears to drive it. The presented fence is spent by
562
+ * the release and cannot authorize a later write.
563
+ */
564
+ readonly releasePending: (runId: RunId, fence: string) => Effect.Effect<RunSummary, RunNotFound | ClaimLost | PersistenceError>;
565
+ readonly writeStatus: (runId: RunId, fence: string, status: RunStatus) => Effect.Effect<RunSummary, RunNotFound | ClaimLost | PersistenceError>;
566
+ readonly stampPrincipal: (submitted?: Principal | undefined) => Effect.Effect<Principal, PersistenceError>;
567
+ readonly lookupMutation: (key: IdempotencyKey, fingerprint: string) => Effect.Effect<Receipt | undefined, PersistenceError>;
568
+ readonly recordMutation: (key: IdempotencyKey, fingerprint: string, receipt: Receipt) => Effect.Effect<void, PersistenceError>;
569
+ /**
570
+ * Claims a run mutation's idempotency key before any launch side effect.
571
+ *
572
+ * This is the run verb's half of the race `control_plan_keys` closes for
573
+ * plans: a bare `lookupMutation`/`recordMutation` pair leaves two processes
574
+ * that both missed the lookup free to both launch, and the loser's run row
575
+ * outlives the `recordMutation` refusal that follows. The claim must run
576
+ * FIRST, inside the same write transaction the mutation later records its
577
+ * receipt in, so the loser's insert conflicts on the winner's committed key
578
+ * row before a run row, a claim, or a journal entry exists — and the winner's
579
+ * receipt, committed in that same transaction, is already there to read.
580
+ *
581
+ * `Raced` carries the winner's recorded receipt verbatim, which is the
582
+ * convergence the plan verb gives a losing planner (`created: false` with
583
+ * the stored card). A key claimed under another fingerprint is refused with
584
+ * `InvalidInput`, the same refusal `plan` gives a colliding key. A key row
585
+ * whose winner never recorded — possible only when the claim and the record
586
+ * were not one transaction — is a `PersistenceError`, because there is no
587
+ * honest receipt to answer with.
588
+ */
589
+ readonly claimRunKey: (key: IdempotencyKey, fingerprint: string) => Effect.Effect<RunKeyClaim, InvalidInput | PersistenceError>;
590
+ /**
591
+ * Releases a claim {@link Service.claimRunKey} took, without a receipt.
592
+ *
593
+ * Exactly one path needs it: a launch that answered `Parked` created no run
594
+ * and records no receipt, so the claim must be withdrawn inside the same
595
+ * transaction or the key would stay held forever by a mutation that settled
596
+ * nothing. Every other outcome either records a receipt (the claim's whole
597
+ * point) or fails and rolls the claim back with its transaction.
598
+ */
599
+ readonly releaseRunKey: (key: IdempotencyKey) => Effect.Effect<void, PersistenceError>;
600
+ readonly grants: Effect.Effect<ReadonlyArray<BulkGrant>, PersistenceError>;
601
+ }
602
+ declare const ControlRuntime_base: Context.ServiceClass<ControlRuntime, "/control/ControlRuntime", Service>;
603
+ /**
604
+ * Service key for the execution-engine port.
605
+ *
606
+ * @category services
607
+ * @since 0.1.0
608
+ */
609
+ export declare class ControlRuntime extends ControlRuntime_base {
610
+ }
611
+ /**
612
+ * Constructs a runtime service from an implementation record.
613
+ *
614
+ * @category constructors
615
+ * @since 0.1.0
616
+ */
617
+ export declare const make: (implementation: Service) => Service;
618
+ /**
619
+ * Refuses an id page size outside 1 through 500, the `queryRuns` bound.
620
+ *
621
+ * @category validation
622
+ * @since 1.0.0
623
+ */
624
+ export declare const idPageLimit: (limit: number) => Effect.Effect<void, InvalidInput>;
625
+ /**
626
+ * Deterministic in-memory runtime. It models the production fence and approval
627
+ * ordering seams but intentionally does not claim durable process survival;
628
+ * see `control-runtime-engine-integration`.
629
+ *
630
+ * @category layers
631
+ * @since 0.1.0
632
+ */
633
+ export declare const layerMemory: (options?: MemoryOptions) => Layer.Layer<ControlRuntime, never, Crypto.Crypto>;
634
+ export {};
635
+ //# sourceMappingURL=ControlRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlRuntime.d.ts","sourceRoot":"","sources":["../../src/ControlRuntime.ts"],"names":[],"mappings":"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"}