@opendatalabs/personal-server-ts-core 1.34.1 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/dist/additions/durable.d.ts +32 -2
  2. package/dist/additions/durable.d.ts.map +1 -1
  3. package/dist/additions/durable.js +237 -88
  4. package/dist/additions/durable.js.map +1 -1
  5. package/dist/additions/version-inventory.d.ts +4 -0
  6. package/dist/additions/version-inventory.d.ts.map +1 -1
  7. package/dist/additions/version-inventory.js +11 -1
  8. package/dist/additions/version-inventory.js.map +1 -1
  9. package/dist/api/index.d.ts +19 -2
  10. package/dist/api/index.d.ts.map +1 -1
  11. package/dist/api/index.js +185 -13
  12. package/dist/api/index.js.map +1 -1
  13. package/dist/api/oura-collection-requirements.d.ts +16 -0
  14. package/dist/api/oura-collection-requirements.d.ts.map +1 -0
  15. package/dist/api/oura-collection-requirements.js +70 -0
  16. package/dist/api/oura-collection-requirements.js.map +1 -0
  17. package/dist/api/scope-upload-batches.d.ts +18 -0
  18. package/dist/api/scope-upload-batches.d.ts.map +1 -0
  19. package/dist/api/scope-upload-batches.js +71 -0
  20. package/dist/api/scope-upload-batches.js.map +1 -0
  21. package/dist/api/scope-uploads.d.ts +112 -0
  22. package/dist/api/scope-uploads.d.ts.map +1 -0
  23. package/dist/api/scope-uploads.js +369 -0
  24. package/dist/api/scope-uploads.js.map +1 -0
  25. package/dist/client.d.ts +70 -0
  26. package/dist/client.d.ts.map +1 -1
  27. package/dist/client.js +1 -0
  28. package/dist/client.js.map +1 -1
  29. package/dist/contracts/data.d.ts +8 -0
  30. package/dist/contracts/data.d.ts.map +1 -1
  31. package/dist/contracts/data.js +31 -1
  32. package/dist/contracts/data.js.map +1 -1
  33. package/dist/contracts/grants.d.ts.map +1 -1
  34. package/dist/contracts/grants.js +3 -0
  35. package/dist/contracts/grants.js.map +1 -1
  36. package/dist/contracts/index.d.ts +3 -1
  37. package/dist/contracts/index.d.ts.map +1 -1
  38. package/dist/contracts/index.js +3 -1
  39. package/dist/contracts/index.js.map +1 -1
  40. package/dist/contracts/oura-collection-requirements.d.ts +17 -0
  41. package/dist/contracts/oura-collection-requirements.d.ts.map +1 -0
  42. package/dist/contracts/oura-collection-requirements.js +49 -0
  43. package/dist/contracts/oura-collection-requirements.js.map +1 -0
  44. package/dist/legacy-projection/bindings.d.ts +1 -7
  45. package/dist/legacy-projection/bindings.d.ts.map +1 -1
  46. package/dist/legacy-projection/bindings.js +162 -28
  47. package/dist/legacy-projection/bindings.js.map +1 -1
  48. package/dist/legacy-projection/index.d.ts +6 -5
  49. package/dist/legacy-projection/index.d.ts.map +1 -1
  50. package/dist/legacy-projection/index.js +9 -21
  51. package/dist/legacy-projection/index.js.map +1 -1
  52. package/dist/legacy-projection/oura-browser-bindings.d.ts +2 -0
  53. package/dist/legacy-projection/oura-browser-bindings.d.ts.map +1 -1
  54. package/dist/legacy-projection/oura-browser-bindings.js +2 -0
  55. package/dist/legacy-projection/oura-browser-bindings.js.map +1 -1
  56. package/dist/legacy-projection/strava-browser-bindings.d.ts +3 -0
  57. package/dist/legacy-projection/strava-browser-bindings.d.ts.map +1 -0
  58. package/dist/legacy-projection/strava-browser-bindings.js +32 -0
  59. package/dist/legacy-projection/strava-browser-bindings.js.map +1 -0
  60. package/dist/legacy-projection/types.d.ts +44 -12
  61. package/dist/legacy-projection/types.d.ts.map +1 -1
  62. package/dist/mcp/connection-api.d.ts +11 -1
  63. package/dist/mcp/connection-api.d.ts.map +1 -1
  64. package/dist/mcp/connection-api.js +94 -9
  65. package/dist/mcp/connection-api.js.map +1 -1
  66. package/dist/mcp/index.d.ts +1 -0
  67. package/dist/mcp/index.d.ts.map +1 -1
  68. package/dist/mcp/index.js +1 -0
  69. package/dist/mcp/index.js.map +1 -1
  70. package/dist/mcp/server.d.ts +9 -0
  71. package/dist/mcp/server.d.ts.map +1 -1
  72. package/dist/mcp/server.js +19 -6
  73. package/dist/mcp/server.js.map +1 -1
  74. package/dist/mcp/store.d.ts +10 -1
  75. package/dist/mcp/store.d.ts.map +1 -1
  76. package/dist/mcp/store.js +51 -0
  77. package/dist/mcp/store.js.map +1 -1
  78. package/dist/mcp/tools.d.ts +52 -2
  79. package/dist/mcp/tools.d.ts.map +1 -1
  80. package/dist/mcp/tools.js +395 -11
  81. package/dist/mcp/tools.js.map +1 -1
  82. package/dist/mcp/types.d.ts +36 -2
  83. package/dist/mcp/types.d.ts.map +1 -1
  84. package/dist/mcp/types.js +12 -0
  85. package/dist/mcp/types.js.map +1 -1
  86. package/dist/mcp/write-client.d.ts +81 -0
  87. package/dist/mcp/write-client.d.ts.map +1 -0
  88. package/dist/mcp/write-client.js +140 -0
  89. package/dist/mcp/write-client.js.map +1 -0
  90. package/dist/oura/history-policy.d.ts +12 -0
  91. package/dist/oura/history-policy.d.ts.map +1 -0
  92. package/dist/oura/history-policy.js +54 -0
  93. package/dist/oura/history-policy.js.map +1 -0
  94. package/dist/oura/index.d.ts +51 -0
  95. package/dist/oura/index.d.ts.map +1 -0
  96. package/dist/oura/index.js +315 -0
  97. package/dist/oura/index.js.map +1 -0
  98. package/dist/pdpp/approval.d.ts +1 -1
  99. package/dist/pdpp/approval.d.ts.map +1 -1
  100. package/dist/pdpp/approval.js +29 -10
  101. package/dist/pdpp/approval.js.map +1 -1
  102. package/dist/pdpp/declaration-limits.d.ts +7 -0
  103. package/dist/pdpp/declaration-limits.d.ts.map +1 -0
  104. package/dist/pdpp/declaration-limits.js +7 -0
  105. package/dist/pdpp/declaration-limits.js.map +1 -0
  106. package/dist/pdpp/declaration.d.ts +2 -1
  107. package/dist/pdpp/declaration.d.ts.map +1 -1
  108. package/dist/pdpp/declaration.js +2 -1
  109. package/dist/pdpp/declaration.js.map +1 -1
  110. package/dist/pdpp/index.d.ts +3 -2
  111. package/dist/pdpp/index.d.ts.map +1 -1
  112. package/dist/pdpp/index.js +3 -2
  113. package/dist/pdpp/index.js.map +1 -1
  114. package/dist/pdpp/issuance.d.ts.map +1 -1
  115. package/dist/pdpp/issuance.js +6 -2
  116. package/dist/pdpp/issuance.js.map +1 -1
  117. package/dist/pdpp/resolve.d.ts +12 -1
  118. package/dist/pdpp/resolve.d.ts.map +1 -1
  119. package/dist/pdpp/resolve.js +156 -58
  120. package/dist/pdpp/resolve.js.map +1 -1
  121. package/dist/pdpp/selection.d.ts +30 -1
  122. package/dist/pdpp/selection.d.ts.map +1 -1
  123. package/dist/pdpp/selection.js +77 -26
  124. package/dist/pdpp/selection.js.map +1 -1
  125. package/dist/pdpp/time.d.ts +39 -0
  126. package/dist/pdpp/time.d.ts.map +1 -0
  127. package/dist/pdpp/time.js +173 -0
  128. package/dist/pdpp/time.js.map +1 -0
  129. package/dist/pdpp/tokens.d.ts.map +1 -1
  130. package/dist/pdpp/tokens.js +4 -2
  131. package/dist/pdpp/tokens.js.map +1 -1
  132. package/dist/pdpp/types.d.ts +18 -2
  133. package/dist/pdpp/types.d.ts.map +1 -1
  134. package/dist/pdpp/types.js +7 -0
  135. package/dist/pdpp/types.js.map +1 -1
  136. package/dist/policy/reserved-scopes.d.ts +7 -0
  137. package/dist/policy/reserved-scopes.d.ts.map +1 -1
  138. package/dist/policy/reserved-scopes.js +12 -1
  139. package/dist/policy/reserved-scopes.js.map +1 -1
  140. package/dist/ports/index.d.ts +89 -1
  141. package/dist/ports/index.d.ts.map +1 -1
  142. package/dist/ports/index.js.map +1 -1
  143. package/dist/ports/pdpp-auth.d.ts +17 -27
  144. package/dist/ports/pdpp-auth.d.ts.map +1 -1
  145. package/dist/ports/pdpp-auth.js +14 -28
  146. package/dist/ports/pdpp-auth.js.map +1 -1
  147. package/dist/publication/publish.d.ts +96 -0
  148. package/dist/publication/publish.d.ts.map +1 -0
  149. package/dist/publication/publish.js +261 -0
  150. package/dist/publication/publish.js.map +1 -0
  151. package/dist/replication/completion.d.ts +20 -0
  152. package/dist/replication/completion.d.ts.map +1 -0
  153. package/dist/replication/completion.js +73 -0
  154. package/dist/replication/completion.js.map +1 -0
  155. package/dist/replication/coordinator-state.d.ts +29 -0
  156. package/dist/replication/coordinator-state.d.ts.map +1 -0
  157. package/dist/replication/coordinator-state.js +88 -0
  158. package/dist/replication/coordinator-state.js.map +1 -0
  159. package/dist/replication/coordinator-state.test-utils.d.ts +32 -0
  160. package/dist/replication/coordinator-state.test-utils.d.ts.map +1 -0
  161. package/dist/replication/coordinator-state.test-utils.js +113 -0
  162. package/dist/replication/coordinator-state.test-utils.js.map +1 -0
  163. package/dist/replication/coordinator.d.ts +264 -0
  164. package/dist/replication/coordinator.d.ts.map +1 -0
  165. package/dist/replication/coordinator.js +499 -0
  166. package/dist/replication/coordinator.js.map +1 -0
  167. package/dist/replication/copies.d.ts +126 -0
  168. package/dist/replication/copies.d.ts.map +1 -0
  169. package/dist/replication/copies.js +437 -0
  170. package/dist/replication/copies.js.map +1 -0
  171. package/dist/replication/copy-promotion.d.ts +132 -0
  172. package/dist/replication/copy-promotion.d.ts.map +1 -0
  173. package/dist/replication/copy-promotion.js +126 -0
  174. package/dist/replication/copy-promotion.js.map +1 -0
  175. package/dist/replication/door.d.ts +33 -0
  176. package/dist/replication/door.d.ts.map +1 -0
  177. package/dist/replication/door.js +10 -0
  178. package/dist/replication/door.js.map +1 -0
  179. package/dist/replication/dpv2.d.ts +141 -0
  180. package/dist/replication/dpv2.d.ts.map +1 -0
  181. package/dist/replication/dpv2.js +320 -0
  182. package/dist/replication/dpv2.js.map +1 -0
  183. package/dist/replication/effects.d.ts +68 -0
  184. package/dist/replication/effects.d.ts.map +1 -0
  185. package/dist/replication/effects.js +89 -0
  186. package/dist/replication/effects.js.map +1 -0
  187. package/dist/replication/engine.d.ts +378 -0
  188. package/dist/replication/engine.d.ts.map +1 -0
  189. package/dist/replication/engine.js +3197 -0
  190. package/dist/replication/engine.js.map +1 -0
  191. package/dist/replication/envelope.d.ts +481 -0
  192. package/dist/replication/envelope.d.ts.map +1 -0
  193. package/dist/replication/envelope.js +192 -0
  194. package/dist/replication/envelope.js.map +1 -0
  195. package/dist/replication/evidence.d.ts +118 -0
  196. package/dist/replication/evidence.d.ts.map +1 -0
  197. package/dist/replication/evidence.js +198 -0
  198. package/dist/replication/evidence.js.map +1 -0
  199. package/dist/replication/finality.d.ts +16 -0
  200. package/dist/replication/finality.d.ts.map +1 -0
  201. package/dist/replication/finality.js +11 -0
  202. package/dist/replication/finality.js.map +1 -0
  203. package/dist/replication/fixtures.d.ts +16 -0
  204. package/dist/replication/fixtures.d.ts.map +1 -0
  205. package/dist/replication/fixtures.js +47 -0
  206. package/dist/replication/fixtures.js.map +1 -0
  207. package/dist/replication/host-config.d.ts +52 -0
  208. package/dist/replication/host-config.d.ts.map +1 -0
  209. package/dist/replication/host-config.js +111 -0
  210. package/dist/replication/host-config.js.map +1 -0
  211. package/dist/replication/host-driver.d.ts +95 -0
  212. package/dist/replication/host-driver.d.ts.map +1 -0
  213. package/dist/replication/host-driver.js +202 -0
  214. package/dist/replication/host-driver.js.map +1 -0
  215. package/dist/replication/host-ports.d.ts +48 -0
  216. package/dist/replication/host-ports.d.ts.map +1 -0
  217. package/dist/replication/host-ports.js +69 -0
  218. package/dist/replication/host-ports.js.map +1 -0
  219. package/dist/replication/identity.d.ts +13 -0
  220. package/dist/replication/identity.d.ts.map +1 -0
  221. package/dist/replication/identity.js +22 -0
  222. package/dist/replication/identity.js.map +1 -0
  223. package/dist/replication/limits.d.ts +124 -0
  224. package/dist/replication/limits.d.ts.map +1 -0
  225. package/dist/replication/limits.js +182 -0
  226. package/dist/replication/limits.js.map +1 -0
  227. package/dist/replication/merge-plan.d.ts +92 -0
  228. package/dist/replication/merge-plan.d.ts.map +1 -0
  229. package/dist/replication/merge-plan.js +229 -0
  230. package/dist/replication/merge-plan.js.map +1 -0
  231. package/dist/replication/namespace.d.ts +4 -0
  232. package/dist/replication/namespace.d.ts.map +1 -0
  233. package/dist/replication/namespace.js +7 -0
  234. package/dist/replication/namespace.js.map +1 -0
  235. package/dist/replication/outcome.d.ts +178 -0
  236. package/dist/replication/outcome.d.ts.map +1 -0
  237. package/dist/replication/outcome.js +83 -0
  238. package/dist/replication/outcome.js.map +1 -0
  239. package/dist/replication/payload.d.ts +39 -0
  240. package/dist/replication/payload.d.ts.map +1 -0
  241. package/dist/replication/payload.js +137 -0
  242. package/dist/replication/payload.js.map +1 -0
  243. package/dist/replication/preparation.d.ts +42 -0
  244. package/dist/replication/preparation.d.ts.map +1 -0
  245. package/dist/replication/preparation.js +118 -0
  246. package/dist/replication/preparation.js.map +1 -0
  247. package/dist/replication/rebaseline.d.ts +33 -0
  248. package/dist/replication/rebaseline.d.ts.map +1 -0
  249. package/dist/replication/rebaseline.js +40 -0
  250. package/dist/replication/rebaseline.js.map +1 -0
  251. package/dist/replication/rebinding.d.ts +43 -0
  252. package/dist/replication/rebinding.d.ts.map +1 -0
  253. package/dist/replication/rebinding.js +52 -0
  254. package/dist/replication/rebinding.js.map +1 -0
  255. package/dist/replication/receive.d.ts +57 -0
  256. package/dist/replication/receive.d.ts.map +1 -0
  257. package/dist/replication/receive.js +114 -0
  258. package/dist/replication/receive.js.map +1 -0
  259. package/dist/replication/record-reducer.d.ts +16 -0
  260. package/dist/replication/record-reducer.d.ts.map +1 -0
  261. package/dist/replication/record-reducer.js +52 -0
  262. package/dist/replication/record-reducer.js.map +1 -0
  263. package/dist/replication/revision.d.ts +24 -0
  264. package/dist/replication/revision.d.ts.map +1 -0
  265. package/dist/replication/revision.js +35 -0
  266. package/dist/replication/revision.js.map +1 -0
  267. package/dist/replication/roster.d.ts +53 -0
  268. package/dist/replication/roster.d.ts.map +1 -0
  269. package/dist/replication/roster.js +115 -0
  270. package/dist/replication/roster.js.map +1 -0
  271. package/dist/replication/schedule.d.ts +73 -0
  272. package/dist/replication/schedule.d.ts.map +1 -0
  273. package/dist/replication/schedule.js +182 -0
  274. package/dist/replication/schedule.js.map +1 -0
  275. package/dist/replication/stream.d.ts +73 -0
  276. package/dist/replication/stream.d.ts.map +1 -0
  277. package/dist/replication/stream.js +542 -0
  278. package/dist/replication/stream.js.map +1 -0
  279. package/dist/replication/transport.d.ts +236 -0
  280. package/dist/replication/transport.d.ts.map +1 -0
  281. package/dist/replication/transport.js +440 -0
  282. package/dist/replication/transport.js.map +1 -0
  283. package/dist/replication/visibility-engine.d.ts +337 -0
  284. package/dist/replication/visibility-engine.d.ts.map +1 -0
  285. package/dist/replication/visibility-engine.js +602 -0
  286. package/dist/replication/visibility-engine.js.map +1 -0
  287. package/dist/replication/visibility-policy.d.ts +26 -0
  288. package/dist/replication/visibility-policy.d.ts.map +1 -0
  289. package/dist/replication/visibility-policy.js +33 -0
  290. package/dist/replication/visibility-policy.js.map +1 -0
  291. package/dist/replication/writer-identity-store.d.ts +100 -0
  292. package/dist/replication/writer-identity-store.d.ts.map +1 -0
  293. package/dist/replication/writer-identity-store.js +218 -0
  294. package/dist/replication/writer-identity-store.js.map +1 -0
  295. package/dist/replication/writer-identity.d.ts +252 -0
  296. package/dist/replication/writer-identity.d.ts.map +1 -0
  297. package/dist/replication/writer-identity.js +281 -0
  298. package/dist/replication/writer-identity.js.map +1 -0
  299. package/dist/replication/writer-identity.test-utils.d.ts +24 -0
  300. package/dist/replication/writer-identity.test-utils.d.ts.map +1 -0
  301. package/dist/replication/writer-identity.test-utils.js +86 -0
  302. package/dist/replication/writer-identity.test-utils.js.map +1 -0
  303. package/dist/schemas/server-config.d.ts +13 -0
  304. package/dist/schemas/server-config.d.ts.map +1 -1
  305. package/dist/schemas/server-config.js +24 -0
  306. package/dist/schemas/server-config.js.map +1 -1
  307. package/dist/storage/adapters/index.d.ts +3 -1
  308. package/dist/storage/adapters/index.d.ts.map +1 -1
  309. package/dist/storage/adapters/index.js +2 -0
  310. package/dist/storage/adapters/index.js.map +1 -1
  311. package/dist/storage/adapters/interface.d.ts +18 -1
  312. package/dist/storage/adapters/interface.d.ts.map +1 -1
  313. package/dist/storage/adapters/interface.js +13 -1
  314. package/dist/storage/adapters/interface.js.map +1 -1
  315. package/dist/storage/adapters/sdk.d.ts +2 -1
  316. package/dist/storage/adapters/sdk.d.ts.map +1 -1
  317. package/dist/storage/adapters/sdk.js +21 -3
  318. package/dist/storage/adapters/sdk.js.map +1 -1
  319. package/dist/storage/adapters/vana-audience.d.ts +17 -5
  320. package/dist/storage/adapters/vana-audience.d.ts.map +1 -1
  321. package/dist/storage/adapters/vana-audience.js +24 -9
  322. package/dist/storage/adapters/vana-audience.js.map +1 -1
  323. package/dist/storage/adapters/vana.d.ts +2 -2
  324. package/dist/storage/adapters/vana.d.ts.map +1 -1
  325. package/dist/storage/adapters/vana.js +30 -22
  326. package/dist/storage/adapters/vana.js.map +1 -1
  327. package/dist/storage/canonical-legacy-projection.d.ts +1 -1
  328. package/dist/storage/canonical-legacy-projection.d.ts.map +1 -1
  329. package/dist/storage/canonical-legacy-projection.js +13 -15
  330. package/dist/storage/canonical-legacy-projection.js.map +1 -1
  331. package/dist/storage/legacy-projection.d.ts.map +1 -1
  332. package/dist/storage/legacy-projection.js +17 -9
  333. package/dist/storage/legacy-projection.js.map +1 -1
  334. package/dist/storage/legacy-scope-coverage-exceptions.d.ts +5 -0
  335. package/dist/storage/legacy-scope-coverage-exceptions.d.ts.map +1 -1
  336. package/dist/storage/legacy-scope-coverage-exceptions.js +4 -0
  337. package/dist/storage/legacy-scope-coverage-exceptions.js.map +1 -1
  338. package/dist/storage/legacy-scope-coverage.d.ts.map +1 -1
  339. package/dist/storage/legacy-scope-coverage.js +14 -1
  340. package/dist/storage/legacy-scope-coverage.js.map +1 -1
  341. package/dist/storage/legacy-scope-entity-keys.d.ts +14 -1
  342. package/dist/storage/legacy-scope-entity-keys.d.ts.map +1 -1
  343. package/dist/storage/legacy-scope-entity-keys.js +18 -1
  344. package/dist/storage/legacy-scope-entity-keys.js.map +1 -1
  345. package/dist/storage/legacy-scope-view.d.ts +57 -5
  346. package/dist/storage/legacy-scope-view.d.ts.map +1 -1
  347. package/dist/storage/legacy-scope-view.js +644 -318
  348. package/dist/storage/legacy-scope-view.js.map +1 -1
  349. package/dist/storage/pdpp-records/cursor.d.ts +47 -2
  350. package/dist/storage/pdpp-records/cursor.d.ts.map +1 -1
  351. package/dist/storage/pdpp-records/cursor.js +7 -0
  352. package/dist/storage/pdpp-records/cursor.js.map +1 -1
  353. package/dist/storage/pdpp-records/enforcement.d.ts +3 -16
  354. package/dist/storage/pdpp-records/enforcement.d.ts.map +1 -1
  355. package/dist/storage/pdpp-records/enforcement.js +40 -13
  356. package/dist/storage/pdpp-records/enforcement.js.map +1 -1
  357. package/dist/storage/pdpp-records/index.d.ts +2 -0
  358. package/dist/storage/pdpp-records/index.d.ts.map +1 -1
  359. package/dist/storage/pdpp-records/index.js +1 -0
  360. package/dist/storage/pdpp-records/index.js.map +1 -1
  361. package/dist/storage/pdpp-records/interface.d.ts +8 -1
  362. package/dist/storage/pdpp-records/interface.d.ts.map +1 -1
  363. package/dist/storage/pdpp-records/list-page.d.ts +35 -0
  364. package/dist/storage/pdpp-records/list-page.d.ts.map +1 -0
  365. package/dist/storage/pdpp-records/list-page.js +106 -0
  366. package/dist/storage/pdpp-records/list-page.js.map +1 -0
  367. package/dist/storage/pdpp-records/memory-store.d.ts.map +1 -1
  368. package/dist/storage/pdpp-records/memory-store.js +95 -99
  369. package/dist/storage/pdpp-records/memory-store.js.map +1 -1
  370. package/dist/storage/pdpp-records/portable.d.ts +3 -0
  371. package/dist/storage/pdpp-records/portable.d.ts.map +1 -1
  372. package/dist/storage/pdpp-records/portable.js +3 -0
  373. package/dist/storage/pdpp-records/portable.js.map +1 -1
  374. package/dist/storage/pdpp-records/replication-journal.d.ts +20 -0
  375. package/dist/storage/pdpp-records/replication-journal.d.ts.map +1 -0
  376. package/dist/storage/pdpp-records/replication-journal.js +2 -0
  377. package/dist/storage/pdpp-records/replication-journal.js.map +1 -0
  378. package/dist/storage/pdpp-records/stream-declaration.d.ts +0 -2
  379. package/dist/storage/pdpp-records/stream-declaration.d.ts.map +1 -1
  380. package/dist/storage/pdpp-records/stream-declaration.js +0 -9
  381. package/dist/storage/pdpp-records/stream-declaration.js.map +1 -1
  382. package/dist/storage/pdpp-records/sync-selection.d.ts +4 -0
  383. package/dist/storage/pdpp-records/sync-selection.d.ts.map +1 -0
  384. package/dist/storage/pdpp-records/sync-selection.js +37 -0
  385. package/dist/storage/pdpp-records/sync-selection.js.map +1 -0
  386. package/dist/storage/pdpp-records/types.d.ts +64 -0
  387. package/dist/storage/pdpp-records/types.d.ts.map +1 -1
  388. package/dist/storage/pdpp-records/types.js.map +1 -1
  389. package/dist/sync/data-point-feed.d.ts.map +1 -1
  390. package/dist/sync/data-point-feed.js +4 -1
  391. package/dist/sync/data-point-feed.js.map +1 -1
  392. package/dist/sync/delete-data-port.d.ts +15 -0
  393. package/dist/sync/delete-data-port.d.ts.map +1 -1
  394. package/dist/sync/delete-data-port.js +19 -7
  395. package/dist/sync/delete-data-port.js.map +1 -1
  396. package/dist/sync/index.d.ts +2 -1
  397. package/dist/sync/index.d.ts.map +1 -1
  398. package/dist/sync/index.js +2 -1
  399. package/dist/sync/index.js.map +1 -1
  400. package/dist/sync/pending-blob-deletions.d.ts +18 -2
  401. package/dist/sync/pending-blob-deletions.d.ts.map +1 -1
  402. package/dist/sync/pending-blob-deletions.js +69 -23
  403. package/dist/sync/pending-blob-deletions.js.map +1 -1
  404. package/dist/sync/scope-deletions.d.ts +2 -0
  405. package/dist/sync/scope-deletions.d.ts.map +1 -1
  406. package/dist/sync/scope-deletions.js +60 -19
  407. package/dist/sync/scope-deletions.js.map +1 -1
  408. package/dist/sync/workers/delete.d.ts.map +1 -1
  409. package/dist/sync/workers/delete.js +316 -142
  410. package/dist/sync/workers/delete.js.map +1 -1
  411. package/dist/sync/workers/download.d.ts.map +1 -1
  412. package/dist/sync/workers/download.js +53 -5
  413. package/dist/sync/workers/download.js.map +1 -1
  414. package/dist/sync/workers/upload.d.ts +24 -5
  415. package/dist/sync/workers/upload.d.ts.map +1 -1
  416. package/dist/sync/workers/upload.js +160 -275
  417. package/dist/sync/workers/upload.js.map +1 -1
  418. package/dist/test-utils/memory-storage.d.ts.map +1 -1
  419. package/dist/test-utils/memory-storage.js +17 -2
  420. package/dist/test-utils/memory-storage.js.map +1 -1
  421. package/package.json +24 -2
