@opendatalabs/personal-server-ts-core 0.0.1-canary.00328bf

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 (573) hide show
  1. package/dist/api/index.d.ts +408 -0
  2. package/dist/api/index.d.ts.map +1 -0
  3. package/dist/api/index.js +1257 -0
  4. package/dist/api/index.js.map +1 -0
  5. package/dist/api/raw-envelope.d.ts +3 -0
  6. package/dist/api/raw-envelope.d.ts.map +1 -0
  7. package/dist/api/raw-envelope.js +215 -0
  8. package/dist/api/raw-envelope.js.map +1 -0
  9. package/dist/auth/index.d.ts +2 -0
  10. package/dist/auth/index.d.ts.map +1 -0
  11. package/dist/auth/index.js +2 -0
  12. package/dist/auth/index.js.map +1 -0
  13. package/dist/auth/request.d.ts +28 -0
  14. package/dist/auth/request.d.ts.map +1 -0
  15. package/dist/auth/request.js +106 -0
  16. package/dist/auth/request.js.map +1 -0
  17. package/dist/client.d.ts +233 -0
  18. package/dist/client.d.ts.map +1 -0
  19. package/dist/client.js +243 -0
  20. package/dist/client.js.map +1 -0
  21. package/dist/config/defaults.d.ts +12 -0
  22. package/dist/config/defaults.d.ts.map +1 -0
  23. package/dist/config/defaults.js +12 -0
  24. package/dist/config/defaults.js.map +1 -0
  25. package/dist/config/index.d.ts +3 -0
  26. package/dist/config/index.d.ts.map +1 -0
  27. package/dist/config/index.js +3 -0
  28. package/dist/config/index.js.map +1 -0
  29. package/dist/config/paths.d.ts +9 -0
  30. package/dist/config/paths.d.ts.map +1 -0
  31. package/dist/config/paths.js +14 -0
  32. package/dist/config/paths.js.map +1 -0
  33. package/dist/contracts/access-logs.d.ts +8 -0
  34. package/dist/contracts/access-logs.d.ts.map +1 -0
  35. package/dist/contracts/access-logs.js +7 -0
  36. package/dist/contracts/access-logs.js.map +1 -0
  37. package/dist/contracts/auth-device.d.ts +70 -0
  38. package/dist/contracts/auth-device.d.ts.map +1 -0
  39. package/dist/contracts/auth-device.js +163 -0
  40. package/dist/contracts/auth-device.js.map +1 -0
  41. package/dist/contracts/binary.d.ts +66 -0
  42. package/dist/contracts/binary.d.ts.map +1 -0
  43. package/dist/contracts/binary.js +123 -0
  44. package/dist/contracts/binary.js.map +1 -0
  45. package/dist/contracts/config.d.ts +5 -0
  46. package/dist/contracts/config.d.ts.map +1 -0
  47. package/dist/contracts/config.js +30 -0
  48. package/dist/contracts/config.js.map +1 -0
  49. package/dist/contracts/data.d.ts +165 -0
  50. package/dist/contracts/data.d.ts.map +1 -0
  51. package/dist/contracts/data.js +371 -0
  52. package/dist/contracts/data.js.map +1 -0
  53. package/dist/contracts/grants.d.ts +45 -0
  54. package/dist/contracts/grants.d.ts.map +1 -0
  55. package/dist/contracts/grants.js +177 -0
  56. package/dist/contracts/grants.js.map +1 -0
  57. package/dist/contracts/http.d.ts +21 -0
  58. package/dist/contracts/http.d.ts.map +1 -0
  59. package/dist/contracts/http.js +49 -0
  60. package/dist/contracts/http.js.map +1 -0
  61. package/dist/contracts/index.d.ts +16 -0
  62. package/dist/contracts/index.d.ts.map +1 -0
  63. package/dist/contracts/index.js +10 -0
  64. package/dist/contracts/index.js.map +1 -0
  65. package/dist/contracts/oauth.d.ts +38 -0
  66. package/dist/contracts/oauth.d.ts.map +1 -0
  67. package/dist/contracts/oauth.js +130 -0
  68. package/dist/contracts/oauth.js.map +1 -0
  69. package/dist/contracts/sync.d.ts +10 -0
  70. package/dist/contracts/sync.d.ts.map +1 -0
  71. package/dist/contracts/sync.js +35 -0
  72. package/dist/contracts/sync.js.map +1 -0
  73. package/dist/derivatives/answer-shape.d.ts +83 -0
  74. package/dist/derivatives/answer-shape.d.ts.map +1 -0
  75. package/dist/derivatives/answer-shape.js +320 -0
  76. package/dist/derivatives/answer-shape.js.map +1 -0
  77. package/dist/derivatives/api.d.ts +48 -0
  78. package/dist/derivatives/api.d.ts.map +1 -0
  79. package/dist/derivatives/api.js +374 -0
  80. package/dist/derivatives/api.js.map +1 -0
  81. package/dist/derivatives/compute.d.ts +112 -0
  82. package/dist/derivatives/compute.d.ts.map +1 -0
  83. package/dist/derivatives/compute.js +476 -0
  84. package/dist/derivatives/compute.js.map +1 -0
  85. package/dist/derivatives/e2ee/aad.d.ts +22 -0
  86. package/dist/derivatives/e2ee/aad.d.ts.map +1 -0
  87. package/dist/derivatives/e2ee/aad.js +32 -0
  88. package/dist/derivatives/e2ee/aad.js.map +1 -0
  89. package/dist/derivatives/e2ee/attestation.d.ts +134 -0
  90. package/dist/derivatives/e2ee/attestation.d.ts.map +1 -0
  91. package/dist/derivatives/e2ee/attestation.js +248 -0
  92. package/dist/derivatives/e2ee/attestation.js.map +1 -0
  93. package/dist/derivatives/e2ee/index.d.ts +6 -0
  94. package/dist/derivatives/e2ee/index.d.ts.map +1 -0
  95. package/dist/derivatives/e2ee/index.js +6 -0
  96. package/dist/derivatives/e2ee/index.js.map +1 -0
  97. package/dist/derivatives/e2ee/jcs.d.ts +17 -0
  98. package/dist/derivatives/e2ee/jcs.d.ts.map +1 -0
  99. package/dist/derivatives/e2ee/jcs.js +55 -0
  100. package/dist/derivatives/e2ee/jcs.js.map +1 -0
  101. package/dist/derivatives/e2ee/phala.d.ts +62 -0
  102. package/dist/derivatives/e2ee/phala.d.ts.map +1 -0
  103. package/dist/derivatives/e2ee/phala.js +168 -0
  104. package/dist/derivatives/e2ee/phala.js.map +1 -0
  105. package/dist/derivatives/e2ee/suite.d.ts +56 -0
  106. package/dist/derivatives/e2ee/suite.d.ts.map +1 -0
  107. package/dist/derivatives/e2ee/suite.js +164 -0
  108. package/dist/derivatives/e2ee/suite.js.map +1 -0
  109. package/dist/derivatives/index.d.ts +11 -0
  110. package/dist/derivatives/index.d.ts.map +1 -0
  111. package/dist/derivatives/index.js +11 -0
  112. package/dist/derivatives/index.js.map +1 -0
  113. package/dist/derivatives/inference.d.ts +151 -0
  114. package/dist/derivatives/inference.d.ts.map +1 -0
  115. package/dist/derivatives/inference.js +262 -0
  116. package/dist/derivatives/inference.js.map +1 -0
  117. package/dist/derivatives/prompt.d.ts +99 -0
  118. package/dist/derivatives/prompt.d.ts.map +1 -0
  119. package/dist/derivatives/prompt.js +281 -0
  120. package/dist/derivatives/prompt.js.map +1 -0
  121. package/dist/derivatives/registration.d.ts +56 -0
  122. package/dist/derivatives/registration.d.ts.map +1 -0
  123. package/dist/derivatives/registration.js +187 -0
  124. package/dist/derivatives/registration.js.map +1 -0
  125. package/dist/derivatives/scheduler.d.ts +114 -0
  126. package/dist/derivatives/scheduler.d.ts.map +1 -0
  127. package/dist/derivatives/scheduler.js +331 -0
  128. package/dist/derivatives/scheduler.js.map +1 -0
  129. package/dist/derivatives/store.d.ts +14 -0
  130. package/dist/derivatives/store.d.ts.map +1 -0
  131. package/dist/derivatives/store.js +79 -0
  132. package/dist/derivatives/store.js.map +1 -0
  133. package/dist/derivatives/types.d.ts +102 -0
  134. package/dist/derivatives/types.d.ts.map +1 -0
  135. package/dist/derivatives/types.js +29 -0
  136. package/dist/derivatives/types.js.map +1 -0
  137. package/dist/errors/catalog.d.ts +125 -0
  138. package/dist/errors/catalog.d.ts.map +1 -0
  139. package/dist/errors/catalog.js +198 -0
  140. package/dist/errors/catalog.js.map +1 -0
  141. package/dist/errors/pdpp-catalog.d.ts +36 -0
  142. package/dist/errors/pdpp-catalog.d.ts.map +1 -0
  143. package/dist/errors/pdpp-catalog.js +82 -0
  144. package/dist/errors/pdpp-catalog.js.map +1 -0
  145. package/dist/grants/index.d.ts +5 -0
  146. package/dist/grants/index.d.ts.map +1 -0
  147. package/dist/grants/index.js +6 -0
  148. package/dist/grants/index.js.map +1 -0
  149. package/dist/grants/pdpp-binding-store.d.ts +58 -0
  150. package/dist/grants/pdpp-binding-store.d.ts.map +1 -0
  151. package/dist/grants/pdpp-binding-store.js +97 -0
  152. package/dist/grants/pdpp-binding-store.js.map +1 -0
  153. package/dist/grants/pdpp-binding.d.ts +179 -0
  154. package/dist/grants/pdpp-binding.d.ts.map +1 -0
  155. package/dist/grants/pdpp-binding.js +214 -0
  156. package/dist/grants/pdpp-binding.js.map +1 -0
  157. package/dist/keys/index.d.ts +3 -0
  158. package/dist/keys/index.d.ts.map +1 -0
  159. package/dist/keys/index.js +2 -0
  160. package/dist/keys/index.js.map +1 -0
  161. package/dist/keys/public-only-account.d.ts +8 -0
  162. package/dist/keys/public-only-account.d.ts.map +1 -0
  163. package/dist/keys/public-only-account.js +21 -0
  164. package/dist/keys/public-only-account.js.map +1 -0
  165. package/dist/keys/server-account.d.ts +24 -0
  166. package/dist/keys/server-account.d.ts.map +1 -0
  167. package/dist/keys/server-account.js +2 -0
  168. package/dist/keys/server-account.js.map +1 -0
  169. package/dist/lineage/attestation.d.ts +42 -0
  170. package/dist/lineage/attestation.d.ts.map +1 -0
  171. package/dist/lineage/attestation.js +25 -0
  172. package/dist/lineage/attestation.js.map +1 -0
  173. package/dist/lineage/gateway.d.ts +105 -0
  174. package/dist/lineage/gateway.d.ts.map +1 -0
  175. package/dist/lineage/gateway.js +242 -0
  176. package/dist/lineage/gateway.js.map +1 -0
  177. package/dist/lineage/index.d.ts +5 -0
  178. package/dist/lineage/index.d.ts.map +1 -0
  179. package/dist/lineage/index.js +5 -0
  180. package/dist/lineage/index.js.map +1 -0
  181. package/dist/lineage/lineage.d.ts +141 -0
  182. package/dist/lineage/lineage.d.ts.map +1 -0
  183. package/dist/lineage/lineage.js +255 -0
  184. package/dist/lineage/lineage.js.map +1 -0
  185. package/dist/logger/index.d.ts +9 -0
  186. package/dist/logger/index.d.ts.map +1 -0
  187. package/dist/logger/index.js +5 -0
  188. package/dist/logger/index.js.map +1 -0
  189. package/dist/logging/access-log.d.ts +23 -0
  190. package/dist/logging/access-log.d.ts.map +1 -0
  191. package/dist/logging/access-log.js +2 -0
  192. package/dist/logging/access-log.js.map +1 -0
  193. package/dist/logging/access-reader.d.ts +14 -0
  194. package/dist/logging/access-reader.d.ts.map +1 -0
  195. package/dist/logging/access-reader.js +2 -0
  196. package/dist/logging/access-reader.js.map +1 -0
  197. package/dist/mcp/activity.d.ts +68 -0
  198. package/dist/mcp/activity.d.ts.map +1 -0
  199. package/dist/mcp/activity.js +111 -0
  200. package/dist/mcp/activity.js.map +1 -0
  201. package/dist/mcp/builder-registration.d.ts +24 -0
  202. package/dist/mcp/builder-registration.d.ts.map +1 -0
  203. package/dist/mcp/builder-registration.js +89 -0
  204. package/dist/mcp/builder-registration.js.map +1 -0
  205. package/dist/mcp/connection-api.d.ts +201 -0
  206. package/dist/mcp/connection-api.d.ts.map +1 -0
  207. package/dist/mcp/connection-api.js +506 -0
  208. package/dist/mcp/connection-api.js.map +1 -0
  209. package/dist/mcp/grantee.d.ts +52 -0
  210. package/dist/mcp/grantee.d.ts.map +1 -0
  211. package/dist/mcp/grantee.js +91 -0
  212. package/dist/mcp/grantee.js.map +1 -0
  213. package/dist/mcp/index.d.ts +12 -0
  214. package/dist/mcp/index.d.ts.map +1 -0
  215. package/dist/mcp/index.js +12 -0
  216. package/dist/mcp/index.js.map +1 -0
  217. package/dist/mcp/read-client.d.ts +176 -0
  218. package/dist/mcp/read-client.d.ts.map +1 -0
  219. package/dist/mcp/read-client.js +579 -0
  220. package/dist/mcp/read-client.js.map +1 -0
  221. package/dist/mcp/resources.d.ts +37 -0
  222. package/dist/mcp/resources.d.ts.map +1 -0
  223. package/dist/mcp/resources.js +114 -0
  224. package/dist/mcp/resources.js.map +1 -0
  225. package/dist/mcp/search/index.d.ts +34 -0
  226. package/dist/mcp/search/index.d.ts.map +1 -0
  227. package/dist/mcp/search/index.js +156 -0
  228. package/dist/mcp/search/index.js.map +1 -0
  229. package/dist/mcp/server.d.ts +72 -0
  230. package/dist/mcp/server.d.ts.map +1 -0
  231. package/dist/mcp/server.js +447 -0
  232. package/dist/mcp/server.js.map +1 -0
  233. package/dist/mcp/session.d.ts +160 -0
  234. package/dist/mcp/session.d.ts.map +1 -0
  235. package/dist/mcp/session.js +243 -0
  236. package/dist/mcp/session.js.map +1 -0
  237. package/dist/mcp/store.d.ts +13 -0
  238. package/dist/mcp/store.d.ts.map +1 -0
  239. package/dist/mcp/store.js +119 -0
  240. package/dist/mcp/store.js.map +1 -0
  241. package/dist/mcp/token-expiry.d.ts +38 -0
  242. package/dist/mcp/token-expiry.d.ts.map +1 -0
  243. package/dist/mcp/token-expiry.js +55 -0
  244. package/dist/mcp/token-expiry.js.map +1 -0
  245. package/dist/mcp/tools.d.ts +95 -0
  246. package/dist/mcp/tools.d.ts.map +1 -0
  247. package/dist/mcp/tools.js +1381 -0
  248. package/dist/mcp/tools.js.map +1 -0
  249. package/dist/mcp/types.d.ts +135 -0
  250. package/dist/mcp/types.d.ts.map +1 -0
  251. package/dist/mcp/types.js +24 -0
  252. package/dist/mcp/types.js.map +1 -0
  253. package/dist/payment/index.d.ts +2 -0
  254. package/dist/payment/index.d.ts.map +1 -0
  255. package/dist/payment/index.js +2 -0
  256. package/dist/payment/index.js.map +1 -0
  257. package/dist/payment/x402.d.ts +155 -0
  258. package/dist/payment/x402.d.ts.map +1 -0
  259. package/dist/payment/x402.js +402 -0
  260. package/dist/payment/x402.js.map +1 -0
  261. package/dist/pdpp/approval.d.ts +182 -0
  262. package/dist/pdpp/approval.d.ts.map +1 -0
  263. package/dist/pdpp/approval.js +337 -0
  264. package/dist/pdpp/approval.js.map +1 -0
  265. package/dist/pdpp/client-identity.d.ts +88 -0
  266. package/dist/pdpp/client-identity.d.ts.map +1 -0
  267. package/dist/pdpp/client-identity.js +183 -0
  268. package/dist/pdpp/client-identity.js.map +1 -0
  269. package/dist/pdpp/client-metadata.d.ts +95 -0
  270. package/dist/pdpp/client-metadata.d.ts.map +1 -0
  271. package/dist/pdpp/client-metadata.js +96 -0
  272. package/dist/pdpp/client-metadata.js.map +1 -0
  273. package/dist/pdpp/declaration.d.ts +118 -0
  274. package/dist/pdpp/declaration.d.ts.map +1 -0
  275. package/dist/pdpp/declaration.js +549 -0
  276. package/dist/pdpp/declaration.js.map +1 -0
  277. package/dist/pdpp/index.d.ts +35 -0
  278. package/dist/pdpp/index.d.ts.map +1 -0
  279. package/dist/pdpp/index.js +22 -0
  280. package/dist/pdpp/index.js.map +1 -0
  281. package/dist/pdpp/issuance.d.ts +91 -0
  282. package/dist/pdpp/issuance.d.ts.map +1 -0
  283. package/dist/pdpp/issuance.js +124 -0
  284. package/dist/pdpp/issuance.js.map +1 -0
  285. package/dist/pdpp/pkce.d.ts +53 -0
  286. package/dist/pdpp/pkce.d.ts.map +1 -0
  287. package/dist/pdpp/pkce.js +109 -0
  288. package/dist/pdpp/pkce.js.map +1 -0
  289. package/dist/pdpp/redirect.d.ts +60 -0
  290. package/dist/pdpp/redirect.d.ts.map +1 -0
  291. package/dist/pdpp/redirect.js +125 -0
  292. package/dist/pdpp/redirect.js.map +1 -0
  293. package/dist/pdpp/resolve.d.ts +53 -0
  294. package/dist/pdpp/resolve.d.ts.map +1 -0
  295. package/dist/pdpp/resolve.js +218 -0
  296. package/dist/pdpp/resolve.js.map +1 -0
  297. package/dist/pdpp/review.d.ts +155 -0
  298. package/dist/pdpp/review.d.ts.map +1 -0
  299. package/dist/pdpp/review.js +142 -0
  300. package/dist/pdpp/review.js.map +1 -0
  301. package/dist/pdpp/selection.d.ts +43 -0
  302. package/dist/pdpp/selection.d.ts.map +1 -0
  303. package/dist/pdpp/selection.js +211 -0
  304. package/dist/pdpp/selection.js.map +1 -0
  305. package/dist/pdpp/store.d.ts +204 -0
  306. package/dist/pdpp/store.d.ts.map +1 -0
  307. package/dist/pdpp/store.js +501 -0
  308. package/dist/pdpp/store.js.map +1 -0
  309. package/dist/pdpp/tokens.d.ts +149 -0
  310. package/dist/pdpp/tokens.d.ts.map +1 -0
  311. package/dist/pdpp/tokens.js +387 -0
  312. package/dist/pdpp/tokens.js.map +1 -0
  313. package/dist/pdpp/types.d.ts +258 -0
  314. package/dist/pdpp/types.d.ts.map +1 -0
  315. package/dist/pdpp/types.js +40 -0
  316. package/dist/pdpp/types.js.map +1 -0
  317. package/dist/pdpp-version.d.ts +28 -0
  318. package/dist/pdpp-version.d.ts.map +1 -0
  319. package/dist/pdpp-version.js +28 -0
  320. package/dist/pdpp-version.js.map +1 -0
  321. package/dist/policy/data-read.d.ts +56 -0
  322. package/dist/policy/data-read.d.ts.map +1 -0
  323. package/dist/policy/data-read.js +176 -0
  324. package/dist/policy/data-read.js.map +1 -0
  325. package/dist/policy/data-write.d.ts +69 -0
  326. package/dist/policy/data-write.d.ts.map +1 -0
  327. package/dist/policy/data-write.js +131 -0
  328. package/dist/policy/data-write.js.map +1 -0
  329. package/dist/policy/index.d.ts +4 -0
  330. package/dist/policy/index.d.ts.map +1 -0
  331. package/dist/policy/index.js +4 -0
  332. package/dist/policy/index.js.map +1 -0
  333. package/dist/policy/signed-artifacts.d.ts +17 -0
  334. package/dist/policy/signed-artifacts.d.ts.map +1 -0
  335. package/dist/policy/signed-artifacts.js +110 -0
  336. package/dist/policy/signed-artifacts.js.map +1 -0
  337. package/dist/ports/index.d.ts +243 -0
  338. package/dist/ports/index.d.ts.map +1 -0
  339. package/dist/ports/index.js +7 -0
  340. package/dist/ports/index.js.map +1 -0
  341. package/dist/ports/pdpp-auth.d.ts +103 -0
  342. package/dist/ports/pdpp-auth.d.ts.map +1 -0
  343. package/dist/ports/pdpp-auth.js +37 -0
  344. package/dist/ports/pdpp-auth.js.map +1 -0
  345. package/dist/ports/pdpp-auth.test-utils.d.ts +9 -0
  346. package/dist/ports/pdpp-auth.test-utils.d.ts.map +1 -0
  347. package/dist/ports/pdpp-auth.test-utils.js +18 -0
  348. package/dist/ports/pdpp-auth.test-utils.js.map +1 -0
  349. package/dist/schemas/server-config.d.ts +190 -0
  350. package/dist/schemas/server-config.d.ts.map +1 -0
  351. package/dist/schemas/server-config.js +282 -0
  352. package/dist/schemas/server-config.js.map +1 -0
  353. package/dist/signing/index.d.ts +3 -0
  354. package/dist/signing/index.d.ts.map +1 -0
  355. package/dist/signing/index.js +3 -0
  356. package/dist/signing/index.js.map +1 -0
  357. package/dist/signing/request-signer.d.ts +20 -0
  358. package/dist/signing/request-signer.d.ts.map +1 -0
  359. package/dist/signing/request-signer.js +23 -0
  360. package/dist/signing/request-signer.js.map +1 -0
  361. package/dist/signing/signer.d.ts +40 -0
  362. package/dist/signing/signer.d.ts.map +1 -0
  363. package/dist/signing/signer.js +56 -0
  364. package/dist/signing/signer.js.map +1 -0
  365. package/dist/storage/adapters/index.d.ts +4 -0
  366. package/dist/storage/adapters/index.d.ts.map +1 -0
  367. package/dist/storage/adapters/index.js +3 -0
  368. package/dist/storage/adapters/index.js.map +1 -0
  369. package/dist/storage/adapters/interface.d.ts +57 -0
  370. package/dist/storage/adapters/interface.d.ts.map +1 -0
  371. package/dist/storage/adapters/interface.js +2 -0
  372. package/dist/storage/adapters/interface.js.map +1 -0
  373. package/dist/storage/adapters/sdk.d.ts +23 -0
  374. package/dist/storage/adapters/sdk.d.ts.map +1 -0
  375. package/dist/storage/adapters/sdk.js +73 -0
  376. package/dist/storage/adapters/sdk.js.map +1 -0
  377. package/dist/storage/adapters/vana.d.ts +12 -0
  378. package/dist/storage/adapters/vana.d.ts.map +1 -0
  379. package/dist/storage/adapters/vana.js +111 -0
  380. package/dist/storage/adapters/vana.js.map +1 -0
  381. package/dist/storage/blocks/build.d.ts +20 -0
  382. package/dist/storage/blocks/build.d.ts.map +1 -0
  383. package/dist/storage/blocks/build.js +378 -0
  384. package/dist/storage/blocks/build.js.map +1 -0
  385. package/dist/storage/blocks/cursor.d.ts +33 -0
  386. package/dist/storage/blocks/cursor.d.ts.map +1 -0
  387. package/dist/storage/blocks/cursor.js +142 -0
  388. package/dist/storage/blocks/cursor.js.map +1 -0
  389. package/dist/storage/blocks/errors.d.ts +6 -0
  390. package/dist/storage/blocks/errors.d.ts.map +1 -0
  391. package/dist/storage/blocks/errors.js +9 -0
  392. package/dist/storage/blocks/errors.js.map +1 -0
  393. package/dist/storage/blocks/index.d.ts +6 -0
  394. package/dist/storage/blocks/index.d.ts.map +1 -0
  395. package/dist/storage/blocks/index.js +5 -0
  396. package/dist/storage/blocks/index.js.map +1 -0
  397. package/dist/storage/blocks/select.d.ts +29 -0
  398. package/dist/storage/blocks/select.d.ts.map +1 -0
  399. package/dist/storage/blocks/select.js +120 -0
  400. package/dist/storage/blocks/select.js.map +1 -0
  401. package/dist/storage/blocks/types.d.ts +56 -0
  402. package/dist/storage/blocks/types.d.ts.map +1 -0
  403. package/dist/storage/blocks/types.js +2 -0
  404. package/dist/storage/blocks/types.js.map +1 -0
  405. package/dist/storage/hierarchy/index.d.ts +3 -0
  406. package/dist/storage/hierarchy/index.d.ts.map +1 -0
  407. package/dist/storage/hierarchy/index.js +2 -0
  408. package/dist/storage/hierarchy/index.js.map +1 -0
  409. package/dist/storage/hierarchy/manager.d.ts +9 -0
  410. package/dist/storage/hierarchy/manager.d.ts.map +1 -0
  411. package/dist/storage/hierarchy/manager.js +2 -0
  412. package/dist/storage/hierarchy/manager.js.map +1 -0
  413. package/dist/storage/hierarchy/paths.d.ts +11 -0
  414. package/dist/storage/hierarchy/paths.d.ts.map +1 -0
  415. package/dist/storage/hierarchy/paths.js +43 -0
  416. package/dist/storage/hierarchy/paths.js.map +1 -0
  417. package/dist/storage/index/index.d.ts +3 -0
  418. package/dist/storage/index/index.d.ts.map +1 -0
  419. package/dist/storage/index/index.js +2 -0
  420. package/dist/storage/index/index.js.map +1 -0
  421. package/dist/storage/index/manager.d.ts +63 -0
  422. package/dist/storage/index/manager.d.ts.map +1 -0
  423. package/dist/storage/index/manager.js +2 -0
  424. package/dist/storage/index/manager.js.map +1 -0
  425. package/dist/storage/index/schema.d.ts +2 -0
  426. package/dist/storage/index/schema.d.ts.map +1 -0
  427. package/dist/storage/index/schema.js +2 -0
  428. package/dist/storage/index/schema.js.map +1 -0
  429. package/dist/storage/index/types.d.ts +37 -0
  430. package/dist/storage/index/types.d.ts.map +1 -0
  431. package/dist/storage/index/types.js +2 -0
  432. package/dist/storage/index/types.js.map +1 -0
  433. package/dist/storage/pdpp-records/cursor.d.ts +27 -0
  434. package/dist/storage/pdpp-records/cursor.d.ts.map +1 -0
  435. package/dist/storage/pdpp-records/cursor.js +49 -0
  436. package/dist/storage/pdpp-records/cursor.js.map +1 -0
  437. package/dist/storage/pdpp-records/enforcement.d.ts +37 -0
  438. package/dist/storage/pdpp-records/enforcement.d.ts.map +1 -0
  439. package/dist/storage/pdpp-records/enforcement.js +79 -0
  440. package/dist/storage/pdpp-records/enforcement.js.map +1 -0
  441. package/dist/storage/pdpp-records/index.d.ts +8 -0
  442. package/dist/storage/pdpp-records/index.d.ts.map +1 -0
  443. package/dist/storage/pdpp-records/index.js +8 -0
  444. package/dist/storage/pdpp-records/index.js.map +1 -0
  445. package/dist/storage/pdpp-records/interface.d.ts +49 -0
  446. package/dist/storage/pdpp-records/interface.d.ts.map +1 -0
  447. package/dist/storage/pdpp-records/interface.js +2 -0
  448. package/dist/storage/pdpp-records/interface.js.map +1 -0
  449. package/dist/storage/pdpp-records/memory-store.d.ts +9 -0
  450. package/dist/storage/pdpp-records/memory-store.d.ts.map +1 -0
  451. package/dist/storage/pdpp-records/memory-store.js +0 -0
  452. package/dist/storage/pdpp-records/memory-store.js.map +1 -0
  453. package/dist/storage/pdpp-records/record-key.d.ts +52 -0
  454. package/dist/storage/pdpp-records/record-key.d.ts.map +1 -0
  455. package/dist/storage/pdpp-records/record-key.js +97 -0
  456. package/dist/storage/pdpp-records/record-key.js.map +1 -0
  457. package/dist/storage/pdpp-records/stream-declaration.d.ts +43 -0
  458. package/dist/storage/pdpp-records/stream-declaration.d.ts.map +1 -0
  459. package/dist/storage/pdpp-records/stream-declaration.js +17 -0
  460. package/dist/storage/pdpp-records/stream-declaration.js.map +1 -0
  461. package/dist/storage/pdpp-records/types.d.ts +93 -0
  462. package/dist/storage/pdpp-records/types.d.ts.map +1 -0
  463. package/dist/storage/pdpp-records/types.js +17 -0
  464. package/dist/storage/pdpp-records/types.js.map +1 -0
  465. package/dist/storage/preview.d.ts +12 -0
  466. package/dist/storage/preview.d.ts.map +1 -0
  467. package/dist/storage/preview.js +239 -0
  468. package/dist/storage/preview.js.map +1 -0
  469. package/dist/sync/cursor.d.ts +10 -0
  470. package/dist/sync/cursor.d.ts.map +1 -0
  471. package/dist/sync/cursor.js +2 -0
  472. package/dist/sync/cursor.js.map +1 -0
  473. package/dist/sync/data-point-feed.d.ts +35 -0
  474. package/dist/sync/data-point-feed.d.ts.map +1 -0
  475. package/dist/sync/data-point-feed.js +122 -0
  476. package/dist/sync/data-point-feed.js.map +1 -0
  477. package/dist/sync/data-point-id.d.ts +7 -0
  478. package/dist/sync/data-point-id.d.ts.map +1 -0
  479. package/dist/sync/data-point-id.js +16 -0
  480. package/dist/sync/data-point-id.js.map +1 -0
  481. package/dist/sync/delete-data-port.d.ts +50 -0
  482. package/dist/sync/delete-data-port.d.ts.map +1 -0
  483. package/dist/sync/delete-data-port.js +244 -0
  484. package/dist/sync/delete-data-port.js.map +1 -0
  485. package/dist/sync/engine/sync-manager.d.ts +58 -0
  486. package/dist/sync/engine/sync-manager.d.ts.map +1 -0
  487. package/dist/sync/engine/sync-manager.js +285 -0
  488. package/dist/sync/engine/sync-manager.js.map +1 -0
  489. package/dist/sync/index.d.ts +15 -0
  490. package/dist/sync/index.d.ts.map +1 -0
  491. package/dist/sync/index.js +14 -0
  492. package/dist/sync/index.js.map +1 -0
  493. package/dist/sync/issues.d.ts +55 -0
  494. package/dist/sync/issues.d.ts.map +1 -0
  495. package/dist/sync/issues.js +168 -0
  496. package/dist/sync/issues.js.map +1 -0
  497. package/dist/sync/pdpp-import.d.ts +192 -0
  498. package/dist/sync/pdpp-import.d.ts.map +1 -0
  499. package/dist/sync/pdpp-import.js +422 -0
  500. package/dist/sync/pdpp-import.js.map +1 -0
  501. package/dist/sync/pending-blob-deletions.d.ts +29 -0
  502. package/dist/sync/pending-blob-deletions.d.ts.map +1 -0
  503. package/dist/sync/pending-blob-deletions.js +116 -0
  504. package/dist/sync/pending-blob-deletions.js.map +1 -0
  505. package/dist/sync/retry-memory.d.ts +33 -0
  506. package/dist/sync/retry-memory.d.ts.map +1 -0
  507. package/dist/sync/retry-memory.js +68 -0
  508. package/dist/sync/retry-memory.js.map +1 -0
  509. package/dist/sync/scope-deletions.d.ts +155 -0
  510. package/dist/sync/scope-deletions.d.ts.map +1 -0
  511. package/dist/sync/scope-deletions.js +225 -0
  512. package/dist/sync/scope-deletions.js.map +1 -0
  513. package/dist/sync/tombstone.d.ts +27 -0
  514. package/dist/sync/tombstone.d.ts.map +1 -0
  515. package/dist/sync/tombstone.js +28 -0
  516. package/dist/sync/tombstone.js.map +1 -0
  517. package/dist/sync/types.d.ts +27 -0
  518. package/dist/sync/types.d.ts.map +1 -0
  519. package/dist/sync/types.js +2 -0
  520. package/dist/sync/types.js.map +1 -0
  521. package/dist/sync/workers/delete.d.ts +163 -0
  522. package/dist/sync/workers/delete.d.ts.map +1 -0
  523. package/dist/sync/workers/delete.js +474 -0
  524. package/dist/sync/workers/delete.js.map +1 -0
  525. package/dist/sync/workers/download.d.ts +159 -0
  526. package/dist/sync/workers/download.d.ts.map +1 -0
  527. package/dist/sync/workers/download.js +731 -0
  528. package/dist/sync/workers/download.js.map +1 -0
  529. package/dist/sync/workers/upload.d.ts +98 -0
  530. package/dist/sync/workers/upload.d.ts.map +1 -0
  531. package/dist/sync/workers/upload.js +412 -0
  532. package/dist/sync/workers/upload.js.map +1 -0
  533. package/dist/test-utils/e2ee-fixtures.d.ts +94 -0
  534. package/dist/test-utils/e2ee-fixtures.d.ts.map +1 -0
  535. package/dist/test-utils/e2ee-fixtures.js +116 -0
  536. package/dist/test-utils/e2ee-fixtures.js.map +1 -0
  537. package/dist/test-utils/e2ee-gateway.d.ts +61 -0
  538. package/dist/test-utils/e2ee-gateway.d.ts.map +1 -0
  539. package/dist/test-utils/e2ee-gateway.js +248 -0
  540. package/dist/test-utils/e2ee-gateway.js.map +1 -0
  541. package/dist/test-utils/index.d.ts +5 -0
  542. package/dist/test-utils/index.d.ts.map +1 -0
  543. package/dist/test-utils/index.js +5 -0
  544. package/dist/test-utils/index.js.map +1 -0
  545. package/dist/test-utils/memory-storage.d.ts +12 -0
  546. package/dist/test-utils/memory-storage.d.ts.map +1 -0
  547. package/dist/test-utils/memory-storage.js +146 -0
  548. package/dist/test-utils/memory-storage.js.map +1 -0
  549. package/dist/test-utils/wallet.d.ts +47 -0
  550. package/dist/test-utils/wallet.d.ts.map +1 -0
  551. package/dist/test-utils/wallet.js +98 -0
  552. package/dist/test-utils/wallet.js.map +1 -0
  553. package/dist/write/attribution.d.ts +185 -0
  554. package/dist/write/attribution.d.ts.map +1 -0
  555. package/dist/write/attribution.js +450 -0
  556. package/dist/write/attribution.js.map +1 -0
  557. package/dist/write/authorize.d.ts +77 -0
  558. package/dist/write/authorize.d.ts.map +1 -0
  559. package/dist/write/authorize.js +109 -0
  560. package/dist/write/authorize.js.map +1 -0
  561. package/dist/write/index.d.ts +5 -0
  562. package/dist/write/index.d.ts.map +1 -0
  563. package/dist/write/index.js +5 -0
  564. package/dist/write/index.js.map +1 -0
  565. package/dist/write/route.d.ts +61 -0
  566. package/dist/write/route.d.ts.map +1 -0
  567. package/dist/write/route.js +132 -0
  568. package/dist/write/route.js.map +1 -0
  569. package/dist/write/session.d.ts +96 -0
  570. package/dist/write/session.d.ts.map +1 -0
  571. package/dist/write/session.js +136 -0
  572. package/dist/write/session.js.map +1 -0
  573. package/package.json +175 -0
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Recompute scheduler: marks registrations stale when one of their source
3
+ * scopes changes and runs the compute when someone actually asks for the
4
+ * answer, one in flight per question. Timers and the clock are injectable
5
+ * so tests drive it deterministically.
6
+ *
7
+ * Compute is just-in-time, not preemptive. A source refresh only marks the
8
+ * answer stale; the recompute happens on the next authorized demand (a read
9
+ * of the derived scope, the reader-facing status route, or an explicit
10
+ * `POST /questions/:id/recompute`). Otherwise the inference bill would
11
+ * scale with how often the owner's sources refresh rather than with how
12
+ * often anyone reads the answer.
13
+ */
14
+ import { computeDataPointId } from "../sync/data-point-id.js";
15
+ const DEFAULT_RETRY_DELAYS_MS = [60_000, 300_000, 1_800_000];
16
+ /**
17
+ * Structural check on the compute callback's resolved value: retry is only
18
+ * for a failed outcome whose stored class is the one transient kind. A
19
+ * callback that resolves anything else (older wiring, tests) never retries.
20
+ */
21
+ /**
22
+ * A compute skipped because the runtime is unavailable (PS-Lite with the
23
+ * hosting tab inactive). During a retry chain this must not end the chain:
24
+ * nothing else would ever reschedule a failed question.
25
+ */
26
+ function isRuntimeSkipOutcome(outcome) {
27
+ if (typeof outcome !== "object" || outcome === null)
28
+ return false;
29
+ const shaped = outcome;
30
+ return shaped.status === "skipped" && shaped.reason === "runtime-unavailable";
31
+ }
32
+ function isTransientFailureOutcome(outcome) {
33
+ if (typeof outcome !== "object" || outcome === null)
34
+ return false;
35
+ const shaped = outcome;
36
+ return (shaped.status === "failed" &&
37
+ shaped.registration?.errorCode === "inference_unavailable");
38
+ }
39
+ const defaultTimers = {
40
+ setTimeout: (callback, ms) => setTimeout(callback, ms),
41
+ clearTimeout: (handle) => clearTimeout(handle),
42
+ };
43
+ export function createRecomputeScheduler(options) {
44
+ const debounceMs = options.debounceMs ?? 5_000;
45
+ const retryDelaysMs = options.retryDelaysMs ?? DEFAULT_RETRY_DELAYS_MS;
46
+ const timers = options.timers ?? defaultTimers;
47
+ const now = options.now ?? (() => new Date());
48
+ const states = new Map();
49
+ const pending = new Set();
50
+ let stopped = false;
51
+ // Distinguishes the first start() (which must reschedule) from a
52
+ // redundant one while already running (which must not).
53
+ let started = false;
54
+ function track(promise) {
55
+ pending.add(promise);
56
+ const done = () => pending.delete(promise);
57
+ promise.then(done, done);
58
+ return promise;
59
+ }
60
+ function warn(payload, message) {
61
+ options.logger?.warn?.(payload, message);
62
+ }
63
+ function stateFor(questionId) {
64
+ let state = states.get(questionId);
65
+ if (!state) {
66
+ state = {
67
+ timer: null,
68
+ running: null,
69
+ rerun: false,
70
+ retryAttempts: 0,
71
+ retryAtMs: null,
72
+ retryScheduled: false,
73
+ retryRunning: false,
74
+ sourceChangedDuringRun: false,
75
+ };
76
+ states.set(questionId, state);
77
+ }
78
+ return state;
79
+ }
80
+ function run(questionId) {
81
+ if (stopped)
82
+ return;
83
+ const state = stateFor(questionId);
84
+ if (state.running) {
85
+ // One in flight per question; a change during the run means the
86
+ // result is already stale, so run once more when it finishes.
87
+ state.rerun = true;
88
+ return;
89
+ }
90
+ state.running = track(Promise.resolve()
91
+ .then(() => options.compute(questionId))
92
+ .then((outcome) => outcome, (err) => {
93
+ warn({
94
+ questionId,
95
+ error: err instanceof Error ? err.name : String(err),
96
+ }, "Derivative compute threw");
97
+ return undefined;
98
+ })
99
+ .then(async (outcome) => {
100
+ state.running = null;
101
+ state.retryAtMs = null;
102
+ state.retryRunning = false;
103
+ // Consumed here whichever branch wins: a rerun and a retry both
104
+ // recompute from current data, so only the branch that schedules
105
+ // nothing has to put the question back to `stale`.
106
+ const sourceChangedDuringRun = state.sourceChangedDuringRun;
107
+ state.sourceChangedDuringRun = false;
108
+ const retryable = isTransientFailureOutcome(outcome) ||
109
+ // A runtime-unavailable skip DURING a chain consumes an attempt
110
+ // instead of ending the chain; on a fresh compute it keeps the
111
+ // pre-retry behavior (pending/stale, reswept by start()).
112
+ (isRuntimeSkipOutcome(outcome) && state.retryAttempts > 0);
113
+ if (state.rerun) {
114
+ // A source changed during the run: that supersedes any retry.
115
+ state.rerun = false;
116
+ state.retryAttempts = 0;
117
+ await markStale(questionId);
118
+ schedule(questionId, 0);
119
+ }
120
+ else if (retryable &&
121
+ // A pending timer means a source change or explicit recompute
122
+ // arrived during the run and already scheduled a fresher run;
123
+ // replacing its 5s debounce with a 60s retry would delay the
124
+ // recompute of data this compute never saw.
125
+ state.timer === null &&
126
+ // After stop() nothing may be scheduled; without this a compute
127
+ // that settles late would record a retryAtMs no timer backs.
128
+ !stopped &&
129
+ state.retryAttempts < retryDelaysMs.length) {
130
+ const delayMs = retryDelaysMs[state.retryAttempts];
131
+ state.retryAttempts += 1;
132
+ state.retryAtMs = now().getTime() + delayMs;
133
+ schedule(questionId, delayMs);
134
+ state.retryScheduled = true;
135
+ }
136
+ else {
137
+ state.retryAttempts = 0;
138
+ if (sourceChangedDuringRun) {
139
+ // Fresh data landed while this compute was reading, so the
140
+ // answer it just wrote is already behind. Say so — and
141
+ // schedule nothing: the next reader triggers the recompute.
142
+ await markStale(questionId);
143
+ }
144
+ if (!states.get(questionId)?.timer) {
145
+ states.delete(questionId);
146
+ }
147
+ }
148
+ }));
149
+ }
150
+ function schedule(questionId, delayMs) {
151
+ if (stopped)
152
+ return;
153
+ const state = stateFor(questionId);
154
+ if (state.timer !== null)
155
+ timers.clearTimeout(state.timer);
156
+ state.timer = timers.setTimeout(() => {
157
+ state.timer = null;
158
+ // Whatever this timer was (debounce or retry), any promised retry is
159
+ // now being consumed: a past retryAtMs would pin the status route's
160
+ // retryAfterSeconds at 0 for the whole in-flight compute. A firing
161
+ // RETRY timer hands over to retryRunning so the in-flight window is
162
+ // still distinguishable from a terminal failure.
163
+ state.retryAtMs = null;
164
+ state.retryRunning = state.retryScheduled;
165
+ state.retryScheduled = false;
166
+ run(questionId);
167
+ }, delayMs);
168
+ }
169
+ /**
170
+ * Run this question because someone asked for its answer. Idempotent by
171
+ * design: a compute already in flight or already timed is the compute the
172
+ * demand wants, so concurrent readers collapse into one run. A pending
173
+ * RETRY timer is the exception — its backoff is a fallback for nobody
174
+ * asking, and a reader is asking now — so demand pulls it forward,
175
+ * keeping the attempt count (an exhausting chain stays bounded).
176
+ */
177
+ function scheduleDemand(questionId) {
178
+ const state = stateFor(questionId);
179
+ if (state.running !== null)
180
+ return;
181
+ if (state.timer !== null && !state.retryScheduled)
182
+ return;
183
+ schedule(questionId, 0);
184
+ state.retryScheduled = false;
185
+ }
186
+ async function markStale(questionId) {
187
+ const registration = await options.store.get(questionId);
188
+ if (!registration)
189
+ return;
190
+ if (registration.status === "ready" || registration.status === "failed") {
191
+ await options.store.update(questionId, {
192
+ status: "stale",
193
+ // The reader contract says errorCode is null unless failed; a stale
194
+ // question is a recompute in progress, not a terminal failure.
195
+ errorCode: null,
196
+ updatedAt: now().toISOString(),
197
+ });
198
+ }
199
+ }
200
+ function resetRetry(questionId) {
201
+ const state = states.get(questionId);
202
+ if (!state)
203
+ return;
204
+ state.retryAttempts = 0;
205
+ state.retryAtMs = null;
206
+ state.retryScheduled = false;
207
+ }
208
+ return {
209
+ nextRetryAt(questionId) {
210
+ const retryAtMs = states.get(questionId)?.retryAtMs;
211
+ return retryAtMs == null ? null : new Date(retryAtMs).toISOString();
212
+ },
213
+ retryInFlight(questionId) {
214
+ return states.get(questionId)?.retryRunning ?? false;
215
+ },
216
+ markSourceChanged(scope, opts) {
217
+ if (stopped)
218
+ return;
219
+ const lineage = new Set((opts?.lineageSources ?? []).map((id) => id.toLowerCase()));
220
+ void track((async () => {
221
+ const affected = await options.store.list({ sourceScope: scope });
222
+ for (const registration of affected) {
223
+ if (registration.recompute === "snapshot") {
224
+ // A snapshot question computes at registration and on an
225
+ // explicit recompute only; source changes never touch it.
226
+ continue;
227
+ }
228
+ if (options.serverOwner &&
229
+ lineage.has(computeDataPointId(options.serverOwner, registration.derivedScope))) {
230
+ // The new version descends from this question's own output.
231
+ continue;
232
+ }
233
+ // A change lands on a question whose compute is in flight: that
234
+ // compute never saw the new data, so its result must not settle
235
+ // as `ready`. Read the flag before and after the store write —
236
+ // the run can finish inside that await.
237
+ const state = states.get(registration.questionId);
238
+ const runningBefore = state?.running != null;
239
+ await markStale(registration.questionId);
240
+ if (state && (runningBefore || state.running !== null)) {
241
+ state.sourceChangedDuringRun = true;
242
+ }
243
+ // Nothing is scheduled: the recompute is owed, not started. Any
244
+ // retry timer the question already carries stays as it is; the
245
+ // retry recomputes from current data anyway.
246
+ }
247
+ })().catch((err) => warn({ scope, error: err instanceof Error ? err.name : String(err) }, "Could not mark derivative questions stale")));
248
+ },
249
+ markDemand(derivedScope) {
250
+ if (stopped)
251
+ return;
252
+ void track((async () => {
253
+ const affected = await options.store.list({ derivedScope });
254
+ for (const registration of affected) {
255
+ if (registration.recompute === "snapshot") {
256
+ // A snapshot answers from the version it computed at
257
+ // registration; only an explicit recompute replaces it.
258
+ continue;
259
+ }
260
+ if (registration.status !== "stale" &&
261
+ registration.status !== "pending") {
262
+ // `ready` has nothing to compute, and `failed` belongs to its
263
+ // backoff chain or to an explicit recompute: a reader polling
264
+ // a question that keeps failing must not spend an inference
265
+ // call per poll.
266
+ continue;
267
+ }
268
+ scheduleDemand(registration.questionId);
269
+ }
270
+ })().catch((err) => warn({
271
+ derivedScope,
272
+ error: err instanceof Error ? err.name : String(err),
273
+ }, "Could not schedule derivative questions on demand")));
274
+ },
275
+ requestRecompute(questionId, opts) {
276
+ if (stopped)
277
+ return;
278
+ void track(markStale(questionId)
279
+ .catch((err) => warn({
280
+ questionId,
281
+ error: err instanceof Error ? err.name : String(err),
282
+ }, "Could not mark derivative question stale"))
283
+ .then(() => {
284
+ resetRetry(questionId);
285
+ schedule(questionId, opts?.immediate ? 0 : debounceMs);
286
+ }));
287
+ },
288
+ async whenIdle() {
289
+ // Waits for store lookups and in-flight computes. Real timers are
290
+ // polled too; injected timers are the caller's to fire.
291
+ const waitForTimers = !options.timers;
292
+ for (;;) {
293
+ while (pending.size > 0) {
294
+ await Promise.allSettled([...pending]);
295
+ }
296
+ const busy = [...states.values()].some((state) => state.running !== null || (waitForTimers && state.timer !== null));
297
+ if (!busy)
298
+ return;
299
+ await new Promise((resolve) => setTimeout(resolve, 5));
300
+ }
301
+ },
302
+ stop() {
303
+ stopped = true;
304
+ for (const state of states.values()) {
305
+ if (state.timer !== null)
306
+ timers.clearTimeout(state.timer);
307
+ state.timer = null;
308
+ state.retryAttempts = 0;
309
+ state.retryAtMs = null;
310
+ state.retryScheduled = false;
311
+ }
312
+ },
313
+ start() {
314
+ if (started && !stopped)
315
+ return;
316
+ started = true;
317
+ stopped = false;
318
+ void track((async () => {
319
+ for (const registration of await options.store.list()) {
320
+ // Only never-answered questions. A `stale` one has a previous
321
+ // version to serve and is recomputed on demand, so a restart
322
+ // costs nothing.
323
+ if (registration.status === "pending") {
324
+ schedule(registration.questionId, 0);
325
+ }
326
+ }
327
+ })().catch((err) => warn({ error: err instanceof Error ? err.name : String(err) }, "Could not reschedule derivative questions")));
328
+ },
329
+ };
330
+ }
331
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/derivatives/scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { QuestionRegistration, QuestionStore, QuestionStoreListFilter } from "./types.js";
2
+ export declare function matchesQuestionFilter(registration: QuestionRegistration, filter: QuestionStoreListFilter | undefined): boolean;
3
+ /** Oldest first, the order every store lists in. */
4
+ export declare function sortQuestions(registrations: QuestionRegistration[]): QuestionRegistration[];
5
+ /**
6
+ * Map-backed store. The PS-Lite store wraps it with persistence; tests use
7
+ * it as is.
8
+ */
9
+ export declare function createInMemoryQuestionStore(options?: {
10
+ /** Called after every mutation with the full current list. */
11
+ onChange?: (registrations: QuestionRegistration[]) => Promise<void>;
12
+ initial?: QuestionRegistration[];
13
+ }): QuestionStore;
14
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/derivatives/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EAEpB,aAAa,EACb,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAapB,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,oBAAoB,EAClC,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAC1C,OAAO,CAkBT;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAC3B,aAAa,EAAE,oBAAoB,EAAE,GACpC,oBAAoB,EAAE,CAMxB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,GAAE;IACP,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7B,GACL,aAAa,CA4Cf"}
@@ -0,0 +1,79 @@
1
+ import { cloneAnswerShape } from "./answer-shape.js";
2
+ function clone(registration) {
3
+ return {
4
+ ...registration,
5
+ // Registrations persisted before the field existed load as null.
6
+ errorCode: registration.errorCode ?? null,
7
+ answerShape: cloneAnswerShape(registration.answerShape ?? null),
8
+ sourceScopes: [...registration.sourceScopes],
9
+ registeredBy: { ...registration.registeredBy },
10
+ };
11
+ }
12
+ export function matchesQuestionFilter(registration, filter) {
13
+ if (!filter)
14
+ return true;
15
+ if (filter.derivedScope && registration.derivedScope !== filter.derivedScope)
16
+ return false;
17
+ if (filter.sourceScope &&
18
+ !registration.sourceScopes.includes(filter.sourceScope))
19
+ return false;
20
+ if (filter.builder) {
21
+ const by = registration.registeredBy;
22
+ if (by.kind !== "builder" ||
23
+ by.builder.toLowerCase() !== filter.builder.toLowerCase())
24
+ return false;
25
+ }
26
+ return true;
27
+ }
28
+ /** Oldest first, the order every store lists in. */
29
+ export function sortQuestions(registrations) {
30
+ return [...registrations].sort((a, b) => a.createdAt.localeCompare(b.createdAt) ||
31
+ a.questionId.localeCompare(b.questionId));
32
+ }
33
+ /**
34
+ * Map-backed store. The PS-Lite store wraps it with persistence; tests use
35
+ * it as is.
36
+ */
37
+ export function createInMemoryQuestionStore(options = {}) {
38
+ const byId = new Map();
39
+ for (const registration of options.initial ?? []) {
40
+ byId.set(registration.questionId, clone(registration));
41
+ }
42
+ async function changed() {
43
+ if (!options.onChange)
44
+ return;
45
+ await options.onChange(sortQuestions([...byId.values()]).map(clone));
46
+ }
47
+ return {
48
+ async list(filter) {
49
+ return sortQuestions([...byId.values()].filter((registration) => matchesQuestionFilter(registration, filter))).map(clone);
50
+ },
51
+ async get(questionId) {
52
+ const registration = byId.get(questionId);
53
+ return registration ? clone(registration) : null;
54
+ },
55
+ async insert(registration) {
56
+ if (byId.has(registration.questionId)) {
57
+ throw new Error(`Question ${registration.questionId} is already registered`);
58
+ }
59
+ byId.set(registration.questionId, clone(registration));
60
+ await changed();
61
+ },
62
+ async update(questionId, patch) {
63
+ const current = byId.get(questionId);
64
+ if (!current)
65
+ return null;
66
+ const next = { ...current, ...patch };
67
+ byId.set(questionId, next);
68
+ await changed();
69
+ return clone(next);
70
+ },
71
+ async delete(questionId) {
72
+ const existed = byId.delete(questionId);
73
+ if (existed)
74
+ await changed();
75
+ return existed;
76
+ },
77
+ };
78
+ }
79
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/derivatives/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Derivative compute layer: a builder registers a QUESTION over the owner's
3
+ * source scopes; the Personal Server answers it locally with an inference
4
+ * provider and writes the answer as an ordinary derivative record (lineage
5
+ * = the source data points) into the derived scope. See
6
+ * docs/derivative-data-api.md, "Compute (question to derivative)".
7
+ */
8
+ import { type AnswerShape } from "./answer-shape.js";
9
+ export type QuestionStatus = "pending" | "ready" | "failed" | "stale";
10
+ /**
11
+ * When the answer recomputes: "on-change" (the default) goes stale on every
12
+ * source change and recomputes on the next authorized demand for the answer;
13
+ * "snapshot" computes at registration and afterwards only on an explicit
14
+ * POST /questions/:id/recompute. Two values, and only these two: the SDK
15
+ * validates the field against them, so the meaning of "on-change" moves
16
+ * rather than the vocabulary.
17
+ */
18
+ export type QuestionRecompute = "snapshot" | "on-change";
19
+ /**
20
+ * Closed vocabulary for the machine-readable failure class. Deliberately
21
+ * coarse: it is served to readers of the derived scope through the status
22
+ * route, so it must never carry a scope name, the question or provider
23
+ * detail. `inference_unavailable` is the one transient class (the scheduler
24
+ * retries it); everything else stays failed until a source change or an
25
+ * explicit recompute.
26
+ */
27
+ export type QuestionErrorCode = "inference_unavailable" | "source_missing" | "grant_invalid" | "internal";
28
+ /** Who registered the question; a builder is bound to the write grant. */
29
+ export type QuestionRegisteredBy = {
30
+ kind: "owner";
31
+ } | {
32
+ kind: "builder";
33
+ builder: `0x${string}`;
34
+ grantId: string;
35
+ };
36
+ export interface QuestionRegistration {
37
+ questionId: string;
38
+ derivedScope: string;
39
+ sourceScopes: string[];
40
+ /** The prompt template text (the builder's question). */
41
+ question: string;
42
+ /** Model override; null = the provider's default. */
43
+ model: string | null;
44
+ /**
45
+ * The declared shape of the answer, enforced at compute time; null = the
46
+ * free-text answer (the original behavior).
47
+ */
48
+ answerShape: AnswerShape | null;
49
+ recompute: QuestionRecompute;
50
+ registeredBy: QuestionRegisteredBy;
51
+ status: QuestionStatus;
52
+ /** Short failure reason (never the prompt or the data). Null unless failed. */
53
+ error: string | null;
54
+ /** Machine-readable failure class; null unless failed. */
55
+ errorCode: QuestionErrorCode | null;
56
+ createdAt: string;
57
+ updatedAt: string;
58
+ lastComputedAt: string | null;
59
+ /** Local index version of the derived record the last compute wrote. */
60
+ derivedVersion: number | null;
61
+ derivedCollectedAt: string | null;
62
+ }
63
+ export type QuestionRegistrationPatch = Partial<Pick<QuestionRegistration, "status" | "error" | "errorCode" | "updatedAt" | "lastComputedAt" | "derivedVersion" | "derivedCollectedAt">>;
64
+ export interface QuestionStoreListFilter {
65
+ derivedScope?: string;
66
+ sourceScope?: string;
67
+ builder?: `0x${string}`;
68
+ }
69
+ /**
70
+ * Persistence for question registrations. Small and local: registrations
71
+ * never sync (the replica that holds them computes them). Implementations:
72
+ * sqlite (server), a state-store backed map (PS-Lite), in-memory (tests).
73
+ */
74
+ export interface QuestionStore {
75
+ list(filter?: QuestionStoreListFilter): Promise<QuestionRegistration[]>;
76
+ get(questionId: string): Promise<QuestionRegistration | null>;
77
+ insert(registration: QuestionRegistration): Promise<void>;
78
+ /** Returns the updated row, or null when the id is unknown. */
79
+ update(questionId: string, patch: QuestionRegistrationPatch): Promise<QuestionRegistration | null>;
80
+ delete(questionId: string): Promise<boolean>;
81
+ }
82
+ /** Public JSON shape of a registration (GET / list / POST responses). */
83
+ export interface QuestionRegistrationView {
84
+ questionId: string;
85
+ derivedScope: string;
86
+ sourceScopes: string[];
87
+ question: string;
88
+ model: string | null;
89
+ answerShape: AnswerShape | null;
90
+ recompute: QuestionRecompute;
91
+ registeredBy: QuestionRegisteredBy;
92
+ status: QuestionStatus;
93
+ error: string | null;
94
+ errorCode: QuestionErrorCode | null;
95
+ createdAt: string;
96
+ updatedAt: string;
97
+ lastComputedAt: string | null;
98
+ derivedVersion: number | null;
99
+ derivedCollectedAt: string | null;
100
+ }
101
+ export declare function questionRegistrationView(registration: QuestionRegistration): QuestionRegistrationView;
102
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/derivatives/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Derivative compute layer: a builder registers a QUESTION over the owner's
3
+ * source scopes; the Personal Server answers it locally with an inference
4
+ * provider and writes the answer as an ordinary derivative record (lineage
5
+ * = the source data points) into the derived scope. See
6
+ * docs/derivative-data-api.md, "Compute (question to derivative)".
7
+ */
8
+ import { cloneAnswerShape } from "./answer-shape.js";
9
+ export function questionRegistrationView(registration) {
10
+ return {
11
+ questionId: registration.questionId,
12
+ derivedScope: registration.derivedScope,
13
+ sourceScopes: [...registration.sourceScopes],
14
+ question: registration.question,
15
+ model: registration.model,
16
+ answerShape: cloneAnswerShape(registration.answerShape),
17
+ recompute: registration.recompute,
18
+ registeredBy: registration.registeredBy,
19
+ status: registration.status,
20
+ error: registration.error,
21
+ errorCode: registration.errorCode,
22
+ createdAt: registration.createdAt,
23
+ updatedAt: registration.updatedAt,
24
+ lastComputedAt: registration.lastComputedAt,
25
+ derivedVersion: registration.derivedVersion,
26
+ derivedCollectedAt: registration.derivedCollectedAt,
27
+ };
28
+ }
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/derivatives/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAC;AAkHvE,MAAM,UAAU,wBAAwB,CACtC,YAAkC;IAElC,OAAO;QACL,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC;QAC5C,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,WAAW,EAAE,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC;QACvD,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;KACpD,CAAC;AACJ,CAAC"}