@@ -825,6 +825,15 @@ const instagramPosts = {
825
825
  post_likes: ["post_id", "user_id", "username"],
826
826
  },
827
827
  primaryKey: { posts: ["id"], post_likes: ["post_id", "liker_ordinal"] },
828
+ // Each post is built from its own post_likes.
829
+ window: {
830
+ parentStream: "posts",
831
+ childStream: "post_likes",
832
+ childKey: "post_id",
833
+ arrayKey: "posts",
834
+ sumKeys: [],
835
+ parentOrder: primaryKeyOrder("id"),
836
+ },
828
837
  lossy: [
829
838
  "nullable media_url, caption, and like_count use the retained collector's empty-string and zero sentinels; every source post is retained",
830
839
  "media_url is only available for images and the first image in a carousel; video posts and later carousel images are absent from the artifact's parser output",
@@ -1170,6 +1179,7 @@ const githubHistory = {
1170
1179
  ],
1171
1180
  },
1172
1181
  primaryKey: { user: ["id"], issues: ["id"], pull_requests: ["id"] },
1182
+ memoryBound: "Issues and pull requests are two independent lists, each one array, so there is no parent and child to split.",
1173
1183
  lossy: [
1174
1184
  "legacy IDs used gh-issue-/gh-pr- prefixes; projection uses the signed PDPP record ID directly",
1175
1185
  "body is truncated to the legacy connector's 500-character limit",
@@ -1322,6 +1332,7 @@ const githubProfile = {
1322
1332
  pinned_repositories: ["id"],
1323
1333
  organizations: ["id"],
1324
1334
  },
1335
+ memoryBound: "The output is one profile object; user_stats gains a row per day and is read in full to pick the latest, and the window has no parent and child to split.",
1325
1336
  lossy: [
1326
1337
  "profileUrl is derived from the authenticated user's login using GitHub's canonical profile URL pattern",
1327
1338
  "organization label and URL are omitted because the organizations stream carries neither field; description is not substituted for label",
@@ -1618,6 +1629,16 @@ const chatgptConversations = {
1618
1629
  ],
1619
1630
  },
1620
1631
  primaryKey: { conversations: ["id"], messages: ["id"] },
1632
+ // Each conversation is built from its own messages; the list is ordered by
1633
+ // the conversation's own update_time and id.
1634
+ window: {
1635
+ parentStream: "conversations",
1636
+ childStream: "messages",
1637
+ childKey: "conversation_id",
1638
+ arrayKey: "conversations",
1639
+ sumKeys: ["total"],
1640
+ parentOrder: newestUpdateFirst,
1641
+ },
1621
1642
  lossy: [
1622
1643
  "Conversation create/update times pass through as null when the source lacks them, matching legacy's listed?.create_time ?? fetched.create_time ?? null fallback.",
1623
1644
  "fetched_at is the projection time (options.now, else the wall clock), matching legacy's per-run toConversationRecord timestamp.",
@@ -1851,6 +1872,15 @@ function newestUpdateFirst(a, b) {
1851
1872
  return byTime;
1852
1873
  return String(a.id) < String(b.id) ? -1 : String(a.id) > String(b.id) ? 1 : 0;
1853
1874
  }
1875
+ /**
1876
+ * The output order of a binding that lists its parents in primary-key order,
1877
+ * which is what `orderByPrimaryKey` gives it: the same key `inPrimaryKeyOrder`
1878
+ * sorts by.
1879
+ */
1880
+ function primaryKeyOrder(field) {
1881
+ const key = (row) => JSON.stringify([row[field] ?? null]);
1882
+ return (a, b) => (key(a) < key(b) ? -1 : key(a) > key(b) ? 1 : 0);
1883
+ }
1854
1884
  // This is the merged 0.1.3 source declaration. Admission remains a separate
1855
1885
  // decision; this local manifest hash is not the signed OCI artifact digest.
1856
1886
  export const ANTHROPIC_CONNECTOR_ID = "https://registry.pdpp.dev/connectors/anthropic";
@@ -1904,22 +1934,58 @@ function claudeMetadata(scope, records) {
1904
1934
  organizationId: profile.organization_id,
1905
1935
  };
1906
1936
  }
1907
- function claudeConversationsBinding() {
1937
+ function claudeLiveMetadata(scope, records) {
1938
+ const plans = byStream(records, "account_plan");
1939
+ const plan = plans[0];
1940
+ if (plans.length !== 1 ||
1941
+ !plan ||
1942
+ typeof plan.id !== "string" ||
1943
+ !plan.id.trim() ||
1944
+ typeof plan.account_id !== "string" ||
1945
+ !plan.account_id.trim() ||
1946
+ !(typeof plan.plan_display_name === "string" ||
1947
+ plan.plan_display_name === null)) {
1948
+ return {
1949
+ ok: false,
1950
+ error: {
1951
+ kind: "incomplete_scope",
1952
+ scope,
1953
+ reason: "A single verified organization account_plan is required",
1954
+ },
1955
+ };
1956
+ }
1957
+ return {
1958
+ ok: true,
1959
+ organizationId: plan.account_id,
1960
+ profile: { name: null, plan: plan.plan_display_name },
1961
+ };
1962
+ }
1963
+ function claudeConversationsBinding(live = false) {
1908
1964
  const scope = "claude.conversations";
1909
1965
  return {
1910
1966
  scope,
1911
- pdppSource: ANTHROPIC_CONNECTOR_ID,
1912
- pdppStreams: ["account_profile", "conversations", "messages"],
1967
+ pdppSource: live
1968
+ ? "https://registry.pdpp.dev/connectors/anthropic-live"
1969
+ : ANTHROPIC_CONNECTOR_ID,
1970
+ pdppStreams: [
1971
+ live ? "account_plan" : "account_profile",
1972
+ "conversations",
1973
+ "messages",
1974
+ ],
1913
1975
  legacySchemaPath: "claude.conversations.json",
1914
1976
  fieldsRead: {
1915
- account_profile: [
1916
- "id",
1917
- "organization_id",
1918
- "full_name",
1919
- "plan",
1920
- "name_source",
1921
- "metadata_status",
1922
- ],
1977
+ ...(live
1978
+ ? { account_plan: ["id", "account_id", "plan_display_name"] }
1979
+ : {
1980
+ account_profile: [
1981
+ "id",
1982
+ "organization_id",
1983
+ "full_name",
1984
+ "plan",
1985
+ "name_source",
1986
+ "metadata_status",
1987
+ ],
1988
+ }),
1923
1989
  conversations: [
1924
1990
  "id",
1925
1991
  "title",
@@ -1941,23 +2007,47 @@ function claudeConversationsBinding() {
1941
2007
  ],
1942
2008
  },
1943
2009
  primaryKey: {
1944
- account_profile: ["id"],
2010
+ [live ? "account_plan" : "account_profile"]: ["id"],
1945
2011
  conversations: ["id"],
1946
2012
  messages: ["id"],
1947
2013
  },
2014
+ // Each conversation is built from its own messages. The list is in
2015
+ // primary-key order, the order `inPrimaryKeyOrder` gives it.
2016
+ window: {
2017
+ parentStream: "conversations",
2018
+ childStream: "messages",
2019
+ childKey: "conversation_id",
2020
+ arrayKey: "conversations",
2021
+ sumKeys: ["total", "messageTotal"],
2022
+ parentOrder: primaryKeyOrder("id"),
2023
+ },
1948
2024
  lossy: [
1949
2025
  "href is reconstructed from the retained Claude route convention; rawContent and unavailable fetchError are omitted.",
1950
2026
  ],
1951
- provenance: anthropicProjectionProvenance,
2027
+ // The live declaration's conversation blob_ref is the raw envelope; its
2028
+ // typed record and messages are complete without it.
2029
+ ...(live ? { ancillaryBlobStreams: ["conversations"] } : {}),
2030
+ provenance: live
2031
+ ? [
2032
+ {
2033
+ kind: "oci",
2034
+ ref: "ghcr.io/pdp-connect/connector/anthropic-live:0.3.6",
2035
+ digest: "sha256:817716e8c732c9c991be507049147a0cc887b154363428bc4509cc91ed5d17a6",
2036
+ path: "declarations/anthropic-live-0.3.6.collection-profile.json",
2037
+ },
2038
+ ]
2039
+ : anthropicProjectionProvenance,
1952
2040
  project(records, options) {
1953
2041
  const guard = requireStreams(scope, options, [
1954
- "account_profile",
2042
+ live ? "account_plan" : "account_profile",
1955
2043
  "conversations",
1956
2044
  "messages",
1957
2045
  ]);
1958
2046
  if (guard)
1959
2047
  return guard;
1960
- const metadata = claudeMetadata(scope, records);
2048
+ const metadata = live
2049
+ ? claudeLiveMetadata(scope, records)
2050
+ : claudeMetadata(scope, records);
1961
2051
  if (!metadata.ok)
1962
2052
  return metadata;
1963
2053
  const conversations = byStream(records, "conversations");
@@ -1987,6 +2077,7 @@ function claudeConversationsBinding() {
1987
2077
  },
1988
2078
  };
1989
2079
  const projected = [];
2080
+ let unknownMessageCounts = 0;
1990
2081
  for (const conversation of conversations) {
1991
2082
  if (typeof conversation.id !== "string" ||
1992
2083
  !conversation.id.trim() ||
@@ -2027,10 +2118,16 @@ function claudeConversationsBinding() {
2027
2118
  attachments: message.attachments ?? [],
2028
2119
  };
2029
2120
  });
2030
- const messageCount = typeof conversation.message_count === "number"
2031
- ? conversation.message_count
2032
- : messages.length;
2033
- if (messageCount !== messages.length)
2121
+ // Only the source's own count proves the fetched messages are the
2122
+ // whole conversation. Without one (anthropic-live writes null when
2123
+ // the run did not read the detail) the conversation is reported
2124
+ // partial, never certified complete. messageCount stays the number
2125
+ // of messages collected, as the legacy schema defines it.
2126
+ const sourceCount = conversation.message_count ?? null;
2127
+ const messageCount = messages.length;
2128
+ if (sourceCount === null)
2129
+ unknownMessageCounts += 1;
2130
+ else if (sourceCount !== messageCount)
2034
2131
  return {
2035
2132
  ok: false,
2036
2133
  error: {
@@ -2051,20 +2148,23 @@ function claudeConversationsBinding() {
2051
2148
  messages,
2052
2149
  });
2053
2150
  }
2151
+ const diagnostics = partialRows(scope, "conversations", "message_count_unknown", unknownMessageCounts);
2054
2152
  return {
2055
2153
  ok: true,
2154
+ ...(diagnostics.length > 0 ? { diagnostics } : {}),
2056
2155
  payload: {
2057
2156
  profile: metadata.profile,
2058
2157
  organizationId: metadata.organizationId,
2059
2158
  conversations: projected,
2060
2159
  total: projected.length,
2061
2160
  messageTotal: projected.reduce((total, conversation) => total + conversation.messageCount, 0),
2062
- source: "official-export",
2161
+ source: live ? "live-session" : "official-export",
2063
2162
  },
2064
2163
  };
2065
2164
  },
2066
2165
  };
2067
2166
  }
2167
+ export const ANTHROPIC_LIVE_BINDINGS = new Map([["claude.conversations", claudeConversationsBinding(true)]]);
2068
2168
  const claudeConversations = claudeConversationsBinding();
2069
2169
  const claudeProjects = {
2070
2170
  scope: "claude.projects",
@@ -2108,6 +2208,15 @@ const claudeProjects = {
2108
2208
  projects: ["id"],
2109
2209
  project_documents: ["id"],
2110
2210
  },
2211
+ // Each project is built from its own project_documents.
2212
+ window: {
2213
+ parentStream: "projects",
2214
+ childStream: "project_documents",
2215
+ childKey: "project_id",
2216
+ arrayKey: "projects",
2217
+ sumKeys: ["total"],
2218
+ parentOrder: primaryKeyOrder("id"),
2219
+ },
2111
2220
  lossy: [
2112
2221
  "detail carries only declared project and raw document fields. Other raw-only keys and documents dropped by source parsing cannot be recovered; href and label follow the legacy connector's route and label rules.",
2113
2222
  ],
@@ -2750,6 +2859,15 @@ const spotifyPlaylists = {
2750
2859
  playlists: ["id"],
2751
2860
  playlist_items: ["id"],
2752
2861
  },
2862
+ // Each playlist is built from its own playlist_items.
2863
+ window: {
2864
+ parentStream: "playlists",
2865
+ childStream: "playlist_items",
2866
+ childKey: "playlist_id",
2867
+ arrayKey: "playlists",
2868
+ sumKeys: ["total"],
2869
+ parentOrder: primaryKeyOrder("id"),
2870
+ },
2753
2871
  lossy: [
2754
2872
  "tracks[].uri: raw playlist item URIs are retained when available; older pinned records fall back to a canonical Spotify track ID, and a null ID uses the retained collector's empty-string sentinel.",
2755
2873
  "tracks_total counts joined fetched tracks, as in the retained collector; catalog track_count is not a fetched-row count.",
@@ -2970,9 +3088,10 @@ const ouraActivity = {
2970
3088
  "contributors",
2971
3089
  ],
2972
3090
  },
3091
+ optionalFieldsRead: { activity: ["timestamp"] },
2973
3092
  primaryKey: { activity: ["id"] },
2974
3093
  lossy: [
2975
- "timestamp: no source field; omitted (legacy schema makes it optional)",
3094
+ "timestamp: preserved when supplied; absent or null source timestamps are omitted",
2976
3095
  "target_calories: has no legacy field and is not projected",
2977
3096
  "Legacy integer fields: fractional source numbers are rounded with Math.round at projection time",
2978
3097
  ],
@@ -2996,6 +3115,9 @@ const ouraActivity = {
2996
3115
  days: rows.map((r) => ({
2997
3116
  id: r.id,
2998
3117
  day: r.day,
3118
+ ...(typeof r.timestamp === "string"
3119
+ ? { timestamp: r.timestamp }
3120
+ : {}),
2999
3121
  score: ouraInteger(r.score),
3000
3122
  ...ifDefinedOuraInteger(r, "active_calories", "activeCalories"),
3001
3123
  ...ifDefinedOuraInteger(r, "total_calories", "totalCalories"),
@@ -3028,9 +3150,10 @@ const ouraReadiness = {
3028
3150
  "contributors",
3029
3151
  ],
3030
3152
  },
3153
+ optionalFieldsRead: { readiness: ["timestamp"] },
3031
3154
  primaryKey: { readiness: ["id"] },
3032
3155
  lossy: [
3033
- "timestamp: no source field; omitted (legacy schema makes it optional)",
3156
+ "timestamp: preserved when supplied; absent or null source timestamps are omitted",
3034
3157
  "Legacy integer fields: fractional source numbers are rounded with Math.round at projection time",
3035
3158
  ],
3036
3159
  provenance: [
@@ -3053,6 +3176,9 @@ const ouraReadiness = {
3053
3176
  days: rows.map((r) => ({
3054
3177
  id: r.id,
3055
3178
  day: r.day,
3179
+ ...(typeof r.timestamp === "string"
3180
+ ? { timestamp: r.timestamp }
3181
+ : {}),
3056
3182
  score: ouraInteger(r.score),
3057
3183
  ...ifDefined(r, "temperature_deviation", "temperatureDeviation"),
3058
3184
  ...ifDefined(r, "temperature_trend_deviation", "temperatureTrendDeviation"),
@@ -3205,6 +3331,15 @@ const amazonOrders = {
3205
3331
  order_items: ["order_id", "name", "url", "unit_price"],
3206
3332
  },
3207
3333
  primaryKey: { orders: ["id"], order_items: ["id"] },
3334
+ // Each order is built from its own order_items.
3335
+ window: {
3336
+ parentStream: "orders",
3337
+ childStream: "order_items",
3338
+ childKey: "order_id",
3339
+ arrayKey: "orders",
3340
+ sumKeys: ["total"],
3341
+ parentOrder: primaryKeyOrder("id"),
3342
+ },
3208
3343
  lossy: [
3209
3344
  "items[].quantity: no legacy field (legacy schema does not carry quantity at all; PDPP-side quantity is simply not projected)",
3210
3345
  "items[].price (N-S2): legacy's own connector ALWAYS emits the literal constant '' for this field (amazon-playwright.js:222, `price: ''` — not a fallback for a missing value, the connector never scrapes a real price here at all). This projection instead emits PDPP's real `unit_price` when present, so an app reading this field gets a populated value where legacy always gave it an empty string — a value change, not a gap-fill, and the comment at the call site below previously implied the two matched when they do not.",
@@ -3399,6 +3534,7 @@ const hebNutrition = {
3399
3534
  order_items: ["product_id", "name", "product_url"],
3400
3535
  },
3401
3536
  primaryKey: { nutrition: ["id"], orders: ["id"], order_items: ["id"] },
3537
+ memoryBound: "The output is one map keyed by product with whole-scope coverage totals and checks, not one row per parent.",
3402
3538
  lossy: [
3403
3539
  "The legacy map key is the declared H-E-B product_id; no global UPC identity is inferred.",
3404
3540
  "fetched_at is omitted.",
@@ -3592,6 +3728,7 @@ const hebOrders = {
3592
3728
  ],
3593
3729
  },
3594
3730
  primaryKey: { orders: ["id"], order_items: ["id"] },
3731
+ memoryBound: "Rejects the whole scope when every order is dropped, a decision a window of orders cannot make.",
3595
3732
  lossy: [
3596
3733
  "orderUrl and address: the signed profile has no equivalent fields; fulfillment_location is not treated as an address.",
3597
3734
  "status_code, store_name, timeslot_start/end, unfulfilled_count, fulfillment_method, and fetched_at are not represented by the legacy schema.",
@@ -3803,6 +3940,7 @@ const wholefoodsOrders = {
3803
3940
  ],
3804
3941
  },
3805
3942
  primaryKey: { orders: ["id"], order_items: ["id"] },
3943
+ memoryBound: "Rejects the whole scope when every order is dropped, a decision a window of orders cannot make.",
3806
3944
  lossy: [
3807
3945
  "The retained collector emitted only product-linked named lines; a source line without either field is dropped and counted, and its order is delivered without it.",
3808
3946
  "An order with no usable line and an item_count that is not a known zero is left out and counted; an order whose line count differs from item_count, or whose item_count is unknown, is delivered and reported partial. A missing or duplicate order id still fails the scope.",
@@ -3955,6 +4093,7 @@ const wholefoodsNutrition = {
3955
4093
  order_items: ["product_id", "name", "product_url", "image_url"],
3956
4094
  },
3957
4095
  primaryKey: { nutrition: ["product_id"], order_items: ["id"] },
4096
+ memoryBound: "The output is one map keyed by product with whole-scope coverage totals and checks, not one row per parent.",
3958
4097
  lossy: [
3959
4098
  "ingredients and allergens are not collected by the current nutrition stream.",
3960
4099
  "servingsPerContainer is converted from the declared number to the legacy string field.",
@@ -4090,9 +4229,6 @@ const wholefoodsNutrition = {
4090
4229
  };
4091
4230
  },
4092
4231
  };
4093
- // amazon.profile is a documented GAP: no `profile` stream exists on the
4094
- // amazon collection-profile.json at all (verified: exactly 2 streams,
4095
- // orders and order_items) — legacy's `name`/`isPrime` have no PDPP source.
4096
4232
  // iCloud Notes is bound to the signed 0.1.0 collection profile. Desktop
4097
4233
  // admission and ingest projection are separate gates.
4098
4234
  const icloudNoteFolders = {
@@ -4155,6 +4291,7 @@ const icloudNotes = {
4155
4291
  profile: ["id", "user_name"],
4156
4292
  },
4157
4293
  primaryKey: { notes: ["id"], folders: ["id"], profile: ["id"] },
4294
+ memoryBound: "One flat list of notes; folders is a name lookup, so there are no per-parent children to split.",
4158
4295
  lossy: [
4159
4296
  "userName is null when the profile stream has no readable user_name (legacy's fullName default); it is never inferred from an Apple ID or the account id.",
4160
4297
  "folder uses the legacy display-name shape; unresolved folder references fall back to folder_id.",
@@ -4372,7 +4509,4 @@ export const LEGACY_SCOPE_BINDINGS = new Map(Object.entries({
4372
4509
  "strava.activities": stravaActivities,
4373
4510
  "strava.coverage_diagnostics": stravaCoverageDiagnostics,
4374
4511
  }));
4375
- /** Known legacy contracts checked against signed declarations but not
4376
- * projectable without fabricating fields or changing the retained contract. */
4377
- export const LEGACY_SCOPE_GAPS = new Map([]);
4378
4512
  //# sourceMappingURL=bindings.js.map